Rev 1536 | Rev 1556 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 1536 | Rev 1555 | ||
|---|---|---|---|
| Line 21... | Line 21... | ||
| 21 | #define sns_Serial_DEBUG 0 |
21 | #define sns_Serial_DEBUG 0 |
| 22 | 22 | ||
| 23 | void sns_Serial_Init(void) |
23 | void sns_Serial_Init(void) |
| 24 | { |
24 | { |
| 25 | #ifdef sns_Serial_USEEEPROM |
25 | #ifdef sns_Serial_USEEEPROM |
| 26 | if (EEDATA_OK) |
26 | if (EEDATA_OK) { |
| 27 | { |
- | |
| 28 | ///TODO: Use stored data to set initial values for the module |
- | |
| 29 |
|
27 | baudRate = eeprom_read_dword(EEDATA32.baudRate); |
| 30 |
|
28 | format = eeprom_read_word(EEDATA16.format); |
| - | 29 | } |
|
| 31 |
|
30 | else { |
| 32 |
|
31 | //The CRC of the EEPROM is not correct, store default values and update CRC |
| 33 |
|
32 | eeprom_write_dword_crc(EEDATA32.baudRate, 9600, WITHOUT_CRC); |
| 34 | eeprom_write_word_crc( |
33 | eeprom_write_word_crc(EEDATA16.format, CAN_MODULE_ENUM_SERIAL_SERIALCONFIG_PHYSICALFORMAT_LOOPBACK, WITHOUT_CRC); |
| 35 | EEDATA_UPDATE_CRC; |
34 | EEDATA_UPDATE_CRC; |
| 36 | } |
35 | } |
| 37 | #endif |
36 | #endif |
| 38 | // default baudrate |
37 | // default baudrate |
| 39 | uart_init(UART_BAUD_SELECT(baudRate, F_CPU)); |
38 | uart_init(UART_BAUD_SELECT(baudRate, F_CPU)); |
| Line 45... | Line 44... | ||
| 45 | gpio_set_out(sns_Serial_TERM_EN); |
44 | gpio_set_out(sns_Serial_TERM_EN); |
| 46 | gpio_set_out(sns_Serial_485_CONNECT); |
45 | gpio_set_out(sns_Serial_485_CONNECT); |
| 47 | //default to loopback mode until config command received |
46 | //default to loopback mode until config command received |
| 48 | gpio_clr_pin(sns_Serial_ON); |
47 | gpio_clr_pin(sns_Serial_ON); |
| 49 | gpio_clr_pin(sns_Serial_485_232); |
48 | gpio_clr_pin(sns_Serial_485_232); |
| 50 | gpio_clr_pin(sns_Serial_485_CONNECT); // disable RS485_CONNECT |
49 | gpio_clr_pin(sns_Serial_485_CONNECT); // disable RS485_CONNECT |
| 51 | gpio_clr_pin(sns_Serial_TERM_EN); // disable termination |
50 | gpio_clr_pin(sns_Serial_TERM_EN); // disable termination |
| 52 | gpio_set_pin(sns_Serial_485_232); // RS232 mode |
51 | gpio_set_pin(sns_Serial_485_232); // RS232 mode |
| 53 | gpio_set_pin(sns_Serial_RXEN); // enable RX |
52 | gpio_set_pin(sns_Serial_RXEN); // enable RX |
| 54 | gpio_set_pin(sns_Serial_TXEN); // enable TX |
53 | gpio_set_pin(sns_Serial_TXEN); // enable TX |
| 55 | 54 | ||
| 56 | // to use PCINt lib, call this function: (the callback function look as a timer callback function) |
55 | // to use PCINt lib, call this function: (the callback function look as a timer callback function) |
| 57 | // Pcint_SetCallbackPin(sns_Serial_PCINT, EXP_C , &sns_Serial_pcint_callback); |
56 | // Pcint_SetCallbackPin(sns_Serial_PCINT, EXP_C , &sns_Serial_pcint_callback); |
| 58 | 57 | ||
| 59 | #if sns_Serial_DEBUG==1 |
58 | #if sns_Serial_DEBUG==1 |
| Line 131... | Line 130... | ||
| 131 | uart_init(UART_BAUD_SELECT(baudRate, F_CPU)); |
130 | uart_init(UART_BAUD_SELECT(baudRate, F_CPU)); |
| 132 | if (format == CAN_MODULE_ENUM_SERIAL_SERIALCONFIG_PHYSICALFORMAT_RS232) |
131 | if (format == CAN_MODULE_ENUM_SERIAL_SERIALCONFIG_PHYSICALFORMAT_RS232) |
| 133 | { |
132 | { |
| 134 | #if sns_Serial_DEBUG==1 |
133 | #if sns_Serial_DEBUG==1 |
| 135 | printf("RS232\n"); |
134 | printf("RS232\n"); |
| 136 | #endif |
135 | #endif |
| 137 | gpio_clr_pin(sns_Serial_485_CONNECT); // disable RS485_CONNECT |
136 | gpio_clr_pin(sns_Serial_485_CONNECT); // disable RS485_CONNECT |
| 138 | gpio_clr_pin(sns_Serial_TERM_EN); // disable termination |
137 | gpio_clr_pin(sns_Serial_TERM_EN); // disable termination |
| 139 | gpio_clr_pin(sns_Serial_485_232); // RS232 mode |
138 | gpio_clr_pin(sns_Serial_485_232); // RS232 mode |
| 140 | gpio_set_pin(sns_Serial_RXEN); // enable RX |
139 | gpio_set_pin(sns_Serial_RXEN); // enable RX |
| 141 | gpio_set_pin(sns_Serial_ON); // enable charge pump |
140 | gpio_set_pin(sns_Serial_ON); // enable charge pump |
| 142 | } |
141 | } |
| Line 194... | Line 193... | ||
| 194 | { |
193 | { |
| 195 | //invalid format |
194 | //invalid format |
| 196 | #if sns_Serial_DEBUG==1 |
195 | #if sns_Serial_DEBUG==1 |
| 197 | printf("ERROR!\n"); |
196 | printf("ERROR!\n"); |
| 198 | #endif |
197 | #endif |
| - | 198 | //break prematurely, to prevent data from being saved in EEPROM |
|
| - | 199 | break; |
|
| 199 | } |
200 | } |
| - | 201 | ||
| - | 202 | // update EEPROM data |
|
| - | 203 | eeprom_write_dword_crc(EEDATA32.baudRate, 9600, WITHOUT_CRC); |
|
| - | 204 | eeprom_write_word_crc(EEDATA16.format, CAN_MODULE_ENUM_SERIAL_SERIALCONFIG_PHYSICALFORMAT_LOOPBACK, WITHOUT_CRC); |
|
| - | 205 | EEDATA_UPDATE_CRC; |
|
| - | 206 | ||
| 200 | break; |
207 | break; |
| 201 | } |
208 | } |
| 202 | } |
209 | } |
| 203 | } |
210 | } |
| 204 | 211 | ||