Forum: Compiler & IDEs PC ->UART | Befehle schicken


von Björn Oswald (Gast)


Lesenswert?

Hallo zusammen,

ich will das mein AVR es merkt wenn der PC per UART einen Befehl
schick.
Aber der AVR darf nicht darauf warten, sondern es mitbekommen wenn
etwas kommt. Ansonsten soll er am Hauptprogramm weiterarbeiten.
Wie macht ich das?


Und zweitens wie kann ich in der Methode SIGNAL (SIG_OUTPUT_COMPARE1A)
eine Methode ausführen die länger etwas macht ohne das
SIG_OUTPUT_COMPARE1A auf das ende der aufgerufenen Methode wartet
sondern einfach weiterzählt??

Danke

von The Daz (Gast)


Lesenswert?

1. per interrupt
2. indem du die langlaufende im main() ausfuehrst und dort auf ein flag
wartest, dass vom compare signal handler bei Bedarf gesetzt wird. Im
main kannst du entweder loopen oder den uC per sleep auf den naechsten
interrupt warten lassen.

Um beides gleichzeitig zu machen musst du im main() nach dem return vom
sleep() immer pruefen, von woher der IRPT kam (UART / compare) und die
entsprechende Aktion starten.

von Björn Oswald (Gast)


Lesenswert?

danke für die Antwort!

Ich habe inzwischen die UART library von Peter Fleury gefunden.
Gibt es die library auch für die neueste WinAVR Version?
Weil beim kompielen kriege ich den Fehler:

      In file included from uart.c:26:
D:/WinAVR/avr/include/avr/signal.h:36:2: warning: #warning "This
header file is obsolete.  Use <avr/interrupt.h>."

von Charles (Gast)


Lesenswert?

Die Signal.h braucht nicht mehr includiert werden.
Also, einfach die betreffende Zeile löschen.

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.