Hallo, hab mal wieder ein Problem, ich möchte gerne den Timer0 beim Atmega8 verwenden, jedoch stimmt laut Oszi die gewünschte Zeit nicht, hab folgendes Programm, die Frequenz ist auf 16000000 MHz eingestellt (im AVRStudio unter Configartions Option), #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> void ini(); ISR(TIMER0_OVF_vect) { PORTB&=~(1<<PB0); } void ini() //Initialisierung { DDRD = 0x00; // PortD als Eingang DDRC = 0xFF; // PortC als Ausgang DDRB = 0xFF; // PortB als Ausgang PORTD=0xff; //Pullup aktivieren TCCR0|=(1<<CS00)|(1<<CS02); //Frequenz durch 1024 } int main() { ini(); sei(); //Interrupts aktivieren PORTC=0xFF; PORTB=0xFF; while(1) { _delay_us(1); PORTB|=(1<<PB0); _delay_us(1); TIMSK|=(1<<TOIE0); // Timer starten } return 0; } Ich messe mit dem Oszilloskop nur ca. jede 30ms ein kurze negative Flanke ... sollte aber bei 1/(16000000/1024) * 255 jede 16te Milisekunde ein Flanke ergeben! weiss jemand auch dazu was? thx tronic
Problem gelöst, ich hab die delay zeit auf 100uS gesetzt, der Oszi erkennt die Flanke somit besser und zeigt mir jede 16mS eine Flanke...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.