Problem mit AVR OCA Interrupt

Gast #759257
Lesenswert?

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
Gast #760306
Lesenswert?

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
Angehängte Dateien:
#762697
Lesenswert?

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.
Gast #762962
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren