Forum: Compiler & IDEs Interrupt nur beim Empfang von Daten?


von Rene (Gast)


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é

von Justus S. (jussa)


Lesenswert?

Rene schrieb:

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

von Ahem (Gast)


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!

von STK500-Besitzer (Gast)


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.

von Karl H. (kbuchegg)


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.

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.