Hallo zusammen.
Nachdem ich mich durch x Datenblätter und einigen Beispielcode gequält
hab, bin ich trotzdem noch nicht dahintergekommen, warum mein Interrupt
nicht aufgerufen wird.
Der Code läuft auf einem STK600, ich verwende Atmel Studio 6.0.1996 SP2
und ein JTAG-ICE 3 am JTAG-Port des STK600.
Ist da irgendein offensichtlicher Fehler versteckt, der mir nicht
auffällt?
Danke schonmal für die Hilfe.
Grüße,
Andi
1 | #include <asf.h>
|
2 | void clock_init(void);
|
3 | void timer_init(void);
|
4 |
|
5 | void clock_init (void) // scheint zu funktionieren
|
6 | {
|
7 |
|
8 | OSC.CTRL |= OSC_RC32MEN_bm;
|
9 | while(!(OSC.STATUS & OSC_RC32MRDY_bm));
|
10 | CCP = CCP_IOREG_gc;
|
11 | CLK.CTRL = CLK_SCLKSEL_RC32M_gc;
|
12 | }
|
13 |
|
14 | void timer_init(void){
|
15 |
|
16 |
|
17 |
|
18 | PORTCFG.CLKEVOUT = PORTCFG_CLKOUT_PD7_gc; // Clockoutput an PD7! funktioniert!
|
19 |
|
20 | TCD0.PER = 4095;
|
21 |
|
22 |
|
23 | TCD0.CTRLA = TC_CLKSEL_DIV1_gc;
|
24 | TCD0.CTRLB = TC_WGMODE_SINGLESLOPE_gc;
|
25 | TCD0.INTCTRLA = TC_OVFINTLVL_HI_gc;
|
26 |
|
27 | PMIC.CTRL = PMIC_HILVLEN_bm;
|
28 |
|
29 | sei();
|
30 |
|
31 | }
|
32 |
|
33 | int main (void)
|
34 | {
|
35 | board_init();
|
36 | clock_init();
|
37 | timer_init();
|
38 |
|
39 | while(1){};
|
40 | }
|
41 |
|
42 | ISR (TCD0_OVF_vect)
|
43 | {
|
44 | PORTB.OUTSET = PIN1_bm
|
45 | PORTB.OUTCLR = PIN1_bm;
|
46 | }
|