From 4dc176676f75900e8591ad4e4d1b0aa7f7269859 Mon Sep 17 00:00:00 2001 From: bigalex Date: Mon, 1 Oct 2012 22:11:28 +0200 Subject: [PATCH] fizzbug --- firmware/lib/bughal.c | 9 +++++++++ firmware/lib/bughal.h | 6 ++++++ firmware/main.c | 32 +++++++++++++++++++++++++++++--- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/firmware/lib/bughal.c b/firmware/lib/bughal.c index 89fd73b..5e272d9 100644 --- a/firmware/lib/bughal.c +++ b/firmware/lib/bughal.c @@ -70,6 +70,15 @@ void init_switch(void){ return; } +bool switch_l(void){ + return PIND & 0b00000010; +}; + +bool switch_r(void){ + return PIND & 0b00000001; +}; + + void init_motor(void) { /* vibration motor on B1, initially off: */ diff --git a/firmware/lib/bughal.h b/firmware/lib/bughal.h index e406978..bf9ef81 100644 --- a/firmware/lib/bughal.h +++ b/firmware/lib/bughal.h @@ -1,6 +1,8 @@ #ifndef BUGHAL_H #define BUGHAL_H +#include + /* Hardware abstraction layer for Pentabug hardware */ enum { BUZZR_OUT, //initialize buzzer for OUTPUT mode (emmiting soundwaves) @@ -23,9 +25,13 @@ void buzzr_off(void); void buzzr_inv(void); void init_switch(void); +bool switch_l(void); //switch pressed? +bool switch_r(void); //switch pressed? + void init_motor(void); void set_motor(int); + #endif diff --git a/firmware/main.c b/firmware/main.c index f83e457..799e087 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -32,7 +32,6 @@ main(void) uint8_t ledmode =0; uint16_t ct =0; led_on(LED_R); - timer_set(&t, 100); for(;;) /* ever */ { //do something @@ -48,9 +47,36 @@ main(void) led_off(LED_L); }; - timer_set(&t, 1); + USART0_crlf(); - USART0_put_uint16(ct); + if (0==ct%3){ + if (0==ct%5){ + //fizzbug + USART0_putc('f'); + USART0_putc('i'); + USART0_putc('z'); + USART0_putc('z'); + USART0_putc('b'); + USART0_putc('u'); + USART0_putc('g'); + } else { + //fizz + USART0_putc('f'); + USART0_putc('i'); + USART0_putc('z'); + USART0_putc('z'); + } + } else { + if (0==ct%5){ + //bug + USART0_putc('b'); + USART0_putc('u'); + USART0_putc('g'); + } else { + USART0_put_uint16(ct); + }; + }; + timer_set(&t, 50); ct++; }; //end if timer expired