LEDs blinken nicht im Takt

Gast #268768
Lesenswert?
• ▲
▼
Hallo,

nachdem ich meine ersten Gehversuche mit dem ATMega8515 (auf STK500)
absolviert habe, widmete ich mich den Timern zu. Das Programm, welches
ich beigefügt habe, hat den simplen Auftrag, bei einem Overflow ein
Interrupt auszulösen, und den PortB Zustand zu invertieren. Die
Realisierung erfolgt über den Timer0. Eigentlich easy.

Problem: Bei derzeitiger Einstellung sollen alle LEDs an PortB mit
einer Freq. von 7Hz leuchte (also deutlich zu erkennen). Interner
Oszillator bei 1MHz, per Fuse eingestellt.

Das Problem ist, dass nicht alle LEDs im Takt blinken. Erwartet hätte
ich ein synchrones blinken aller LEDs. Bei dieser Freq. leuchten die
LEDs 0 und 1 asynchron zu den anderen.

Kennt einer dass von euch?

MFG

Onur
Angehängte Dateien:
Gast #268769
Lesenswert?
• ▲
▼
Am Anfang fehlen die Interrupt-Vektoren (siehe Datenblatt). Bei einem
TOV0-Interrupt springt er irgendwo in den Code hinein. Es sei denn, Du
hast die Bytes am Anfang so abgezählt, daß die TOV0-Routine genau an
der richtigen Stelle beginnt...

Außerdem sieht Deine main-Loop seltsam aus: Du pollst das TOV0-Flag,
und falls es gesetzt sein sollte, läuft der Code unkontrolliert in die
ISR-Routine hinein. Ich weiß nicht genau, ob man in der Loop überhaupt
jemals ein gesetztes Bit vorfindet (der Interrupt dürfte dem immer
zuvorkommen), falls ja, dann wird wohl ziemlich schnell der Stack
überlaufen (wegen reti ohne zugehörigem call).

Am Ende das ret ist überflüssig.

MfG Olaf
Gast #268771
Lesenswert?
• ▲
▼
Hier hast du mal einen von meinen ersten "Gehversuchen", allerdings
mit dem ATMega8. Du musst nur die Include-Zeile anpassen (.INCLUDE
"m8515def.inc"), dann sollte das bei dir laufen.

Deine ISR ist schon richtig, sie wird nur nicht aufgerufen, weil du am
Anfang deines Programmes keinen Vektor definiert hast.
So etwa:
.org   $006
    rjmp ISR_TOV0  ;Timer0 OV
Damit sagst du dem Controller, er soll in deine ISR_TOV0 springen
sobald ein Timer0 Overflow auftritt.
Du musst deinen Programmstart allgemein etwas sauberer schreiben.
Angehängte Dateien:
Gast #268772
Lesenswert?
• ▲
▼
Hallo,

Ihr habt Recht. Das Grundgerüst meines Programms ist fehlerhaft. Beim
Programm selber habe ich mich eigentlich an das Applikationssheet von
Atmel gehalten.

Naja, sind noch Gehversuche. Ich hoffe dass ich die LEDs synchron zum
blinken bekomme.

MFG

Onur

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