-
-
Erfahrener Benutzer
Begeisterter Techniker
atmega8 selbständige Frequenzausgabe - Aussetzer??
Hi,
ich habe ein Programm geschrieben, in dem der Mega 8 einen Lautsprecher ansteuert, der einen Ton ausgibt. Die Frequenz des Tons wird geändert indem man an einem Poti dreht (analogauswertung).
Das Programm ist realisiert mit
TCCR1A=&B01000000 'Pin OC1A/PB1 toggeln, kein PWM
TCCR1B=&B00001010 'Timer Reset bei Compare, Clock/8
Das Register COMPARE1A wird dann im Programm abhängig vom Analogwert auf 0-1024 gesetzt.
Das ganze funktioniert ansatzweise, der Lautsprecher gibt einen Ton aus, der sich auch in der Höhe variieren lässt, allerdigngs gibt es oft aussetzer, sodass der Beeper plötzlich ausgeht und für vielleicht 30 sekunden keinen Mucks mehr macht, dann plötzlich macht er wieder weiter als wäre nichts gewesen.
Insbesondere konnte ich beobachten tritt das auf, wenn man sehr schnell am Poti dreht. Ich habe auch mal ohne Lautsprecher das Oszi an den Port gehängt, genau das gleiche. Der Controller arbeitet aber ansonsten normal, das LCD was nebenbei noch angesteuert wird bekommt alle Informationen unmittelbar und ohne aussetzer.
Woran kann das also liegen? Kennt jemand Rat?
-
Erfahrener Benutzer
Roboter Experte
Hmm das klingt nach einem Fall von $Stack
Da läuft irgend was über und der Chip wartet auf den nächsten Überlauf oder was auch immer.
-
Erfahrener Benutzer
Roboter Genie
Sowas ähnliches hatte ich auch mal:
Ich hatte verwendete den Timer OverflowIRQ in C und es konnte passieren, dass ein Wert geladen wurde, der eine sehr kurze Zeit bis zum nächsten IRQ zur Folge hatte. Dadurch reichte diese Zeit nicht aus, die ISR abzuarbeiten, bevor der nächste IRQ anlag. Dadurch wurden die folgenden Befehle im Schneckentempo abgearbeitet. In meinem Fall hat es 5s gedauert, bis die Stelle im Code erreicht war, an der eine längere Zeitkonstante für den Timer geladen wurde.
Ein sehr hinterhältiger Fehler!
Es lag letztendlich daran, dass in C relativ viele Takte verloren gehen, wenn eine Subroutine aufgerufen wird. In Assembler war ich gewohnt, dass das nur wenige Takte sind.
Vielleicht ist es bei Dir ja ähnlich.
Gruß
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen