Gast
#1357297
Hallo Ist es mit einfachen Mitteln möglich bei einem AVR und über UART angeschlossenen PC Befehle zu senden, zum Beispiel um Register zu setzen bzw abzufragen? Gruß Chaos
|
Anzeige
|
Atmega UART Befehle senden
Gast
#1357297
Hallo Ist es mit einfachen Mitteln möglich bei einem AVR und über UART angeschlossenen PC Befehle zu senden, zum Beispiel um Register zu setzen bzw abzufragen? Gruß Chaos
Gast
#1357307
Ja. Sicher. Mit einem Protokoll. Das ist eine Verfahrensweise wie man gesendete Daten auswertet.
Gast
#1357408
gibt es da aber bereits fertige Codes?
Gast
#1357742
Ja. Spass beiseite. Bemüht mann gooooogle oder die forensuche findet man hier einiges. Sogar im GCC-Tutorial für den AVR im bereich UART findet man entsprechende links. das einfachste ist, einfach das signal SIG_UART_RECV auswerten. bzw ne FIFO oder nen Puffer bauen.
Du definierstt dir einen Puffer, jedesmal, wenn die UART ein Zeichen empfängt, hängst du es an den puffer an und inkrementierst den Schreibzeiger. Am besten Pollst du nun oder, wenns nicht zu Komplex ist, bastelst du die Auswertung in die SIGNAL ISR mit rein. Pollen kommt aber IMHO (wirklich nur meine meinung!) am besten. Du prüfst nun, ob das zeichen rx_ptr-- == \n (oder was immer du als "kommando vollständig" haben möchtest) ist. wenn dies so ist, wertest du den Inhalt (abzgl. \n) aus und setzt rx_ptr wieder auf 0. d.h.
ich denke, so in etwa müsste es klappen. ich arbeite zwar beruflich viel mit c/c++, aber in der uC-Welt bin ich noch nicht allzulange zu hause. wie gesagt. das meiste findet man bei google...... Bastinator schrieb: > das einfachste ist, einfach das signal SIG_UART_RECV auswerten. > bzw ne FIFO oder nen Puffer bauen. Das ist schon gar nicht mal so verkehrt. > // Do some fancy stuff > if (buffer[rx_ptr-1] == '\n') > { Das geht aber mit Sicherheit schief. Schlag ihm keinen Ringbuffer vor, wenn du ihn noch nicht beherrscht. Ein stinknormaler linearer Buffer in dem Zeichen bis zum '\n' gesammelt werden (in der ISR) tuts fürs erste auch und ist für den TO leichter zu beherrschen. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|