Guten Tag!
Darf ich was fragen? Ich komme bei einem Problemchen einfach nicht
weiter.
Pollin-Evaluation-Board, Atmega32, Fusebits korrekt gesetzt, 16MHz-Quarz
und folgender Mini-Code:
1 | #define F_CPU 16000000UL
|
2 | #include <util/delay.h>
|
3 | #include <avr/io.h>
|
4 | #include <avr/interrupt.h>
|
5 |
|
6 |
|
7 | ISR(TIMER1_COMPA_vect)
|
8 |
|
9 | {
|
10 | PORTD^=(1<<PD5); // LED schalten mit XOR
|
11 |
|
12 | }
|
13 |
|
14 | int main(void)
|
15 |
|
16 | {
|
17 |
|
18 | DDRD |= (1<<PD5); // Pin 5 an PORTD auf Ausgang
|
19 |
|
20 |
|
21 | TCCR1B |= (1<<WGM12) | (1<<CS12); //CTC und Vorteiler auf 256
|
22 | TIMSK |= (1<<OCIE1A);
|
23 | OCR1A = 31249; // 1s bei 16MHz
|
24 | sei();
|
25 |
|
26 | while(1)
|
27 | {
|
28 | // x-beliebige Routine
|
29 | }
|
30 | }
|
Kein Signal an PD5 ! Kontrolliert auch am Oszilloskop.
Wenn ich den Vorteiler auf 1024 setze kommt dasselbe in Grün raus:
1 | #define F_CPU 16000000UL
|
2 | #include <util/delay.h>
|
3 | #include <avr/io.h>
|
4 | #include <avr/interrupt.h>
|
5 |
|
6 |
|
7 | ISR(TIMER1_COMPA_vect)
|
8 |
|
9 | {
|
10 | PORTD^=(1<<PD5); // LED schalten mit XOR
|
11 |
|
12 | }
|
13 |
|
14 | int main(void)
|
15 |
|
16 | {
|
17 |
|
18 | DDRD |= (1<<PD5); // Pin 5 an PORTD auf Ausgang
|
19 |
|
20 |
|
21 | TCCR1B |= (1<<WGM12) | (1<<CS10)|(1<<CS12); //VT auf 1024
|
22 | TIMSK |= (1<<OCIE1A);
|
23 | OCR1A = 7812; // 1s bei 16MHz
|
24 | sei();
|
25 |
|
26 | while(1)
|
27 | {
|
28 | // x-beliebige Routine
|
29 | }
|
30 | }
|
Welchen brutalen Anfängerfehler mache ich da? Komme einfach nicht
dahinter.
Ich mag nicht mit _delay_ms blinken! ;-)
Gruss
Gerd