Moinmoin
Ich will mich z.Z. mal wieder an nem Atmel probieren und dachte mir als
kleine Fingerübung erstmal nen Pin-Toggel zu machen.
Als PWM auch kein Problem, aber er springt einfach nicht in die ISR
rein.
Nachdem nix so funktioniert hat wie es soll hab ich mir einige
Codestücke zusammengesucht, aber auch das bringt keine Besserung.
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 |
|
4 |
|
5 | int main(void)
|
6 | {
|
7 | DDRB=0xFF;
|
8 | init_Timer0();
|
9 | sei();
|
10 |
|
11 | while(1)
|
12 | {
|
13 | asm("nop");
|
14 | }
|
15 | }
|
16 |
|
17 | void init_Timer0(void)
|
18 | {
|
19 | TCCR0A = 0x02; // CTC
|
20 | TCCR0B = 0x02; // Prescaler =8 -> fTimer = 125kHz
|
21 | OCR0A = 0x7D; // Comparevalue = 125
|
22 | TCNT0 = 0x00; // reset Timer
|
23 | TIMSK0 =0x4; // Enable compare interrupt
|
24 | }
|
25 |
|
26 |
|
27 | ISR (TIMER0_COMPA_vect)
|
28 | {
|
29 | PORTB=0xFF;
|
30 | }
|
Interessanterweise springt er nicht in die ISR, aber dafür ruft er
init_Timer0() mehrfach auf(wenn ich mit F5 einfach laufen lasse). wtf?
oO
Was überseh ich da?
Ach ja, Programmierumgebung ist Atmel Studio 6.