Hallo zusammen, ich verwende einen ATMega8535 und CodevisionAVR. Um Impulse in einer bestimmten Zeit auszuwerten, möchte ich mit dem Timer0 einen Sekundentakt erzeugen, weiss aber nicht wie die ganze Rechnerei funktioniert um genau auf 1 Sekunde zu kommen! Kann mir jemand helfen? Danke Manuwar
Es wäre ein Anfang, wenn du die Taktfrequenz posten würdest ... Ansonsten kann man je nach Verfügbarkeit mit einem Timer-Overflow-Interrupt bzw. dem Compare-Match-Modus arbeiten. Am besten wäre es, wenn du das Datenblatt erst einmal studierst und vielleicht auch hier einen Blick in die Codesammlung wirfst, dort liegt ein entsprechendes Projekt rum. Gruss Alex
mit dem Timer0 wirst du nie direkt auf 1 Sekunde kommen, selbst bei nur 1MHz Takt und Vorteiler 1024, max. Zählerstand 255 (8bit) kommst du nur auf ~0,25s. Also beispielsweise einen 10ms-Interrupt erzeugen und mit einer (static)-Variablen bis 100 zählen.
Hi du kannst den Timer1 im CTC-Modus dazu hernehmen. Vorteiler 1024, ins OCR1x-Register 9765 schreiben und Compare-Match-INT aktivieren. Schon hast du jede Sekunde deinen INT. Bei so langsamen Frequenzen bevorzuge ich aber auch die Methode von crazy horse. Also alle Millisekunde einen INT, in diesem dann eine Variable hochzählen und beim Erreichen des gewünschten Wertes die entsprechende Aktion ausführen. Dann kann man mit einem Timer nämlich alle Vielfache von 1ms erschlagen. Du wirst noch feststellen das man beim Programmieren von µC eigentlich nie genug Timer haben kann. Insbesondere wenn man noch den ein oder anderen PWM-Kanal nutzen möchte wirds schnell eng. Matthias
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.