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
> 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.