mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Serielle Schnittstelle Polling/Interrupt


Autor: tomml (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Mach gerade eine Weiterbildung zum Elektrotechniker, und beschäftige 
mich gerade mit Mikrocontrollertechnik. Hätte hier mal eine Frage zur 
seriellen Schnittstelle. Und zwar, kann mir mal jemand den Unterschied 
zwischen Pollingverfahren und Interruptverfahren erklären???

Des weiteren würde mich interessieren, muss ich bei jedem der beiden 
verfahren mit dem Reload Modus arbeiten???

Vielen Dank für eure Hilfe

Grüße,
Tomml

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Und zwar, kann mir mal jemand den Unterschied zwischen Pollingverfahren
> und Interruptverfahren erklären???

Beim Polling fragst du regelmäßig bei der Schnittstelle nach, ob sie 
Daten hat (für Empfang) bzw. bereit ist, Daten aufzunehmen (für Senden). 
Etwa in der Art:

Hast du schon was?      - Nein
Hast du schon was?      - Nein
Hast du schon was?      - Nein
Hast du schon was?      - Nein
Hast du schon was?      - Nein
Hast du schon was?      - Ja
   -> bearbeiten
Hast du schon was?      - Nein
Hast du schon was?      - Nein
Hast du schon was?      - Nein

Du mußt dabei schnell genug fragen, daß keine Daten verloren gehen. Es 
ist in der Regel einfacher zu handhaben, verbraucht aber meist mehr 
Prozessorzeit. Je nach Anwendung machst du dabei eine Schleife, die 
nichts weiter tut, als ständig nachzufragen. Dann kann der Prozessor 
während dieser Zeit aber nichts anderes erledigen. Oder dein restliches 
Programm läuft in einer Schleife, die garantiert kurz genug ist, damit 
es reicht, einmal pro Durchlauf zu pollen. Dann läßt sich wenigstens 
noch etwas anderes tun.
Beim Interrupt-Verfahren bekommst du diese Zustände automatisch von der 
Schnittstelle mitgeteilt. Dein Prozessor werkelt so vor sich hin, dann 
kommt der Interrupt, und er unterbricht sein Programm da, wo es gerade 
ist und führt eine "Interrupt Service Routine" (ISR) aus, in der es z.B. 
empfangene Daten in einem Puffer ablegt bzw. zu sendende Daten aus einem 
Puffer an die Schnittstelle schickt. Nach der ISR wird das Programm da 
weitergeführt, wo es unterbrochen wurde. Du mußt also nicht explizit 
ständig nachfragen. Solange die Interrupts verhäntlismäßig selten 
auftreten, ist die Prozessorlast niedriger als beim Polling. Eine ISR 
hat aber einen gewissen Overhead, wodurch bei sehr hohen 
Interrupt-Frequenzen dann auch eine hohe Last entsteht oder Interrupts 
gar verloren gehen können.

> Des weiteren würde mich interessieren, muss ich bei jedem der beiden
> verfahren mit dem Reload Modus arbeiten???

Ich weiß nicht, was der "Reload Modus" ist. Evtl. ist das spezifisch für 
die Schnittstelle, mit der du arbeitest.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so ist das.
Beim Senden kann man evtl. auf Interruptsteuerung verzichten, da weiss 
man ja, dass man jetzt Senden will und macht dann u.U. auch gar nichts 
anderes.
Ist natürlich auch Verschwendung von Prozessorzeit, kommt also auf die 
Anwendung an, ob man das macht oder nicht.
Es gibt auch Anwendungen, wo Empfängerpolling kein Problem ist 
(Beispiel: der MC steuert ein Display an, dessen Anzeigedaten über die 
serielle Schnittstelle hereinkommen). Der hat sowieso alle Zeit der 
Welt, kein Problem.
Die Programmierung mit Interrupts ist zwar etwas aufwändiger, aber wer 
das nicht gebacken bekommt, sollte sich sowieso ein anderes Hobby 
suchen.
Ein anderes Problem kann aber auftauchen: Richtig sinnvoll wird das 
Ganze erst, wenn man je einen Sende- und Empfangsbuffer anlegt. Und 
dafür braucht man RAM, der gerade in ganz kleinen MCs schnell zum 
Flaschenhals werden kann.
Ein 8byte-Buffer bringt schon allerhand, aber der kostet:
-16byte eigentlicher Buffer
-4 Byte pointer (pro Buffer je einen Schreib- und Lesepointer)
-2 Byte counter
Hat man nun nur 64 Byte RAM, ist das ein gewaltiger Anteil...

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.