From f7aedcfbdba289952f4a46a9345938bdba7e110d Mon Sep 17 00:00:00 2001 From: Guillaume Chevillot Date: Tue, 4 Mar 2008 09:00:59 +0100 Subject: - Removed 'static' qualifier to 'main_loop' - 'led_flash' function added to detect startup (thanks to Ni) - Temporary empty vectors for right side timer (timer2) added to prevent resets (right side code is not implmented yet) --- analog/motor-power-avr/src/main.c | 57 +++++++++++++++++++++++++++++---- analog/motor-power-avr/src/mp_pwm_LR_.h | 4 +-- analog/motor-power-avr/src/mp_pwm_L_.c | 2 -- 3 files changed, 53 insertions(+), 10 deletions(-) (limited to 'analog/motor-power-avr/src') diff --git a/analog/motor-power-avr/src/main.c b/analog/motor-power-avr/src/main.c index a691c6e4..b5e24028 100644 --- a/analog/motor-power-avr/src/main.c +++ b/analog/motor-power-avr/src/main.c @@ -72,8 +72,10 @@ uint8_t curLim_stat_cpt, curLim_stat_period; /* +AutoDec */ /** Main loop. */ -static void -main_loop (void); +void main_loop (void); + +/** Just do a short flash on LEDs */ +void led_flash(void); /* -AutoDec */ @@ -82,6 +84,11 @@ int main (int argc, char **argv) { avr_init (argc, argv); + + // Show that starts + led_flash(); + + DDRB |= 0x0c; //-- /* Pull-ups. */ //PORTA = 0xff; @@ -93,22 +100,50 @@ main (int argc, char **argv) envTest_period = 200; proto_send0 ('z'); sei (); + + // Background "task" while (1) - main_loop (); + main_loop (); + return 0; } +/** Just do a short flash on LEDs */ +void +led_flash(void) +{ + uint8_t ddrb_backup, portb_backup; + + // Save previous state + ddrb_backup = DDRB; + portb_backup = PORTB; + + // Light up LEDs + DDRB = 0x0f; + PORTB = 0x0f; + + // Delay 0.5s + utils_delay(0.5); + + // Restore previous state + PORTB = portb_backup, + DDRB = ddrb_backup; + + return; +} + /** Main loop. */ -static void +void main_loop (void) { /* Uart */ if (uart0_poll ()) - proto_accept (uart0_getc ()); + proto_accept (uart0_getc ()); /* Counter for launching environemental tests */ if (!(envTest_cpt --)) { - envTest_cpt = envTest_period; + envTest_cpt = envTest_period; + launch_envTest (); curLim_temp = get_curLim_temp (temperature); curLim_bat= get_curLim_bat (battery); @@ -219,3 +254,13 @@ proto_send (cmd, size, args); #undef c } +/** Defines empty vector for timer 2 until R pwm file exists */ + +//-- +// To remove when R side file will be generated +EMPTY_INTERRUPT(R_OVF_vect) + +//-- +// To remove when R side file will be generated +EMPTY_INTERRUPT(R_COMP_vect) + diff --git a/analog/motor-power-avr/src/mp_pwm_LR_.h b/analog/motor-power-avr/src/mp_pwm_LR_.h index 999ecd67..85da1fec 100644 --- a/analog/motor-power-avr/src/mp_pwm_LR_.h +++ b/analog/motor-power-avr/src/mp_pwm_LR_.h @@ -102,11 +102,11 @@ // for 57.21kHz : prescaler = 0 : CSx2:0 = 0x01 // for 7.68kHz : prescaler = 8 : CSx2:0 = 0x02 #define TCCR_LR_CFG (regv (FOC0, WGM00, COM01, COM00, WGM01, CS02, CS01, CS00, \ - 0, 0, 0, 0, 0, 0, 1, 0)) + 0, 0, 0, 0, 0, 0, 1, 0)) // timer interrupts configuration #define TIMSK_LR_CFG (regv (OCIE2, TOIE2, TICIE1, OCIE1A, OCIE1B, TOIE1, OCIE0, TOIE0, \ - 1, 1, 0, 0, 0, 0, 1, 1)) + 1, 1, 0, 0, 0, 0, 1, 1)) // PWM max, min, and offset values #define PWM_MIN_LR_ 0x10 diff --git a/analog/motor-power-avr/src/mp_pwm_L_.c b/analog/motor-power-avr/src/mp_pwm_L_.c index 1eb04b71..e46398f8 100644 --- a/analog/motor-power-avr/src/mp_pwm_L_.c +++ b/analog/motor-power-avr/src/mp_pwm_L_.c @@ -147,7 +147,6 @@ ISR(L_COMP_vect) { } } - // overcurrent detected by comparators ISR(ILIM_L_vect) { _L_AL_0; @@ -198,4 +197,3 @@ void start_motor_L_ (uint8_t pwmspeed, uint8_t direction) { void stop_motor_L_ (void) { state_L_ = CMD_STATE_HIGH_Z; } - -- cgit v1.2.3