www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BASCOM Problem bei INT0


Autor: avrler Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:


ISR:
Portb.2 = 0
Z = Z + 1
Select Case Y(z)
   Case 0 : Portb.3 = 0
   Case 1 : Portb.3 = 1
End Select
if z=105 then goto sonstwas

Return
Return

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: avrler Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.