aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/ports
diff options
context:
space:
mode:
authormarcoveeneman <marco-veeneman@hotmail.com>2015-03-22 22:40:22 +0100
committermarcoveeneman <marco-veeneman@hotmail.com>2015-03-22 22:40:22 +0100
commit2d6792780aa9427dafb94bc15f3bbd43a69b48bb (patch)
tree479c54890ff32388e4c90fe9cb5524bed909a753 /os/hal/ports
parent61f2081d6601d6423b59dbaa87fee58a2d7dd3c0 (diff)
downloadChibiOS-Contrib-2d6792780aa9427dafb94bc15f3bbd43a69b48bb.tar.gz
ChibiOS-Contrib-2d6792780aa9427dafb94bc15f3bbd43a69b48bb.tar.bz2
ChibiOS-Contrib-2d6792780aa9427dafb94bc15f3bbd43a69b48bb.zip
Added macros in st_lld for Tiva defices to wait until a timer is ready before using it.
Diffstat (limited to 'os/hal/ports')
-rw-r--r--os/hal/ports/TIVA/LLD/st_lld.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/os/hal/ports/TIVA/LLD/st_lld.c b/os/hal/ports/TIVA/LLD/st_lld.c
index b12a43e..d94e94c 100644
--- a/os/hal/ports/TIVA/LLD/st_lld.c
+++ b/os/hal/ports/TIVA/LLD/st_lld.c
@@ -39,36 +39,42 @@
#define ST_NUMBER TIVA_WGPT0A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 0))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 0)))
#elif TIVA_ST_TIMER_NUMBER == 1
#define ST_HANDLER TIVA_WGPT1A_HANDLER
#define ST_NUMBER TIVA_WGPT1A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 1))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 1)))
#elif TIVA_ST_TIMER_NUMBER == 2
#define ST_HANDLER TIVA_WGPT2A_HANDLER
#define ST_NUMBER TIVA_WGPT2A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 2))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 2)))
#elif TIVA_ST_TIMER_NUMBER == 3
#define ST_HANDLER TIVA_WGPT3A_HANDLER
#define ST_NUMBER TIVA_WGPT3A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 3))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 3)))
#elif TIVA_ST_TIMER_NUMBER == 4
#define ST_HANDLER TIVA_WGPT4A_HANDLER
#define ST_NUMBER TIVA_WGPT4A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 4))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 4)))
#elif TIVA_ST_TIMER_NUMBER == 5
#define ST_HANDLER TIVA_WGPT5A_HANDLER
#define ST_NUMBER TIVA_WGPT5A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCWTIMER |= (1 << 5))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRWTIMER & (1 << 5)))
#else
#error "TIVA_ST_USE_TIMER specifies an unsupported timer"
@@ -85,36 +91,42 @@
#define ST_NUMBER TIVA_GPT0A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 0))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 0)))
#elif TIVA_ST_TIMER_NUMBER == 1
#define ST_HANDLER TIVA_GPT1A_HANDLER
#define ST_NUMBER TIVA_GPT1A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 1))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 1)))
#elif TIVA_ST_TIMER_NUMBER == 2
#define ST_HANDLER TIVA_GPT2A_HANDLER
#define ST_NUMBER TIVA_GPT2A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 2))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 2)))
#elif TIVA_ST_TIMER_NUMBER == 3
#define ST_HANDLER TIVA_GPT3A_HANDLER
#define ST_NUMBER TIVA_GPT3A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 3))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 3)))
#elif TIVA_ST_TIMER_NUMBER == 4
#define ST_HANDLER TIVA_GPT4A_HANDLER
#define ST_NUMBER TIVA_GPT4A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 4))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 4)))
#elif TIVA_ST_TIMER_NUMBER == 5
#define ST_HANDLER TIVA_GPT5A_HANDLER
#define ST_NUMBER TIVA_GPT5A_NUMBER
#define ST_CLOCK_SRC (80000000)
#define ST_ENABLE_CLOCK() (SYSCTL->RCGCTIMER |= (1 << 5))
+#define ST_WAIT_CLOCK() while (!(SYSCTL->PRTIMER & (1 << 5)))
#else
#error "TIVA_ST_USE_TIMER specifies an unsupported timer"
@@ -214,9 +226,8 @@ void st_lld_init(void)
/* Enabling timer clock.*/
ST_ENABLE_CLOCK();
- /* TODO: dynamic for all timers instead of hardcoded.*/
- while (!(SYSCTL->PRWTIMER & (1 << 5)))
- ;
+ /* Wait until timer peripheral is ready */
+ ST_WAIT_CLOCK();
/* Initializing the counter in free running down mode.*/
TIVA_ST_TIM->CTL = 0;