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.