X-Git-Url: https://defiant.homedns.org/gitweb/?p=ros_wild_thumper.git;a=blobdiff_plain;f=avr%2Fmotor_ctrl%2Fmain.c;h=f7c9f0ae73822057176994f8082b4660970988bc;hp=b0d9cbfe00aba102cc72ce4f82173b5eefa30eac;hb=e46de78ee34c663f5ac1ceb0656acd0cf9370288;hpb=cf3341a02d703c3e8cbc4f3baffa45184316bc02 diff --git a/avr/motor_ctrl/main.c b/avr/motor_ctrl/main.c index b0d9cbf..f7c9f0a 100644 --- a/avr/motor_ctrl/main.c +++ b/avr/motor_ctrl/main.c @@ -8,6 +8,7 @@ #include #include #include +#include #include "uart.h" /* @@ -184,7 +185,8 @@ static volatile uint8_t count_test=0; static volatile uint8_t front_handicap=0; static volatile uint8_t aft_handicap=0; static volatile uint8_t error_state=0; -static volatile uint8_t last_man_update_count=I2C_TIMEOUT_DISABLE; +static volatile uint8_t last_man_update_count=0; +static volatile uint8_t last_i2c_status = 0; ISR(TWI_vect) { @@ -193,6 +195,7 @@ ISR(TWI_vect) static ufloat_t tmp_speed; static ufloat_t tmp_angle; + last_i2c_status = TW_STATUS; switch(TW_STATUS) { case TW_SR_SLA_ACK: // start write @@ -625,6 +628,8 @@ ISR(TWI_vect) case TW_SR_STOP: TWI_ACK; break; + case TW_NO_INFO: + break; default: TWI_RESET; } @@ -1083,7 +1088,7 @@ int main(void) { TCCR0 = (1 << WGM01) | (1 << WGM00) | (1 << CS00); OCR0 = 0; - printf("\r\nStart\r\n"); + printf_P(PSTR("\r\nStart\r\n")); set_sleep_mode(SLEEP_MODE_IDLE); // Enable Timer 1 Overflow Interrupt @@ -1149,11 +1154,14 @@ int main(void) { count_test++; if (last_man_update_count != I2C_TIMEOUT_DISABLE) last_man_update_count++; - if (last_man_update_count > 100) { + if (last_man_update_count >= 100) { // ~1s without a new i2c command cmd_vel.speed = 0; cmd_vel.angle = 0; cmd_vel.bUpdate = 1; + if (last_man_update_count == 100) { + printf_P(PSTR("I2C State: 0x%x\r\n"), last_i2c_status); + } last_man_update_count = I2C_TIMEOUT_DISABLE; } }