From c50632c1bf09e2f052a868bd2a3d648cc2817031 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 3 Feb 2020 20:12:23 -0700 Subject: [PATCH] Fix timer interrupt --- src/arch/8051/arch.c | 7 ------- src/arch/8051/time.c | 7 ++++--- src/board/system76/darp5/main.c | 9 +++++++++ src/board/system76/galp3-c/main.c | 9 +++++++++ src/board/system76/lemp9/main.c | 9 +++++++++ 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/arch/8051/arch.c b/src/arch/8051/arch.c index c7fc8d4..faeb1b1 100644 --- a/src/arch/8051/arch.c +++ b/src/arch/8051/arch.c @@ -2,13 +2,6 @@ #include -void external_0(void) __interrupt(0) {} -// timer_0 is in time.c -void external_1(void) __interrupt(2) {} -void timer_1(void) __interrupt(3) {} -void serial(void) __interrupt(4) {} -void timer_2(void) __interrupt(5) {} - void arch_init(void) { // Disable interrupts EA = 0; diff --git a/src/arch/8051/time.c b/src/arch/8051/time.c index 2bed354..6842a1d 100644 --- a/src/arch/8051/time.c +++ b/src/arch/8051/time.c @@ -7,11 +7,12 @@ static volatile uint32_t time_overflows = 0; void timer_0(void) __interrupt(1) { + // Stop timer + TR0 = 0; + time_overflows++; - // Restart timer - TR0 = 0; - TF0 = 0; + // Start timer TH0 = 0xFD; TL0 = 0x01; TR0 = 1; diff --git a/src/board/system76/darp5/main.c b/src/board/system76/darp5/main.c index c00aeb5..febcc56 100644 --- a/src/board/system76/darp5/main.c +++ b/src/board/system76/darp5/main.c @@ -19,6 +19,15 @@ #include #include + +void external_0(void) __interrupt(0) {} +// timer_0 is in time.c +void timer_0(void) __interrupt(1); +void external_1(void) __interrupt(2) {} +void timer_1(void) __interrupt(3) {} +void serial(void) __interrupt(4) {} +void timer_2(void) __interrupt(5) {} + uint8_t main_cycle = 0; void init(void) { diff --git a/src/board/system76/galp3-c/main.c b/src/board/system76/galp3-c/main.c index 0ddd426..423fd78 100644 --- a/src/board/system76/galp3-c/main.c +++ b/src/board/system76/galp3-c/main.c @@ -20,6 +20,15 @@ #include #include + +void external_0(void) __interrupt(0) {} +// timer_0 is in time.c +void timer_0(void) __interrupt(1); +void external_1(void) __interrupt(2) {} +void timer_1(void) __interrupt(3) {} +void serial(void) __interrupt(4) {} +void timer_2(void) __interrupt(5) {} + uint8_t main_cycle = 0; void init(void) { diff --git a/src/board/system76/lemp9/main.c b/src/board/system76/lemp9/main.c index 0ddd426..423fd78 100644 --- a/src/board/system76/lemp9/main.c +++ b/src/board/system76/lemp9/main.c @@ -20,6 +20,15 @@ #include #include + +void external_0(void) __interrupt(0) {} +// timer_0 is in time.c +void timer_0(void) __interrupt(1); +void external_1(void) __interrupt(2) {} +void timer_1(void) __interrupt(3) {} +void serial(void) __interrupt(4) {} +void timer_2(void) __interrupt(5) {} + uint8_t main_cycle = 0; void init(void) {