trajectory optimizations
[aversive.git] / projects / microb2010 / mainboard / main.c
index 98d3749..eb549c5 100755 (executable)
 #include "actuator.h"
 #include "cs.h"
 #include "strat_base.h"
+#include "strat_db.h"
+#include "strat_avoid.h"
 #include "i2c_protocol.h"
 
+
 /* 0 means "programmed"
  * ---- with 16 Mhz quartz
  * CKSEL 3-0 : 0111
@@ -83,8 +86,8 @@
 
 struct genboard gen;
 struct mainboard mainboard;
-struct cobboard cobboard;
-struct ballboard ballboard;
+volatile struct cobboard cobboard;
+volatile struct ballboard ballboard;
 
 #ifndef HOST_VERSION
 /***********************/
@@ -184,6 +187,8 @@ int main(void)
        memset(&mainboard, 0, sizeof(mainboard));
        mainboard.flags = DO_ENCODERS | DO_CS | DO_RS |
                DO_POS | DO_POWER | DO_BD | DO_ERRBLOCKING;
+       ballboard.lcob = I2C_COB_NONE;
+       ballboard.rcob = I2C_COB_NONE;
 
        /* UART */
        uart_init();
@@ -195,13 +200,17 @@ int main(void)
        fdevopen(uart1_dev_send, uart1_dev_recv);
 #endif
 
-       //eeprom_write_byte(EEPROM_MAGIC_ADDRESS, EEPROM_MAGIC_MAINBOARD);
        /* check eeprom to avoid to run the bad program */
        if (eeprom_read_byte(EEPROM_MAGIC_ADDRESS) !=
            EEPROM_MAGIC_MAINBOARD) {
+               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_MAINBOARD);
+               wait_ms(100);
+               bootloader();
        }
 #endif /* ! HOST_VERSION */
 
@@ -289,11 +298,10 @@ int main(void)
        /* strat */
        gen.logs[0] = E_USER_STRAT;
        gen.log_level = 5;
-       strat_reset_infos();
 
        /* strat-related event */
        scheduler_add_periodical_event_priority(strat_event, NULL,
-                                               10000L / SCHEDULER_UNIT,
+                                               25000L / SCHEDULER_UNIT,
                                                STRAT_PRIO);
 
 #ifndef HOST_VERSION
@@ -305,6 +313,9 @@ int main(void)
 
        sei();
 
+       strat_db_init();
+       test_strat_avoid();
+
        printf_P(PSTR("\r\n"));
        printf_P(PSTR("Respect et robustesse.\r\n"));
 #ifndef HOST_VERSION