mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Eigenen Interrupt


Autor: Wredo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich brauche bei einem Atmel-Controller-Programm einen eigenen
Interrupt, den ich aufrufen kann, der dann so funktioniert, wie z.B die
Timer- oder SPI-Interrupts oder so. Ich müsste also per Hand irgendwie
ein Flag setzen, so dass eine Interruptroutine darauf reagiert. Diese
Routine müsste dann auch mit eine Priorität versehen werden! Wie macht
man das am besten?

mfg
Wredo

Autor: Simon Küppers (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wodurch soll der Interrupt ausgelöst werden?

Autor: Sven Bohner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schreibe eine normale funktion, die von einem anderen interrupt nicht
unterbrochen werden kann...

bsp:

void deineFunktion(parameter)
    cli();    //global interrupts ausschalten
    ....dein code
    sei();    //global interrupts einschalten
}

Autor: Wredo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
interrupts ausstellen geht leider nicht, da zwei andere Interrupts noch
wichtiger sind. Ich muss irgendwie eine Funktion selber aufrufen, die
höher priorisiert ist, als andere Interrupts, aber die beiden anderen
nicht beeinflusst.

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für ein Atmel-Controller ist das denn?

8051, AVR, ARM?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo.

wenn wir mal unterstellen, daß es sich um einen avr handelt, dürftest
du schwierigkeiten mit der prioritätenvergabe haben. die ist da ja
fest.
je nachdem, wie hoch deine höherprioren interrupts angesiedelt sind,
müßtest du eben den "benutzerdefinierten" interrupt unterhalb davon
generieren, z.b. mit einer ad-wandlung, oder starte einen timer, der im
nächsten zyklus überläuft...
die antwortzeit vom "auslösewunsch" bis zum sprung in die
interruptroutine erhöht sich natürlich entsprechend.

gruß

michael

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei einem AVR läßt sich ein Software-Interrupt generieren, indem man
einen ext. Interrupt definiert und dann den PIN als Ausgang deklariert.
Wenn dann dieser Ausgang einen Logikpegel wechselt (z. B. von High auf
Low, wenn so deklariert), dann wird eine Int-Routine angesprungen.
MW

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.