Forum: Mikrocontroller und Digitale Elektronik LPC1768: Serielle Schnittstelle aus ISR heraus ansteuern?


von TheDoug (Gast)


Lesenswert?

Hi,

bevor ich mir da seltsame Probleme einfange, frage ich doch lieber mal 
nach: angenommen es ist kein Timingproblem, weil die zu übertragenden 
Daten nur sehr wenige sind, ist es dann prinzipiell möglich, bei einem 
LPC1786 (ARM Cortex M3) aus der PWM1-Interruptroutine heraus Daten an 
eine der seriellen Schnittstellen zu schicken oder fliegt mir da was um 
die Ohren?

Danke schon mal!

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Wozu ?

Die PWM-ISR legt die zu übertragenen Zeichen in den TX-Buffer ab, den 
die TX-ISR abarbeitet und die Zeichen Stück für Stück sendet, bis der 
TX-Buffer leer ist.

Alles nur etwas Software.

Der Code läuft immer in der uC und die angeschlossenen 
Hardware-Komponenten (SPI, UART, I2C, PWM...) arbeiten selbstständig vor 
sich hin und melden sich nur mal, wenn die Software wieder nachlegen 
muß.

Trennt das doch bitte zwischen Hauptprogramm(-Schleife), ISR und 
Hardware deutlich auf.

von Robert T. (robertteufel)


Lesenswert?

TheDoug schrieb:
> Hi,
>
> bevor ich mir da seltsame Probleme einfange, frage ich doch lieber mal
> nach: angenommen es ist kein Timingproblem, weil die zu übertragenden
> Daten nur sehr wenige sind, ist es dann prinzipiell möglich, bei einem
> LPC1786 (ARM Cortex M3) aus der PWM1-Interruptroutine heraus Daten an
> eine der seriellen Schnittstellen zu schicken oder fliegt mir da was um
> die Ohren?
>
> Danke schon mal!

Vorschlag:
Wenn Du die seriellen Daten mit PWM verkoppeln moechtest, dann setze 
doch in der hoeher prioren Routine (PWM?) ein anderes INT-request Flag 
per Software fuer den UART. Sobald PWM fertig ist UND nichts anderen 
hoeher priores ansteht geht die CPU dann in den Int fuer die serielle.

Uebrigens, es kommt nicht nur auf die Menge der Daten an sondern auf die 
Haeufigkeit. Wenn also Deine PWM Routine alle 1 usec aufgerufen wird und 
die serielle nur 1 Byte uebertraegt ist das viel kritischer als wenn die 
PWM Routine alle 1 msec aufgerufen wird und Du dann 100 Bytes 
uebertraegst.
Ich hoffe das macht Sinn!

Robert

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.