Interrupt nur beim Empfang von Daten?

Gast #1256151
Lesenswert?

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
Lesenswert?

>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
Lesenswert?

>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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren