Interrupt nur beim Empfang von Daten?

Gast #1256151
Hallo Jungs,

ich bin gerade dabei das AVR GCC Tut durch zu ackern.
Hba da mal ne frage. weil ich den Empfang von Daten über den UART zZ nur 
mit einer while(1) schleife realisiere. Wäre doch besser immer einen 
Interrupt aus zu lösen wenn der vector USART_RXC_vect kommt oder? sonst 
ist der µC doch immer nur mit dem Empfang beschäftigt. Muss ich diesen 
Interrupt auch für das Senden des µC realisieren? Oder ist das nur beim 
Empfang so?

Noch ne Frage, wo finde ich ne Übersicht wo alle möglichen Signale (wie 
z.B. USART_RXC_vect) drin stehen auf die ein Interrupt reagieren kann?

Danke schonmal!

Mfg René
Gast #1256158
>Wäre doch besser immer einen Interrupt aus zu lösen wenn der vector 
>USART_RXC_vect kommt oder?
So ganz allgemein gesehen, ja.

>sonst ist der µC doch immer nur mit dem Empfang beschäftigt.
Nein. Die Zeichen kommen ja in Zeitabständen, die für den uC eher lang 
sind.
Er ist nur ständig damit beschäftigt das Status-Bit zu pollen.

>Muss ich diesen Interrupt auch für das Senden des µC realisieren?
Müssen, musst Du nicht.
>Oder ist das nur beim Empfang so?
Aber die Gründe die beim Empfang dafür sprechen, sprechen auch beim 
Senden dafür. Warum sollte das anders sein?

>Noch ne Frage, wo finde ich ne Übersicht wo alle möglichen Signale (wie
>z.B. USART_RXC_vect) drin stehen auf die ein Interrupt reagieren kann?
Datenblatt!
Gast #1256571
>Noch ne Frage, wo finde ich ne Übersicht wo alle möglichen Signale (wie
>z.B. USART_RXC_vect) drin stehen auf die ein Interrupt reagieren kann?

Da du den AVRgcc benutzt, solltest du auch die Doku zur LIB-C auf deinem 
Rechner haben. Da sind die Interrupt-Vektoren beschrieben.
Welche der MEGA32 zu bieten hat, findet sich im Datenblatt.
#1256593
>> Muss ich diesen Interrupt auch für das Senden des µC realisieren?
> Müssen, musst Du nicht.

Yep

>> Oder ist das nur beim Empfang so?
> Aber die Gründe die beim Empfang dafür sprechen, sprechen auch
> beim Senden dafür. Warum sollte das anders sein?

Im Prinzip: ja
Auf der anderen Seite ist die Sachlage nicht ganz symetrisch.

Beim Empfangen weiß das Programm ja nie, wann ein Byte hereinkommt.
Von daher müsste ständig gepollt werden, was man mit einem Interrupt 
umgehen kann.

Beim Senden hingegen weiß das Programm wann es etwas senden will und 
braucht nur in dieser Zeit das Senderegister pollen, ob es 
aufnahmebereit ist. Wenn das zeitlich kein Problem darstellt, weil 
andere Dinge auch noch zur gleichen Zeit ablaufen sollen, ist Pollen an 
dieser ein kleineres Problem als beim Empfang.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.