Forum: Mikrocontroller und Digitale Elektronik Serielle Schnittstelle Polling/Interrupt


von tomml (Gast)


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

von Rolf Magnus (Gast)


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.

von crazy horse (Gast)


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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.