X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=app%2Fat91sam7s%2Fat91sam7s.c;h=29cd9907f722bfd9b1ee42e5c5e1a3f7257204f3;hb=45add65abd59bd79f528501c85f3e5891a9c2c29;hp=e5170bb529989b9a53e28f7ab14003a7d3e23b6d;hpb=800a692eb5ebe153f814a94109dd4deaca8997ad;p=bertos.git diff --git a/app/at91sam7s/at91sam7s.c b/app/at91sam7s/at91sam7s.c index e5170bb5..29cd9907 100644 --- a/app/at91sam7s/at91sam7s.c +++ b/app/at91sam7s/at91sam7s.c @@ -1,8 +1,33 @@ /** * \file * * * \version $Id$ @@ -12,20 +37,81 @@ * \brief AT91SAM7S-EK porting test. */ +#include #include +#include +#include +#include #include +#include + +Timer leds_timer; +KFileSerial ser_fd; + +static void leds_toggle(void) +{ + uint8_t a = (~PIOA_ODSR & 0x0f); + + if (a) + { + PIOA_SODR = a; + PIOA_CODR = a << 1; + } + else + { + PIOA_SODR = 0x0f; + /* turn first led on */ + PIOA_CODR = 0x00000001; + } + + /* Wait for interval time */ + timer_setDelay(&leds_timer, ms_to_ticks(100)); + timer_add(&leds_timer); +} + int main(void) { -// kdbg_init(); + char msg[]="BeRTOS, be fast be beatiful be realtime"; + kdbg_init(); + sysirq_init(); timer_init(); + + proc_init(); + ASSERT(!IRQ_ENABLED()); + + /* Open the main communication port */ + ser_init(&ser_fd, 0); + ser_setbaudrate(&ser_fd, 115200); + ser_setparity(&ser_fd, SER_PARITY_NONE); + + IRQ_ENABLE; + ASSERT(IRQ_ENABLED()); + + /* Disable all pullups */ + PIOA_PUDR = 0xffffffff; + /* Set PA0..3 connected to PIOA */ + PIOA_PER = 0x0000001f; + /* Set PA0..3 as output */ + PIOA_OER = 0x0000001f; + /* Disable multidrive on all pins */ + PIOA_MDDR = 0x0000001f; + + /* Set PA0..3 to 1 to turn off leds */ + PIOA_SODR = 0x0000000f; + /* turn first led on */ + PIOA_CODR = 0x00000001; + + timer_set_event_softint(&leds_timer, (Hook)leds_toggle, 0); + timer_setDelay(&leds_timer, ms_to_ticks(100)); + timer_add(&leds_timer); // Main loop for(;;) { - + proc_test(); + kfile_printf(&ser_fd.fd, "From serial 0: %s\r\n", msg); } - return 0; }