Fix systick for use of main clock rather than external clock.
authorNathael Pajani <nathael.pajani@ed3l.fr>
Mon, 21 Sep 2015 14:56:15 +0000 (16:56 +0200)
committerNathael Pajani <nathael.pajani@ed3l.fr>
Mon, 21 Sep 2015 14:56:15 +0000 (16:56 +0200)
apps/dtplug/usb/main.c
core/systick.c
include/core/lpc_regs_17xx.h

index a5a2d57..106bca4 100644 (file)
@@ -97,13 +97,11 @@ int main(void) {
 */
 
        while (1) {
-               volatile int i = 0;
                gpio_clear(user_led);
                serial_write(1, "C", 1);
-               while (i++ < 1000000) {}
+               msleep(500);
                gpio_set(user_led);
-               while (i-- > 0) {}
-               /* msleep(500); */
+               msleep(500);
        }
        return 0;
 }
index 9b683bd..ebb09e7 100644 (file)
@@ -222,9 +222,6 @@ void systick_timer_on(uint32_t ms)
                reload = (get_main_clock() / 1000) - 1;
                ms = 1;
        }
-       /* For the LPC1224 the system tick clock is fixed to half the frequency of the system clock */
-       /* FIXME : check this for LPC176x !!! */
-       reload = reload >> 1; /* Divide by 2 */
        systick->reload_val = (reload & 0xffffff);
        tick_ms = ms;
        tick_reload = systick->reload_val;
@@ -235,13 +232,11 @@ void systick_timer_on(uint32_t ms)
        global_wrapping_system_clock_cycles = tick_reload;
 
        /* And enable counter interrupt */
-       systick->control = LPC_SYSTICK_CTRL_TICKINT;
+       systick->control = (LPC_SYSTICK_CTRL_TICKINT | LPC_SYSTICK_CTRL_CLKSRC_MAIN_CLK);
        systick_running = 0;
 
        /* Perform this division now for the usleep function. */
        usleep_us_count = get_main_clock() / (1000 * 1000);
-       /* For the LPC1224 the system tick clock is fixed to half the frequency of the system clock */
-       usleep_us_count = (usleep_us_count >> 1); /* Divide by two */
 
        /* FIXME : document this */
        NVIC_SetPriority(SYSTICK_IRQ, ((1 << LPC_NVIC_PRIO_BITS) - 1));
index c607ccf..db591ed 100644 (file)
@@ -386,6 +386,8 @@ struct lpc_system_tick {
 /* SysTick Control / Status Register Definitions */
 #define LPC_SYSTICK_CTRL_COUNTFLAG  (1UL << 16)   /* SysTick CTRL: COUNTFLAG Mask */
 #define LPC_SYSTICK_CTRL_CLKSOURCE  (1UL << 2)    /* SysTick CTRL: CLKSOURCE Mask */
+#define LPC_SYSTICK_CTRL_CLKSRC_MAIN_CLK (1UL << 2)
+#define LPC_SYSTICK_CTRL_CLKSRC_EXTERNAL (0)
 #define LPC_SYSTICK_CTRL_TICKINT    (1UL << 1)    /* SysTick CTRL: TICKINT Mask */
 #define LPC_SYSTICK_CTRL_ENABLE     (1UL << 0)    /* SysTick CTRL: ENABLE Mask */