
--- app/arm/eb_blink/main.c | 63 +++++++++++++++++++++++++++++++----- arch/generic/defines/Makefile.omk | 2 +- 2 files changed, 55 insertions(+), 10 deletions(-) diff --git a/app/arm/eb_blink/main.c b/app/arm/eb_blink/main.c index 43a9786..65c4167 100644 --- a/app/arm/eb_blink/main.c +++ b/app/arm/eb_blink/main.c @@ -12,29 +12,74 @@ #include <lpc21xx.h> /* LPC21xx definitions */ #include <deb_led.h> - +#include <system_def.h> -void dummy_wait() + +volatile uint32_t time_ms = 0; //< this varialbe is incremented every milisecond +#define TIME1MS ((CPU_APB_HZ) / 1000) + + +#define T1_ISR 6 + +/* + This function wait specified time in ms + + @param time time in ms to wait +*/ + +void delay(int time) { - unsigned int wait = 5000000; - while(--wait); + int target_time = time_ms + time; + while(target_time > time_ms); } -int main (void) { +/* + This function is called from timer 1 ISR + +*/ +void tc1 (void) __attribute__ ((interrupt)); +void tc1 (void) { + time_ms +=1; + + T1IR = 4; // Vynulovani priznaku preruseni + VICVectAddr = 0; // Potvrzeni o obsluze preruseni +} + +/* Setup the Timer Counter 1 Interrupt */ +void init_time (unsigned rx_isr_vect) +{ + T1PR = 0; + T1MR2 = TIME1MS; + T1MCR = (3<<6); // interrupt on MR1 + + T1TCR = 1; // Starts Timer 1 + + ((uint32_t*)&VICVectAddr0)[rx_isr_vect] = (unsigned long)tc1; // Nastaveni adresy vektotu preruseni + ((uint32_t*)&VICVectCntl0)[rx_isr_vect] = 0x20 | 0x5; // vyber casovece pro preruseni + VICIntEnable = (1<<5); // Povoli obsluhu preruseni +} + + + + +int main (void) { + + + init_time(T1_ISR); while(1) { deb_led_change(LEDR); - dummy_wait(); + delay(100); deb_led_change(LEDG); - dummy_wait(); + delay(100); deb_led_change(LEDB); - dummy_wait(); + delay(100); deb_led_change(LEDY); - dummy_wait(); + delay(100); } } diff --git a/arch/generic/defines/Makefile.omk b/arch/generic/defines/Makefile.omk index afe582e..713fdd5 100644 --- a/arch/generic/defines/Makefile.omk +++ b/arch/generic/defines/Makefile.omk @@ -1,7 +1,7 @@ # -*- makefile -*- #include_HEADERS += byteswap.h endian.h -include_HEADERS += lt_timer.h lt_timer_types.h +include_HEADERS += lt_timer.h lt_timer_types.h deb_led.h #include_HEADERS += keyval_id_his.h ads1x46.h include_HEADERS += irq_generic.h -- 1.7.1 ---