Schönen guten Abend, ich versuche auf dem AT2560 ein Time-Interrupt auszulösen. Beim meinem Vorgehen habe ich mich an http://www.engblaze.com/microcontroller-tutorial-avr-and-arduino-timer-interrupts/ orientiert. Leider wird das Interrupt nicht abgesetzt (die LEDS in der ISR Routine bleiben allesammt aus). Was ist zu ändern? Schönen dank, jo
1 | #include <avr/io.h> |
2 | #include <avr/interrupt.h> |
3 | #define TCCR0 _SFR_IO8(0x33)
|
4 | #define CS00 0
|
5 | #define CS01 1
|
6 | #define CS02 2
|
7 | #define WGM01 3
|
8 | #define COM00 4
|
9 | #define COM01 5
|
10 | #define WGM00 6
|
11 | |
12 | volatile uint8_t count; |
13 | int a=1; |
14 | int main( void ) |
15 | {
|
16 | |
17 | DDRL=0xff; |
18 | // initialize Timer1
|
19 | cli(); // disable global interrupts |
20 | TCCR1A = 0; // set entire TCCR1A register to 0 |
21 | TCCR1B = 0; // same for TCCR1B |
22 | |
23 | // set compare match register to desired timer count:
|
24 | OCR1A = 15624; |
25 | // turn on CTC mode:
|
26 | TCCR1B |= (1 << WGM12); |
27 | // Set CS10 and CS12 bits for 1024 prescaler:
|
28 | TCCR1B |= (1 << CS10); |
29 | TCCR1B |= (1 << CS12); |
30 | // enable timer compare interrupt:
|
31 | TIMSK1 |= (1 << OCIE1A); |
32 | sei(); // enable global interrupts |
33 | |
34 | |
35 | while( 1 ); |
36 | }
|
37 | |
38 | ISR(TIMER0_OVF_vect) |
39 | {
|
40 | //This is the interrupt service routine for TIMER0 OVERFLOW Interrupt.
|
41 | //CPU automatically call this when TIMER0 overflows.
|
42 | if(a=1){ |
43 | PORTL=0b00000111; |
44 | a=0; |
45 | } else { |
46 | a=1; |
47 | PORTL=0b00000000; |
48 | }
|
49 | }
|