Hallo, ich habe folgendes Problem mit meinem ATMega32@16MHz: Ich versuche mit Bascom ein 1MHZ-Signal zu erzeugen. Wenn ich einfach dauernd einen Pin toggle, komme ich auf ca. 1,1 MHz (bei 16MHz externer Quarz). Wenn ich jetzt einen Timer überlaufen lasse und per Interrupt in eine Toggle-Sub springe komme ich niemals über 64 kHz. Egal, ob ich das mit einem 8-Bit oder einen 16-Bit Timer mache und ihn nur um eins hochzählen lasse bis zum überlaufen (also auf 254 oder 65534 setze). Die Frequenz kommt niemals über die besagten 64kHz. Ich habe den Prescaler selbstverständlich auf 1 gesetzt Habe ich einen Denkfehler oder fehlt mir nur eine Information, die alles erklärt? Danke für die Hilfe Samm
@ samm (Gast) >ich habe folgendes Problem mit meinem ATMega32@16MHz: >Ich versuche mit Bascom ein 1MHZ-Signal zu erzeugen. Sportlich. Damit hast du für Port setzen, löschen und Rücksprung der Schleife gerade mal 16 Takte. Reicht, aber dann gent nix anderes mehr. >Wenn ich jetzt einen Timer überlaufen lasse und per Interrupt in eine >Toggle-Sub springe komme ich niemals über 64 kHz. Wenn wir mal einen Programmfehler ausschließen, müssen wir mal rechnen. 64 kHz / 16 MHz = 250 Takte. Pro Periode braucht man zwei Interrupts, jeweis zu setzten und und zum löschen, macht 125 Takte. Da BASCOM bekanntermassen beim Interrupt fast alle Register sichert, brauch es ca. 32 (Register) x2 (speichern und wiederherstellen) x2 (2 Takte für push/pop) Takte, macht 128. Passt. Wenn man so einen schnellen Takt erzeugen will, macht man das so oder so nicht in Software, sondern per Timer im CTC Modus und Output Compare Funktion.
Die ISR, Ansprung, Rücksprung zusammen mit Register auf Stack sichern und Rückholen benötigt Zeit. Somit kommst du nicht über die 64kHz. Mit 20MHz Quarz ging es etwas schnelle aber auch nicht weit über die 64kHz.
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.