Forum: Mikrocontroller und Digitale Elektronik Atmel8: Interrupt mit 8-Bit Timer0 geht nicht


von Konrad Schwarz (Gast)


Angehängte Dateien:

Lesenswert?

Hi Leute ..
Als NewBee bei Atmel hat man so seine Probleme ...
Das Board ist ein STK500 mit Atmel8
Der Externe Int0 und Int1 funktionieren prima mit den Tasten,
aber warum läuft der Timer nicht bzw generiert keine Interrupts bzw
warum wird inth1 nur vom Tastendruck und nicht zusätzlich zyklisch vom
Timer-generierten Interrrupt angesprungen ?

Da fehlt wohl irgendetwas?
Danke schon mal für die Hilfe.

Konrad

von Sonic (Gast)


Lesenswert?

Wo hast du denn deine Timer-Overflow-Interrupt-Routine?

von Karl heinz B. (kbucheg)


Lesenswert?

> aber warum läuft der Timer nicht bzw generiert keine Interrupts bzw
> warum wird inth1 nur vom Tastendruck und nicht zusätzlich zyklisch
> vom Timer-generierten Interrrupt angesprungen ?
>
> Da fehlt wohl irgendetwas?

Eigentlich nicht.
Sollte so funktionieren. Auch in der Simulation läuft das
sauber durch.

von Konrad Schwarz (Gast)


Lesenswert?

Ich denke das ist der Interrupt Vektor 10 ..
Zum test springt sowohl der externe Interrupt1 und der Timer-Overfl.Int
nach inth1: ??
Angepringen über zeile 12:
    rjmp inth1    ;10 TC0 overflow
Sollte zumindest ..

von johnny.m (Gast)


Lesenswert?

Also ich sehe da auch keine Probleme. Sollte eigentlich funktionieren.
Interrupt-Vektor-Nummer stimmt auch. Welche Taktfrequenz hast Du denn?
Passiert an Port B gar nichts ohne Tastendruck?

von Sonic (Gast)


Lesenswert?

'cli' und 'sei' in den Interrupt-Routinen kannst du dir sparen. Der
'cli' wird beim Auslösen eines Interrupts sowieso ausgeführt und beim
Verlassen mit 'reti' wird das 'I'-Flag wieder gesetzt.

von Konrad Schwarz (Gast)


Lesenswert?

Nein, am Port B ändert sich nix ..
Der Zählerstand von r16 ändert sich nur bei Tastendruck ...

ähhh ( peinlich ) ich hae grade festgestellt, dass im Borad ein
ATMega8515L steckt .. ich hoffe, das mach nix .. die Port-Adressen für
die Interrupt Register sind gleich ?

dumme Frage zur Simmulation.
Simmuliert die auch die Interrupts ? Das tut Sie bei mir nicht ..

von Hannes L. (hannes)


Lesenswert?

Also ich kenne keinen "Atmel8". Falls Du den ATMega8 meinst, dann
vergleiche bitte mal die Interrupt-Sprungtabellen vom Mega8 und
Mega8515. Die sind nämlich unterschiedlich. Beim Mega8535 wäre es
gegangen, die ist identisch mit der des Mega8.

...

von johnny.m (Gast)


Lesenswert?

> die Port-Adressen für die Interrupt Register sind gleich ?

Die Adressen der Register im I/O-Space (wenn Du das mit
"Portadressen" meinst) sind vermutlich gleich. Aber die
Interrupt-Vektoren sind es nicht. Daher vermutlich auch das
"nicht-Funktionieren" des Timer Overflow-Interrupts. Der liegt beim
Mega8515 nämlich auf Vektor Nr. 8 (Adresse 0x07)

von Konrad Schwarz (Gast)


Lesenswert?

So allso ich bin schon ein bischen doof .. sorry ..
Es steckt ein ATMega8515 drin .. habe auch die Int-Vektorentabelle
korrigiert ... es geht zwar noch nix .. aber ich muß jetzt erst mal das
richtige handbuch runterladen .. vielleicht sind die Timer0 Register
auch anders .. sorry und danke nochmal ..

Konrad

von Hannes L. (hannes)


Lesenswert?

Aua...
Wieder Jemand, der ohne Datenblatt drauflos wurschtelt... Das tut
weh...

...

von daniel (Gast)


Lesenswert?

hi,
will den Thread nicht ewig in die Länge führen.
Habe Timer1 16bit auf dem ATmeg8 dieser soll im CTC Mode arbeiten.
habe COM1A0 im TCCR1A gesetzt und CTC1 im TCCR1B ebenso.
CTC Modus aktiviert und OC1A wird getoggelt beim compare mit OCR1Ax.
Muss ich noch im TIMSK das OCIE1A setzen oder wird der OC1A Pin auch
ohne dieses Bit getoggelt?
Ich weiss es ist keine grosse Mühe es zu setzen,aber kann man es auch
weglassen?
Vielen Dank

daniel

von daniel (Gast)


Lesenswert?

hi,
ps der Interruptvector für Timer 0 Overflow unss an die Adresse 0x007
.org 0x007
  rjmp  inth1

daniel

von johnny.m (Gast)


Lesenswert?

Wenn Du das OCIE1A setzt, musst Du auch eine Interrupt-Routine
definieren, sonst gibts bei jedem Compare einen Reset (vorausgesetzt Du
programmierst in C). Das setzen des Ausgangspins ist aber völlig
unabhängig davon, ob der Interrupt aktiv ist oder nicht.

von daniel (Gast)


Lesenswert?

@johnny.m
vielen dank

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
Noch kein Account? Hier anmelden.