From f8fe78d5ec576e2d3efc4333bacd9677c96ca6c8 Mon Sep 17 00:00:00 2001 From: edolomb Date: Thu, 14 Sep 2017 14:37:03 +0000 Subject: Added Blinking and Serial Thread git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10586 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED/main.c | 45 ++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 6 deletions(-) (limited to 'demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED/main.c') diff --git a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED/main.c b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED/main.c index 4009917da..aeeb6f006 100755 --- a/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED/main.c +++ b/demos/ATSAMA5D2/RT-SAMA5D2-XPLAINED/main.c @@ -16,9 +16,9 @@ #include "ch.h" #include "hal.h" +#include "chprintf.h" -static uint32_t seconds_counter; -static uint32_t minutes_counter; +#define AICREDIR_KEY 0x5B6C0E26u /* * Seconds counter thread. @@ -27,12 +27,21 @@ static THD_WORKING_AREA(waThread1, 128); static THD_FUNCTION(Thread1, arg) { (void)arg; - + bool ld = true; chRegSetThreadName("counter"); while (true) { + /* TODO: Replace with toggle function of GPIO */ + if(ld){ + PIOA->PIO_PIO_[1].S_PIO_CODR = S_PIO_CODR_P5; + ld = false; + } + else{ + PIOA->PIO_PIO_[1].S_PIO_SODR = S_PIO_SODR_P5; + ld = true; + } + chprintf((BaseSequentialStream *)&SD0, "ChibiOS is running!\r\n\n"); chThdSleepMilliseconds(1000); - seconds_counter++; } } @@ -51,6 +60,31 @@ int main(void) { halInit(); chSysInit(); + /* Redirect interrupts */ + uint32_t aicredir = SFR_AICREDIR_AICREDIRKEY((uint32_t)(AICREDIR_KEY)); + SFR->SFR_AICREDIR = (aicredir ^ SFR->SFR_SN1); + + /* + * TODO: Replace with PAL functions + * Led green + */ + PIOA->PIO_PIO_[1].S_PIO_SIOSR |= S_PIO_SIOSR_P5; + PIOA->PIO_PIO_[1].S_PIO_MSKR = S_PIO_MSKR_MSK5_ENABLED; + PIOA->PIO_PIO_[1].S_PIO_CFGR = S_PIO_CFGR_DIR_OUTPUT; + PIOA->PIO_PIO_[1].S_PIO_SODR = S_PIO_SODR_P5 ; + + /* + * TODO: Replace with PAL functions + * Uart0 pins PB26 rx and PB27 tx (J18) + */ + PIOA->PIO_PIO_[1].S_PIO_SIOSR |= S_PIO_SIOSR_P26 | S_PIO_SIOSR_P27; + /* select pins */ + PIOA->PIO_PIO_[1].S_PIO_MSKR = S_PIO_MSKR_MSK26 | S_PIO_MSKR_MSK27; + /* pins are driven by func_periph_c (uart0 mode) */ + PIOA->PIO_PIO_[1].S_PIO_CFGR = S_PIO_CFGR_FUNC_PERIPH_C; + + sdStart(&SD0, NULL); + /* * Creates the example thread. */ @@ -61,7 +95,6 @@ int main(void) { * increasing the minutes counter. */ while (true) { - chThdSleepSeconds(60); - minutes_counter++; + chThdSleepMilliseconds(500); } } -- cgit v1.2.3