blob: bc4b4ca7a1b51b157776ca015415342d6b044913 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#ifndef NIXIE_DRIVER_PROCESS_INCLUDED
#define NIXIE_DRIVER_PROCESS_INCLUDED
#include <stdint.h>
#include "FreeRTOS.h"
#include "queue.h"
// Схема драйвера Никси на трех сдвиговых 8-разрядных регистрах.
// Первые два регистра для цифр, третий регистр для выбора лампы
#define MAX_TUBES 6
#define MAX_DIGITS 13//11
// Коды цифр ламп для буфера tube_digit [] Значения 16-разрядные
#define TUBE_DIGIT_0 8192 //0010 0000 0000 0000
#define TUBE_DIGIT_1 128 //0000 0000 1000 0000
#define TUBE_DIGIT_2 64 //0000 0000 0100 0000
#define TUBE_DIGIT_3 32 //0000 0000 0010 0000
#define TUBE_DIGIT_4 16 //0000 0000 0001 0000
#define TUBE_DIGIT_5 8 //0000 0000 0000 1000
#define TUBE_DIGIT_6 4 //0000 0000 0000 0100
#define TUBE_DIGIT_7 2 //0000 0000 0000 0010
#define TUBE_DIGIT_8 32768 //1000 0000 0000 0000
#define TUBE_DIGIT_9 16384 //0100 0000 0000 0000
#define TUBE_DIGIT_DP1 1 //0000 0000 0000 0001 любое отличное от остальных число, т.к. точки на лампах управляются от отдельных GPIO
#define TUBE_DIGIT_DP2 256 //0000 0001 0000 0000 любое отличное от остальных число, т.к. точки на лампах управляются от отдельных GPIO
#define TUBE_DIGIT_EMPTY 0
#define TUBE_EMPTY_VALUE 0 // Было "10". Число, которое нужно записать в массив
// данных на вывод, чтобы получить негорящий
// индикатор
// Коды номера лампы для буфера tube_num [ MAX_TUBES ]
#define TUBE_NUM_6 1
#define TUBE_NUM_5 256
#define TUBE_NUM_4 512
#define TUBE_NUM_3 1024
#define TUBE_NUM_2 2048
#define TUBE_NUM_1 4096
// Структура данных на индикацию для передачи целиком всей структуры через
// очередь ОС
typedef struct {
uint8_t indic_1;
uint8_t indic_2;
uint8_t indic_3;
uint8_t indic_4;
uint8_t indic_5;
uint8_t indic_6;
} DataToIndicate_t;
void NixieDriver_SendValue ( uint8_t *value_arr );
extern QueueHandle_t queue_new_data;
#define send(X) xQueueSend ( queue_new_data, &X, 0 )
#define NixieDriver_SendValue2(X) send(X)
void ProcessNixieDriverFromISR ( void );
#endif //NIXIE_DRIVER_PROCESS_INCLUDED
|