Gast
#715715
Hallo
Ich bekomme meinen Timer nicht zum laufen.
Vielleicht habe ich einen Denkfehler.
Habe schon mit diversen Beispielen verglichen aber nichts gefunden.
Kann mir jemand drüberschauen.
ATMega 16 mit interner Taktgeber 1MHz.
Ich bekomme keine einzige Flanke auf PIN 6
PIN 7 hat ein Signal.
#include <avr/io.h>
#include <avr/interrupt.h>
int main (void) {
DDRA = 0x00; //Port A als Input schalten
DDRB = 0x00; //Port B als Input schalten
DDRC = 0xff; //Port C auf Output schalten
DDRD = 0xff; //Port D auf Output schalten
PORTC = 0x00; //Port C löschen
PORTD = 0x00; //Port D löschen
//Timer
TCNT1H = 0xFC;
TCNT1L = 0x18;
TCCR1B |=(0<<CS12); //Einstellung des Vorteiler
TCCR1B |=(1<<CS11);
TCCR1B |=(0<<CS10);
TIMSK |=(1<<TOIE1); // Timer1 Interupt freigeben
sei(); //Globale Interrups zulassen
while(1)
{
PORTC ^= (1<<PB7);
}
return 0;
}
SIGNAL (SIG_OVERFLOW1) //Interuptvektor für Timer0
{
cli (); /Gloale interupt deaktivieren
TCNT1H = 0xFC;
TCNT1L = 0x18;
sei();
PORTC ^= (1<<PB6);
}