www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Priorität von Interrupt setzen


Autor: thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich  habe ein kleines Programm gechrieben, in dem ich zwei 
Interrupt(senden und empfangen über UART) aktiviert habe.Jetzt will ich 
dass das Empfang eine höhe Priorität hat,dh wenn gleichzeitig Senden bzw 
Empfangenaktion sich treffen, soll zuesrt die Empfangenaktion 
gearbeitet.

thomas

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Möglicherweise solltest du verraten welchen Controller du verwendet 
hast...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du mußt in das IPRIR5-Register den Wert 9 schreiben. Dann klappt das!

Autor: experte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein, nein das war bei der letzten Revision noch so - jetzt muss das 
GRTC.8 Bit getoglled werden!!

SCNR

Autor: thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich benuzte der AT90CAN128

Autor: gespannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, das ist schwierig, geht nur in Basic. Kann ganz elegant mit 4 mal 
goto geloest werden.

Autor: thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen
bitte konnt ihr mehr Erklärungen für die Antwörte geben.

Danke

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das waren alles sehr kreative Aufforderungen, den Typ zu enthüllen.

AVRs haben keine wirklich priorisierten Interrupts. Wenn es sehr eilig 
ist, kann man bei weniger wichtigen Interrupts im Handler die Interrupts 
wieder freigeben, wenn es sich um welche handelt deren Ursache mit 
Ansprung des Handler bereits gelöscht ist (was bei UART Interrupts 
nicht der Fall ist). Geht natürlich zu Lasten des Stacks, und wenn 
sehr viele gleichzeitig eintreffen kann es interessant werden.

Autor: Kachel-Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> bitte konnt ihr mehr Erklärungen für die Antwörte geben.

Auf unüberlegt hingespuckte Fragen gibt es nunmal rotzige Antworten. Sie 
sollen Dir sagen, dass Du Deine Frage schlecht formuliert hast und Dich 
dazu erziehen, es beim nächsten mal besser zu machen.


Den AT90CAN128 kenne ich mangels Interesse an CAN nicht, ich vermute 
aber, das ist ein Mega128 mit CAN-Erweiterung, also ein AVR. AVRs haben 
aber keine echte Interrupt-Priorität, d.h. das Unterbrechen einer 
laufenden ISR durch einen anderen (höher priorisierten) Interrupt ist 
nicht vorgesehen. Es gibt zwar Möglichkeiten, in der ISR weitere 
Interrupts zu erlauben, aber dazu muss man schon sehr genau wissen, was 
man tut. Ich gehe deshalb nicht darauf ein.

Es wird Dir wohl nichts Anderes übrig bleiben, als Deine ISRs so kurz 
wie möglich zu halten (Daten sichern und per Merker beim Hauptprogramm 
anmelden) und die Verarbeitung der Daten in der Mainloop zu erledigen. 
Da es Dir vorrangig um RX und TX geht, solltest Du Ringbuffer dafür 
einrichten. Das schafft die Voraussetzung, die ISRs kurz halten zu 
können und beschleunigt die Datentransfer-Zugriffe der Mainloop (bzw. 
derer Routinen) sehr.

KH

Autor: micha r. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alternativ könntest du nen PIC nehmen.
Die können sowas.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.