Rev 1356 | Rev 1721 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 1356 | Rev 1427 | ||
|---|---|---|---|
| Line 4... | Line 4... | ||
| 4 | uint8_t Command = 0; |
4 | uint8_t Command = 0; |
| - | 5 | #if act_hd44780_USE_AUTO_BL == 1 |
|
| - | 6 | uint8_t autoMode = CAN_MODULE_ENUM_HD44789_LCD_BACKLIGHT_AUTOLIGHT_ON; |
|
| 5 | 7 | #endif |
|
| 6 | void act_hd44780_Init(void) |
8 | void act_hd44780_Init(void) |
| 7 | { |
9 | { |
| 8 | ///FIXME: What is this, this needs to be more clear by far.... |
10 | ///FIXME: What is this, this needs to be more clear by far.... |
| 9 | 11 | ||
| 10 | // Contrast (brightness on an oled display) |
12 | // Contrast (brightness on an oled display) |
| Line 26... | Line 28... | ||
| 26 | lcd_puts("HomeAutomation\n"); |
28 | lcd_puts("HomeAutomation\n"); |
| 27 | lcd_puts("HD44780-module\n"); |
29 | lcd_puts("HD44780-module\n"); |
| 28 | } |
30 | } |
| 29 | 31 | ||
| 30 | void act_hd44780_Process(void) |
32 | void act_hd44780_Process(void) |
| 31 | { |
33 | { |
| - | 34 | #if act_hd44780_USE_AUTO_BL == 1 |
|
| - | 35 | if (autoMode == CAN_MODULE_ENUM_HD44789_LCD_BACKLIGHT_AUTOLIGHT_ON) { |
|
| - | 36 | #if (act_hd44780_TYPE==0) |
|
| - | 37 | if ( OCR0A == 0) { |
|
| - | 38 | #else |
|
| - | 39 | if ( OCR0B == 0) { |
|
| - | 40 | #endif |
|
| - | 41 | ||
| - | 42 | } else { |
|
| - | 43 | uint16_t Voltage = (0x3ff & ADC_Get(act_hd44780_LIGHTSENSOR_AD)); |
|
| - | 44 | #if (act_hd44780_TYPE==0) |
|
| - | 45 | OCR0A = Voltage/4; |
|
| - | 46 | if (OCR0A == 0) { |
|
| - | 47 | OCR0A = 1; |
|
| - | 48 | } |
|
| - | 49 | #else |
|
| - | 50 | OCR0B = Voltage/4; |
|
| - | 51 | if (OCR0B == 0) { |
|
| - | 52 | OCR0B = 1; |
|
| - | 53 | } |
|
| - | 54 | #endif |
|
| - | 55 | } |
|
| - | 56 | } |
|
| - | 57 | #endif |
|
| 32 | } |
58 | } |
| 33 | 59 | ||
| 34 | void act_hd44780_HandleMessage(StdCan_Msg_t *rxMsg) |
60 | void act_hd44780_HandleMessage(StdCan_Msg_t *rxMsg) |
| 35 | { |
61 | { |
| 36 | StdCan_Msg_t txMsg; |
62 | StdCan_Msg_t txMsg; |
| 37 | uint8_t n = 0; |
63 | uint8_t n = 0; |
| Line 52... | Line 78... | ||
| 52 | break; |
78 | break; |
| 53 | 79 | ||
| 54 | case CAN_MODULE_CMD_HD44789_LCD_TEXTAT: |
80 | case CAN_MODULE_CMD_HD44789_LCD_TEXTAT: |
| 55 | lcd_gotoxy(rxMsg->Data[0], rxMsg->Data[1]); |
81 | lcd_gotoxy(rxMsg->Data[0], rxMsg->Data[1]); |
| 56 | for (n = 2; n < rxMsg->Length; n++) |
82 | for (n = 2; n < rxMsg->Length; n++) |
| 57 | { |
83 | { |
| 58 | lcd_putc((char)rxMsg->Data[n]); |
84 | lcd_putc((char)rxMsg->Data[n]); |
| 59 | } |
85 | } |
| 60 | break; |
86 | break; |
| 61 | /* |
87 | /* |
| 62 | case CAN_MODULE_CMD_HD44789_LCD_CLEARROW: |
88 | case CAN_MODULE_CMD_HD44789_LCD_CLEARROW: |
| 63 | lcd_gotoxy(0, rxMsg->Data[0]); |
89 | lcd_gotoxy(0, rxMsg->Data[0]); |
| 64 | for (n = 0; n < act_hd44780_WIDTH; n++) |
90 | for (n = 0; n < act_hd44780_WIDTH; n++) |
| Line 81... | Line 107... | ||
| 81 | txMsg.Header.ModuleId = act_hd44780_ID; |
107 | txMsg.Header.ModuleId = act_hd44780_ID; |
| 82 | txMsg.Header.Command = CAN_MODULE_CMD_HD44789_LCD_SIZE; |
108 | txMsg.Header.Command = CAN_MODULE_CMD_HD44789_LCD_SIZE; |
| 83 | txMsg.Length = 2; |
109 | txMsg.Length = 2; |
| 84 | 110 | ||
| 85 | txMsg.Data[0] = act_hd44780_WIDTH; |
111 | txMsg.Data[0] = act_hd44780_WIDTH; |
| 86 | txMsg.Data[1] = act_hd44780_HEIGHT; |
112 | txMsg.Data[1] = act_hd44780_HEIGHT; |
| 87 | 113 | ||
| 88 | while (StdCan_Put(&txMsg) != StdCan_Ret_OK); |
114 | while (StdCan_Put(&txMsg) != StdCan_Ret_OK); |
| 89 | break; |
115 | break; |
| 90 | 116 | ||
| 91 | case CAN_MODULE_CMD_HD44789_LCD_BACKLIGHT: |
117 | case CAN_MODULE_CMD_HD44789_LCD_BACKLIGHT: |
| 92 | if (rxMsg->Length > 0) { |
118 | if (rxMsg->Length > 0) { |
| 93 | #if (act_hd44780_TYPE==0) |
119 | #if (act_hd44780_TYPE==0) |
| 94 | OCR0A = rxMsg->Data[0]; |
120 | OCR0A = rxMsg->Data[0]; |
| 95 | #else |
121 | #else |
| 96 | OCR0B = rxMsg->Data[0]; |
122 | OCR0B = rxMsg->Data[0]; |
| - | 123 | #endif |
|
| - | 124 | #if act_hd44780_USE_AUTO_BL == 1 |
|
| - | 125 | if (rxMsg->Length == 2) { |
|
| - | 126 | autoMode = rxMsg->Data[0]; |
|
| - | 127 | } |
|
| 97 | #endif |
128 | #endif |
| 98 | } |
129 | } |
| 99 | 130 | ||
| 100 | StdCan_Msg_t txMsg; |
131 | StdCan_Msg_t txMsg; |
| 101 | 132 | ||
| 102 | StdCan_Set_class(txMsg.Header, CAN_MODULE_CLASS_ACT); |
133 | StdCan_Set_class(txMsg.Header, CAN_MODULE_CLASS_ACT); |
| 103 | StdCan_Set_direction(txMsg.Header, DIRECTIONFLAG_FROM_OWNER); |
134 | StdCan_Set_direction(txMsg.Header, DIRECTIONFLAG_FROM_OWNER); |
| 104 | txMsg.Header.ModuleType = CAN_MODULE_TYPE_ACT_HD44789; |
135 | txMsg.Header.ModuleType = CAN_MODULE_TYPE_ACT_HD44789; |
| 105 | txMsg.Header.ModuleId = act_hd44780_ID; |
136 | txMsg.Header.ModuleId = act_hd44780_ID; |
| 106 | txMsg.Header.Command = CAN_MODULE_CMD_HD44789_LCD_BACKLIGHT; |
137 | txMsg.Header.Command = CAN_MODULE_CMD_HD44789_LCD_BACKLIGHT; |
| Line 109... | Line 140... | ||
| 109 | #if (act_hd44780_TYPE==0) |
140 | #if (act_hd44780_TYPE==0) |
| 110 | txMsg.Data[0] = OCR0A; |
141 | txMsg.Data[0] = OCR0A; |
| 111 | #else |
142 | #else |
| 112 | txMsg.Data[0] = OCR0B; |
143 | txMsg.Data[0] = OCR0B; |
| 113 | #endif |
144 | #endif |
| - | 145 | #if act_hd44780_USE_AUTO_BL == 1 |
|
| - | 146 | txMsg.Data[1] = autoMode; |
|
| - | 147 | txMsg.Length = 2; |
|
| 114 | 148 | #endif |
|
| 115 | while (StdCan_Put(&txMsg) != StdCan_Ret_OK); |
149 | while (StdCan_Put(&txMsg) != StdCan_Ret_OK); |
| 116 | break; |
150 | break; |
| 117 | } |
151 | } |
| 118 | } |
152 | } |
| 119 | } |
153 | } |