Subversion Repositories HomeAutomation

Rev

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
      blablaX = eeprom_read_byte(EEDATA.x);
27
        baudRate = eeprom_read_dword(EEDATA32.baudRate);
30
      blablaY = eeprom_read_word(EEDATA16.y);
28
        format = eeprom_read_word(EEDATA16.format);
-
 
29
    }
31
    } else
30
    else {
32
    {   //The CRC of the EEPROM is not correct, store default values and update CRC
31
        //The CRC of the EEPROM is not correct, store default values and update CRC
33
      eeprom_write_byte_crc(EEDATA.x, 0xAB, WITHOUT_CRC);
32
        eeprom_write_dword_crc(EEDATA32.baudRate, 9600, WITHOUT_CRC);
34
      eeprom_write_word_crc(EEDATA16.y, 0x1234, WITHOUT_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