X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmainboard%2Fmain.c;h=d7ac3d4d28948cdff457cb852c4af3d21ad01a4f;hp=633a35dbac1b464f14abbc06a0820c491ea68057;hb=b56f8565015ec12af0e8df461f8dd52d07f59dd7;hpb=78150017ab8c5615af414df706a0525fe7c262ae diff --git a/projects/microb2010/mainboard/main.c b/projects/microb2010/mainboard/main.c index 633a35d..d7ac3d4 100755 --- a/projects/microb2010/mainboard/main.c +++ b/projects/microb2010/mainboard/main.c @@ -67,7 +67,11 @@ #include "actuator.h" #include "cs.h" #include "strat_base.h" +#include "strat_db.h" +#include "strat_avoid.h" #include "i2c_protocol.h" +#include "beacon.h" + /* 0 means "programmed" * ---- with 16 Mhz quartz @@ -85,6 +89,7 @@ struct genboard gen; struct mainboard mainboard; volatile struct cobboard cobboard; volatile struct ballboard ballboard; +volatile struct beaconboard beaconboard; #ifndef HOST_VERSION /***********************/ @@ -184,6 +189,10 @@ 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; + + beaconboard.oppx = I2C_OPPONENT_NOT_THERE; /* UART */ uart_init(); @@ -195,13 +204,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 */ @@ -277,10 +290,13 @@ int main(void) /* TIME */ time_init(TIME_PRIO); -#ifndef HOST_VERSION /* sensors, will also init hardware adc */ sensor_init(); + /* beacon */ + beacon_init(); + +#ifndef HOST_VERSION /* start i2c slave polling */ scheduler_add_periodical_event_priority(i2c_poll_slaves, NULL, 8000L / SCHEDULER_UNIT, I2C_POLL_PRIO); @@ -289,11 +305,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 +320,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