fixed several errors, added keystuff

This commit is contained in:
john stone 2012-09-24 19:45:51 +02:00
parent 886643338e
commit ee416142da

View File

@ -12,55 +12,57 @@
void init_leds(void){ static void init_leds(void){
//enable LED channels as output //enable LED channels as output
DDRC |= (1 << PORTC0) | (1 << PORTC1) | (1 << PORTC2) | (1 << PORTC3); DDRC |= (1 << PORTC0) | (1 << PORTC1) | (1 << PORTC2) | (1 << PORTC3);
// both LEDs off // both LEDs off
PORTC &= ~((1 << PORTC0) | (1 << PORTC1) | (1 << PORTC2) | (1 << PORTC3)); PORTC &= ~((1 << PORTC0) | (1 << PORTC1) | (1 << PORTC2) | (1 << PORTC3));
return; return;
}; }
void inline led_on(int leds){ static void inline led_on(int leds){
PORTC |= leds; PORTC |= leds;
}; }
void inline led_off(int leds){ static void inline led_off(int leds){
PORTC &= ~leds; PORTC &= ~leds;
}; return;
}
static void inline buzzr_off(){
PORTC &= ~(1 << PORTC5);
PORTB &= ~(1 << PORTB2);
}
static void init_buzzr(void){
void init_buzzr(){
//its on B2 and C5, for reasons //its on B2 and C5, for reasons
DDRC |= (1 << PORTC5); DDRC |= (1 << PORTC5);
DDRB |= (1 << PORTB2); DDRB |= (1 << PORTB2);
//switch it off //switch it off
buzzr_off(); buzzr_off();
return; return;
}; }
void buzzr_up(){ static void buzzr_up(void){
PORTC &= ~(1 << PORTC5); PORTC &= ~(1 << PORTC5);
PORTB |= (1 << PORTB2); PORTB |= (1 << PORTB2);
return; return;
}; }
void buzzr_down(){ static void buzzr_down(){
PORTC |= (1 << PORTC5); PORTC |= (1 << PORTC5);
PORTB &= ~(1 << PORTB2); PORTB &= ~(1 << PORTB2);
}; }
void inline buzzr_off(){
PORTC &= ~(1 << PORTC5);
PORTB &= ~(1 << PORTB2); static void buzzr_inv(){
};
void buzzr_inv(){
PORTC ^= (1 << PORTC5); PORTC ^= (1 << PORTC5);
PORTB ^= (1 << PORTB2); PORTB ^= (1 << PORTB2);
}; }
void init_motor(void) static void init_motor(void)
{ {
/* vibration motor on B1, initially off: */ /* vibration motor on B1, initially off: */
DDRB |= (1 << PORTB1); DDRB |= (1 << PORTB1);
@ -68,18 +70,19 @@ void init_motor(void)
return; return;
} }
void set_motor(int val){ static void set_motor(int val){
PORTB = ~(val); PORTB = ~(val);
PORTB = PORTB; PORTB = PORTB;
return; return;
}; }
void init_switch(void){ static void init_switch(void){
DDRD &= ~( (1 << PORTD1) | (1<<PORTD0))
return; return;
}; }
void blinkrattlebeep(void){ static void blinkrattlebeep(void){
led_off(LED_L|LED_R); led_off(LED_L|LED_R);
_delay_ms(100); _delay_ms(100);
led_on(LED_L); led_on(LED_L);
@ -97,9 +100,9 @@ void blinkrattlebeep(void){
buzzr_inv(); buzzr_inv();
}; };
buzzr_off(); buzzr_off();
}; }
void mode_motortest(void) static void mode_motortest(void)
{ {
set_motor(MOTOR_ON); set_motor(MOTOR_ON);
_delay_ms(400); _delay_ms(400);
@ -109,7 +112,7 @@ void mode_motortest(void)
} }
void mode_blinktest(void) static void mode_blinktest(void)
{ {
led_off(LED_L|LED_R); led_off(LED_L|LED_R);
_delay_ms(100); _delay_ms(100);
@ -119,9 +122,19 @@ void mode_blinktest(void)
led_on(LED_R); led_on(LED_R);
_delay_ms(100); _delay_ms(100);
led_off(LED_R); led_off(LED_R);
return return;
} }
static void mode_beeptest(void)
{
buzzr_up();
for (int i=0; i<100; i++){
_delay_ms(2);
buzzr_inv();
};
buzzr_off();
return;
}
void __attribute__((noreturn)) void __attribute__((noreturn))
main(void) main(void)
@ -131,21 +144,42 @@ main(void)
init_motor(); init_motor();
init_buzzr(); init_buzzr();
init_leds(); init_leds();
init_switch();
uint8_t mode = 0; uint8_t mode = 0;
for(;;) /* ever */ { for(;;) /* ever */ {
//do something //do something
//TODO: check switches and change mode //TODO: check switches and change mode
switch(mode){ switch(mode){
case 1 : led_on(LED_L|LED_R); _delay_ms(500); led_off(LED_L|LED_R); break; case 1:
case 2 : break; mode_blinktest();
default : blinkrattlebeep(); break;
}; case 2:
mode_motortest();
break;
case 3:
mode_beeptest();
break();
case 4:
default:
mode=0;
case 0:
blinkrattlebeep();
}
switch( PIND & 3){
case 1:
mode++
break;
case 2:
mode --;
break;
case 3:
default:
}
} }
/* never return 0; */ /* never return 0; */