Forum: Mikrocontroller und Digitale Elektronik BASCOM Problem bei INT0


von avrler Michi (Gast)


Lesenswert?

Hallo Forumsgemeinde,
hab hier ein kleines Problem => viell. auch nur ein Verständnisproblem.

Folgendes:
Ich hab am INT0 meines ATmega8515 ein rechteck Signal mit einer Frequenz 
von 1200 Hz. Bei jeder steigenden Flanke am INT0 möchte ich ein Bit aus 
einem Array (Y) an einem Portpin(B.3)ausgeben. wenn alle Bits (z=105) 
ausgegeben wurden soll er an einen anderen Programmpunkt springen. 
Allerdings klappt das irgendwie nicht.
Meine Fragen:
1. Arbeitet der Proz. die ISR komplett ab auch wenn in dieser Zeit ein 
neuer Impuls kommen sollte oder startet er wieder neu am Anfang der ISR?
2. Ich habe mal einen Codeausschnitt angehängt => viell. sieht ja jemand 
auf anhieb meinen wahrscheinlich dummen Fehler.

Vielen Dank schonmal.
Gruß
Michi

code:
1
ISR:
2
Portb.2 = 0
3
Z = Z + 1
4
Select Case Y(z)
5
   Case 0 : Portb.3 = 0
6
   Case 1 : Portb.3 = 1
7
End Select
8
if z=105 then goto sonstwas
9
10
Return
11
Return

von Johannes M. (johnny-m)


Lesenswert?

Ich kenn mich mit BASCOM nicht aus, aber wenn goto das macht, was ich 
vermute (nämlich irgenwohin springen, ohne eine Rücksprungadresse 
abzulegen), dann kann das nicht klappen.

Interrupt Handler sind beim AVR per Definition nicht unterbrechbar 
(solange man nicht explizit die Freigabe innerhalb des Interrupt 
Handlers erzwingt), da die Controller-Hardware das I-Bit im 
Statusregister beim Einsprung in den Interrupt-Vektor automatisch löscht 
und erst beim Beenden des Handlers (Return from Interrupt) wieder setzt. 
D.h. wenn während eines Interrupt Handlers ein weiteres 
Interrupt-Ereignis auftritt, wird zwar das Flag gesetzt, allerdings erst 
dann abgearbeitet, wenn der laufende Interrupt Handler abgearbeitet ist. 
Treten mehrere neue Ereignisse in dieser Zeit auf, gehen sie verloren, 
weil das Flag schließlich nur einmal gesetzt werden kann. Genau deshalb 
ist ein Interrupt Handler grundsätzlich so kurz wie möglich zu halten, 
was u.a. bedeutet, dass Unterprogrammaufrufe aus der ISR heraus zu 
vermeiden sind.

von avrler Michi (Gast)


Lesenswert?

Ok, wieder was gelernt,

Problem ist schonmal dass der Teil vor dem goto nicht funktioniert, 
zumindest nicht so wie er sollte.

Viell. weiß jemand hier Rat.

Danke schonmal

Gruß
Michi

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.