ATMEGA88 programmiert on BASCOM ( mit Inline Assembler ) Ich verwende den Timer0 als einstellbaren Taktgenerator. Diesen Takt führe ich Timer1 zu. Timer1 verwende ich zum messen der Zeit zwischen zwei Digitalimpulsen. Wenn der erste Impuls auftritt, wird Timer 1 auf Null gesetzt und der Takt freigeben Wenn nun der zweite Impuls auftritt, wird der Timer gestoppt und der Zählerwert ausgelesen. Ich schreibe nun den Zählerwert in das OCR1A-Register, setze den Timer1 auf 0 und geben dan Takt wieder frei. Gleichzeitig sende ich über die serielle schnittstelle diverse Daten zu einem PC. Wenn nun der Zählerstand den Wert des OCR1A-Registers erreicht, wird ein Interrupt ausgelöst der einen Digitalausgang schaltet. Dies funktionert am Schreibtisch auch einwandfrei. Wenn ich das ganze nun aber Vorort ausprobiere wird der Interrupt nicht ausgelöst, obwohl das restliche Programm einwandfrei funktionert. Da das restliche Programm einwandfrei funktionert, kann ich feststellen, dass der Timer1 beim ausmessen des Zeitabstandes der beiden Digitalsignale einwanfrei funktionert. Es wird nur der Interrupt nicht aufgerufen. Der uC hängt sich nicht auf und führt auch keinen RESET durch. Dies könnte ich feststellen. Ich habe die BrownOut-detection mit 4.3V aktiviert. Kann es sein, dass der uC beim Einschalten nicht ordentlich initialisert wird ? Bin nun echt schon am verweifeln. Könnt Ihr mir helfen ? Würde mir die entscheidente Hilfe auch was kosten lassen. hmg Mandi
hallo manfred. natürlich kann es es sein, dass der uC beim einschalten nicht ordentlich initialisert wird. du könntest z.b. vergessen haben, die timer-interrupts zu enablen (register TIMSK1). mit sicherheit kann ich das aber erst sagen, wenn ich den quellcode gesehen hab ;-) gruß michael
Hallo Michael >>du könntest z.b. vergessen haben, die timer-interrupts zu enablen >>(register TIMSK1). Am Schreibtisch im Büro funktioniert ja alles. Also sollte ich nichts vergessen haben ? Ich denke eher dass der uC keinen ordentlichen Reset beim PowerUp macht und daher stellenweise tut was er will ? Beiliegend der Code. Wäre echt toll wenn Du mal drauf schaun könntest. Ab Zeile 331 befindet sich der Bereich wo das Problem auftritt. Vielen Dank im voraus. hmg Mandi
Manfred Schön wrote: > ATMEGA88 programmiert on BASCOM ( mit Inline Assembler ) Nicht wundern, wenn wenig Antworten kommen. "BASCOM" klingt für viele hier wie "Zahnarzt" ;-). > Ich verwende den Timer0 als einstellbaren Taktgenerator. > Diesen Takt führe ich Timer1 zu. Da fängt's schon an wunderlich zu werden. Wozu dieses Konstrukt? > Timer1 verwende ich zum messen der Zeit zwischen zwei Digitalimpulsen. Normalerweise verwendet man für sowas Timer Capture. > Kann es sein, dass der uC beim Einschalten nicht ordentlich initialisert > wird ? Sowas kann man durchaus erreichen, beispielsweise durch falsche Startup-Time bei Quarz, schnarchlangsam ansteigende Spannungsversorgung. Üblicherweise sind solche Hardwareprobleme aber in Wahrheit Softwareprobleme.
Hallo Andreas Kaiser >Nicht wundern, wenn wenig Antworten kommen. "BASCOM" klingt für viele >hier wie "Zahnarzt" ;-). Hab mich auch schon über Bascom geärgert. Aber für Kleinigkeiten ist es einge güntige schnell zu erlernende Möglichkeit.... >> Ich verwende den Timer0 als einstellbaren Taktgenerator. >> Diesen Takt führe ich Timer1 zu. > Da fängt's schon an wunderlich zu werden. Wozu dieses Konstrukt? Der Zeitintervall kann sehr stark variieren. Muss bei kurzen Intervallen eine hohe Genauigkeit erreichen. Bei langen Intervallen ist die Genauigkeit nicht so wichtig. Es würde aber bei hoher Taktrate der Zähler überlaufen. >> Timer1 verwende ich zum messen der Zeit zwischen zwei Digitalimpulsen. >Normalerweise verwendet man für sowas Timer Capture. Wenn immer so einfach wäre. würde wohl auch mit Timer Capture gehen. Wäre aber eben nicht so einfach.... Habe mich daher für die Softwareversion entschieden. >> Kann es sein, dass der uC beim Einschalten nicht ordentlich initialisert >> wird ? >Sowas kann man durchaus erreichen, beispielsweise durch falsche >Startup-Time bei Quarz, schnarchlangsam ansteigende Spannungsversorgung. >Üblicherweise sind solche Hardwareprobleme aber in Wahrheit >Softwareprobleme. Auf ein Softwareproblem hab' ich auch erst getippt, da ich noch nicht soviel Erfahrung mit dem AVR habe. Da es aber am Schreibtisch einwandfrei läuft, kann's das wohl nicht sein. hmg Mandi
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.