Allgemeine µC-Kommunikationsfrage

Gast #309973
Lesenswert?
• ▲
▼
Hallo,
ich hätte da mal eine allgemeine Frage zur Kommunikation von µC zu µc
oder vom PC zum µC. Als Beispiel dabei möchte ich z.B. vom PC aus Daten
an einen Controller schicken der die Daten an ein Grafik-LCD
weiterleitet.
In Frage käme da folgender Ablauf:

a) Der PC fragt ab, ob der Controller bereit zum Empfang ist und
schickt dann alle Daten komplett rüber. Der µC legt alle Daten in einem
Puffer ab und gibt sie erst nach Beendigung der kompletten Übertragung
an das Display aus.

b) Der PC schickt eine kleine Datenmenge an den Controller, dieser
leitet die Daten sofort an das Display weiter. Hat er den Datenteil
weitergeleitet meldet er dem PC dass er bereit für weitere Daten ist.
Die läuft so weiter bis alle Daten übertragen sind.

Wegen des geringen RAM-Speichers eines AVRs käme wohl eher b) in
Frage.
Gibt es evtl. noch andere/bessere Übertragungsabläufe?
Gast #309974
Lesenswert?
• ▲
▼
Ich denk die Übertragung ans LCd wird deutlich langsamer sein
als die Kommunikation per RS232, der
µC sollte es schaffen die Daten schneller an das Display
zu schaufeln als sie vom PC her kommen.
Ich kann nur das umgekehrte Problem,
das nämlich der PC deutlich langsamer als der µC ist
und der dann auf nen Acknowledge vom PC wartet bis
er weitere Daten senden kann.
Gast #309975
Lesenswert?
• ▲
▼
>Ich denk die Übertragung ans LCd wird deutlich langsamer sein
>als die Kommunikation per RS232, der
Also ist das LCD der Flaschenhals?

>µC sollte es schaffen die Daten schneller an das Display
>zu schaufeln als sie vom PC her kommen.
Nee, der PC ist der Engpass?

>Ich kann nur das umgekehrte Problem,
Umgekehrt????
Ich blick nichtmehr durch ;)

>das nämlich der PC deutlich langsamer als der µC ist
>und der dann auf nen Acknowledge vom PC wartet bis
>er weitere Daten senden kann.

Ausprobiert habe ich es nicht, aber wenn die Baudrate hoch genug ist
müsste doch das LCD den Flaschenhals darstellen.

Ich meine RS232 und das XON/XOFF Protokoll sollten bestens dafür
geeignet sein.

Gruß, Feadi
Gast #309976
Lesenswert?
• ▲
▼
ja, hab mich da verschrieben, hast recht ...
der PC ist der Flasachenhals definitiv.
kommt allerdings auch auf das Display an,
vor allem dem Kommunikationsweg.
parallel oder serielle Datenübertragung?
Wenn ich Dich recht verstanden hab hat der
µC selbst keine REchenoperationen durchzuführen
sondern die Daten nur durchzuschaufeln.
Ich denk das schafft er locker zwischen den
uart Daten.
Wichtig dabei: Hardware UART, die unabhängig vom
Code läuft, dann musste nur noch den Buffer abfragen
ob n Zeichen drinn liegt und das in Variable
übernehmen die dann direkt ans LCD weiter geht,
während die Hardware UART schon fürs nächste Zeichen
bereit ist.
Wenn das Display z.B. am Hardware SPI hängt
brauchste nur das eingegangene Zeichen von der
Hardware Uart an dei Harware SPI schicken,
den Rest macht der µC hardwaremäßig alleine
und Dein Programm kann derweil däumchen drehen
bis wieder was im Empfangsbuffer liegt.
AVR mit 8 MHz Quarz über 38400 baud schafft das
denk ich locker.
Gast #309977
Lesenswert?
• ▲
▼
Was meinst du mit "Hardware UART"? Bei einem AVR mache ich doch alles
in Software. Der Puffer ist doch maximal 1 Byte. Darauf kann ich zwar
z.B in einem Receive-Interrupt reagieren, aber in einen größeren
Empfangspuffer muss ich es doch selber kopieren.
Oder meinst du was anderes?
Gast #309978
Lesenswert?
• ▲
▼
richtig, die harwaremäßig eingebaute UART hat
nen Empfangsbuffer von einem Zeichen und
kann einen Interrupt auslösen.
Aber den Empfang eines Zeichens und das Ablegen
im Empfangsbuffer brauchste dem nicht extra
zu verklickern, das macht die UART wenn sie
richtig konfiguriert ist ohne Dein zutun
und ohne Bedarf an Code.
Mann könnts als Multitasking im kleinen bezeichnen.
Du Musst dann nur Deinem Programm beibringen:

Wenn da ist Zeichen dann schicke Zeichen nach dort.

Und das wars dann schon. Wenn Du z.B. nen ATMega verwendest
kannste das so machen. Es gibt aber auch kleinere Bausteine
z.B. unter den Tinys, die haben keine Hardware-UART.
Da muss man dann eine Softwareuart basteln, die dann
einen beliebeigen I/O-Pin für die dann verwendet.
Da ist dann der Käfer mit der UART schon ziemlich beschäftigt,
dann wirds vom Timing her schon etwas verzwickter.
Persönliche Seite #309979
Lesenswert?
• ▲
▼
@ Thomas
siehe Application Note von ATMEL:
http://www.atmel.com/dyn/general/advanced_search_results.asp?device=1&tools=1&faqs=1&datasheets=1&appNotes=1&userGuides=1&software=1&press=1&articles=1&flyers=1&checkAllReference=1&target=software%20uart

Es ist generell möglich, irgendwelche Pins als UART zu nutzen, wenn man
diese als SoftUART ausführt.
Hardware mässig sind bei den meisten AVRs 2 Pins für den UART
vorgesehen.

Gruß
Marc

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.