Hallo miteinand,
ich arbeite mich gerade ein wenig in OpenOCD/armgcc ein.
Gerade versuche ich mich an den Interrupts - das Ergebnis soll eine
blinkende LED sein. Allerdings schmiert der Controler anscheinend ab
sobald ich im CPSR das Interruptsystem freigebe (openOCD regiert einfach
nicht mehr)
Die gdb ausgabe:
1 | 34 myInit();
|
2 | (gdb) s
|
3 | myInit () at main.c:152
|
4 | 152 SCS = 0x1;
|
5 | (gdb) s
|
6 | 154 FIO0DIR |= 0x7; // pin P0.26 is an output, everything else is input after reset
|
7 | (gdb) s
|
8 |
|
9 | 157 mytimer->CTCR = 0x00; //switch to timer mode
|
10 | (gdb)
|
11 | 158 mytimer->PR = 0; // if a prescaler is needed - here it is
|
12 | (gdb)
|
13 | 159 mytimer->MR0 = 14745600; //Match register;
|
14 | (gdb)
|
15 | 160 mytimer->MCR = 0x3; // reset the timer and generate interrupt when matched MR0
|
16 | (gdb)
|
17 | 161 mytimer->TCR = 0x01; //enable timer
|
18 | (gdb)
|
19 | 164 VICVectAddr0 = (unsigned long)myInterrupt; // set interrupt vector in 0
|
20 | (gdb)
|
21 | 165 VICVectCntl0 = 4 | (1 << 5); // use it for Timer 0 Interrupt:
|
22 | (gdb)
|
23 | 166 VICIntEnable = (1<<4); // Enable Timer0 Interrupt
|
24 | (gdb)
|
25 | 169 asm volatile ("msr CPSR_c, #0x10|0x80 ");
|
26 | (gdb)
|
27 | 170 }
|
28 | (gdb)
|
Meine Konfiguration:
Debugger: Olimex ARM-USB-TINY
(http://www.olimex.com/dev/arm-usb-tiny.html)
Board: Olimex LPC-H2103 (http://www.olimex.com/dev/lpc-h2103.html)
Kann durchaus sein dass da noch Leichtsinnsfehler drin stecken.
Sourceode ist im Anhang.
Hoffe jemand hat ne Idee woran das liegen könnte - danke!