Hallo,
ich verwende einen Lattice ECP2 und möchte einen Timer im Mico32
verwenden, der mir alle 10msec ein Flag setzt, welches ich im
Hauptprogramm abfrage.
Im MSB habe ich einen Timer mit dem Namen "timer" hinzugefügt
(Standardeinstellungen habe ich beibehalten) und mit dem WishboneBus
verdrahtet.
Im C File habe ich folgendes:
1 | // globale Defintion:
|
2 | const char *SYSTEM_TIMER = "timer";
|
3 | unsigned short flag_10msec;
|
4 | // im main (void):
|
5 | MicoTimerCtx_t *timer = (MicoTimerCtx_t *)MicoGetDevice(SYSTEM_TIMER);
|
6 |
|
7 | MicoTimerStart(timer,
|
8 | TimerISR,
|
9 | (void *)&flag_10msec,
|
10 | MILLISECONDS_TO_TICKS(10),
|
11 | 1);
|
Die ISR für diesen Timer sieht so aus:
1 | void TimerISR(void *ctx)
|
2 | {
|
3 | flag_10msec = 1;
|
4 | return;
|
5 | }
|
und im main:
1 | while (1)
|
2 | {
|
3 | if (flag_10msec == 1)
|
4 | {
|
5 | flag_10msec = 0;
|
6 | // code durchfuehren
|
7 | }
|
8 |
|
9 | }
|
Allerdings wird der Interrupt nicht ausgelöst.
Wenn jemand eine Idee hat warum, bitte posten.
Vielen Dank
Peter