eeprom check is better
[aversive.git] / projects / microb2010 / cobboard / main.c
index 1f4065b..215fb5c 100755 (executable)
@@ -173,13 +173,17 @@ int main(void)
 #  error not supported
 #endif
 
-       //eeprom_write_byte(EEPROM_MAGIC_ADDRESS, EEPROM_MAGIC_COBBOARD);
        /* check eeprom to avoid to run the bad program */
        if (eeprom_read_byte(EEPROM_MAGIC_ADDRESS) !=
            EEPROM_MAGIC_COBBOARD) {
+               int c;
                sei();
-               printf_P(PSTR("Bad eeprom value\r\n"));
-               while(1);
+               printf_P(PSTR("Bad eeprom value ('f' to force)\r\n"));
+               c = uart_recv(CMDLINE_UART);
+               if (c == 'f')
+                       eeprom_write_byte(EEPROM_MAGIC_ADDRESS, EEPROM_MAGIC_COBBOARD);
+               wait_ms(100);
+               bootloader();
        }
 
        /* LOGS */
@@ -207,8 +211,8 @@ int main(void)
        PWM_NG_TIMER_16BITS_INIT(4, TIMER_16_MODE_PWM_10,
                                 TIMER4_PRESCALER_DIV_1);
 
-       PWM_NG_INIT16(&gen.pwm1_4A, 4, A, 10, PWM_NG_MODE_SIGNED |
-                     PWM_NG_MODE_SIGN_INVERTED, &PORTD, 4);
+       PWM_NG_INIT16(&gen.pwm1_4A, 4, A, 10, PWM_NG_MODE_SIGNED,
+                     &PORTD, 4);
        PWM_NG_INIT16(&gen.pwm2_4B, 4, B, 10, PWM_NG_MODE_SIGNED |
                      PWM_NG_MODE_SIGN_INVERTED, &PORTD, 5);
        PWM_NG_INIT16(&gen.pwm3_1A, 1, A, 10, PWM_NG_MODE_SIGNED,
@@ -271,6 +275,9 @@ int main(void)
        gen.log_level = 5;
        cobboard.flags |= DO_CS;
 
+       spickle_pack(I2C_LEFT_SIDE);
+       spickle_pack(I2C_RIGHT_SIDE);
+
        state_machine();
        cmdline_interact();