www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit Interrupt


Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich habe ein keleines Problem mit Interrupts.
Also, von der Uni aus, arbeiten wir grad mit dem Asuro in Assembler. 
Jetzt ist die Aufgabe, in einer ISR (INT1) einen SLEEP Modus zu 
aktivieren (Idle), aus dem der µC durch ein Timer Overflow Interrupt 
wieder aufgeweckt werden soll, aber das Ganze halt wie gesagt innerhalb 
der ersten ISR (INT1). (Wozu das gut sein soll ist mir auch ein Rätsel, 
aber die wollen das so...)
Problem ist, wenn ich jetz in der INT1 ISR die externen Interrupts 
deaktiviere um dann mit SEI alle anderen Interrupts wieder global zu 
aktivieren, damit der Timer Overflow Interrupt den µC wieder wecken 
kann, funktioniert von Anfang an gar kein Interrupt mehr. Also Programm 
geflasht, Kiste angeschmissen und er reagiert auf gar keinen Interrupt 
mehr, er kommt noch nciht mal zu dem Punkt wo ich das SEI in der ISR 
stehen hab. Sobald ich das SEI aus der ISR wieder rausnehme 
funktionieren danach alle Interrupts wieder.
Hab schon im Datenblatt usw. nachgeschaut, aber bin da nicht wirklich 
schlau geworden. Wäre super wenn mir da jemand den entscheidenen Tip 
geben könnte :)
danke schon mal... und LG,
Sven T.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> aber das Ganze halt wie gesagt innerhalb der ersten ISR (INT1).
Also willst du einen Interrupt in einer Interruptroutine zulassen?

> er kommt noch nciht mal zu dem Punkt wo ich das SEI in der ISR
> stehen hab. Sobald ich das SEI aus der ISR wieder rausnehme
> funktionieren danach alle Interrupts wieder.
Poste doch mal deinen Code. Sonst ist das Stochern im Trüben...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sven (Gast)

>wieder aufgeweckt werden soll, aber das Ganze halt wie gesagt innerhalb
>der ersten ISR (INT1). (Wozu das gut sein soll ist mir auch ein Rätsel,
>aber die wollen das so...)

Dann sag den Jungs mal, die sollen sich mal ein paar Grundlagen 
reinziehen und nicht so einen Bockmist erzählen. Für die sinnvolle 
Nutzung des Sleep Mode muss die ISR nämlich wieder verlassen werden, 
vor allem weil der AVR keine verschachtelten Interrupts kann.

MFG
Falk

Autor: sebastians (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht willst du den SLEEP-Mode garnicht in der Interrupt-Routine 
aktivieren sondern nur ein Flag setzen, so dass die Hauptschleife wenn 
sie nichts mehr zu tun hat in den SLEEP-Mode geht?

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.