mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Full-Duplex UART auf ATmega32


Autor: Jakob Keres (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hat jemand schon mal einen Full-Duplex UART programmiert? Ich habe
bisher nur Informationen zu Half-Duplex gefunden. Meiner Meinung nach,
sollte Full-Duplex mit wenig mehr Aufwand ebenfalls möglich sein.
Oder täusche ich mich?

Gruß
Jakob

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meinst Du eine SW-UART ?

Die HW-UART ist immer Full-Duplex, d.h. Senden und Empfang sind
getrennt, lediglich die Baudrate ist für beide die selbe. Bzw. beim
8052 kann man auch die getrennt einstellen.


Peter

Autor: Jakob Keres (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> meinst Du eine SW-UART ?

Oh sorry. Ja, den meine ich. Die USART-Schnittstelle habe ich schon
verbraucht.

Gruß
Jakob

Autor: cazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht, aber nur für niedrige Baudraten, bei 9600 wirds schon kritisch,
wenn der MC auch sonst noch was zu tun hat.
-such dir einen MC mit 2 UARTs
-strick eine SPI-UART (www.maxim-ic.com) dran.
-programmiere einen Tiny2313 als SPI-UART

Autor: Jakob Keres (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe schon, der SW-UART muss weg. Wird dann wohl auf den MAX3100
hinauslaufen. (Den meintest du doch?)
Danke schön.

Jakob

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Full Duplex in SW geht wohl:

Nimm den Captureinterrupt zur Starterkennung und den Compareinterrupt
um danach die Bits abzutasten.
Und den anderen Compareinteruppt nimmst Du zum Senden (immer set on
compare bzw. clear on compare je nach Sendebit auswählen).

Damit ist das ganze schön jitterfrei.

Andere Interrupts dürfen aber nicht länger als 1 Bitzeit blockieren.
Bei 38,4kBaud und 16MHz sind das 416 Zyklen, sollte also gehen.


Peter

Autor: Jakob Keres (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Andere Interrupts dürfen aber nicht länger als 1 Bitzeit blockieren.
> Bei 38,4kBaud und 16MHz sind das 416 Zyklen, sollte also gehen.

Hmm, 416 für Senden und Empfangen. Aber bei 96k sind das nur noch 83
Zyklen pro Richtung. Wird wohl langsam ein bisschen knapp.

Zum Thema SPI-UART:
Woran erkenne ich, dass z.B. Max3100 all meine Daten verschickt hat und
ich ihn nicht mit Daten überflute, die er gar nicht mehr versenden kann?

Das SPI-Flag sagt mir ja nur, dass die Daten zwischen µC und Max
erfolgreich ausgetauscht wurden.

Gruß
Jakob

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Hmm, 416 für Senden und Empfangen. Aber bei 96k sind das nur noch 83
>>Zyklen pro Richtung. Wird wohl langsam ein bisschen knapp.

Ich muß schon lachen !
Da wird vorgerechnet, daß ein SW-UART durchaus mit 38,4kBd funktioniert
(was ich nur bestätigen kann) und daß genug Zyklen für den
'Hintergrund' bleiben.
Gleich wird eine neue Anforderung gestellt: 96kBd.
Wenn jemand jetzt ein passable Lösung für 96kBd vorbringen würde, wird
die Baudrate vielleicht auf 10MBd erhöht.
Immer wieder toll, was sich Leute einfallen lassen, um jede Lösung ad
absurdum zu führen :-)

Autor: Jakob Keres (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich muß schon lachen !
> Da wird vorgerechnet, daß ein SW-UART durchaus mit 38,4kBd
> funktioniert (was ich nur bestätigen kann) und daß genug
> Zyklen für den 'Hintergrund' bleiben.
> Gleich wird eine neue Anforderung gestellt: 96kBd.
> Wenn jemand jetzt ein passable Lösung für 96kBd vorbringen
> würde, wird die Baudrate vielleicht auf 10MBd erhöht.
> Immer wieder toll, was sich Leute einfallen lassen, um jede
> Lösung ad absurdum zu führen :-)

Ich glaube, da hast du nicht alles ganz aufmerksam gelesen. Eigentlich
wollte ich zu Anfang nur wissen, ob SW-Full-Duplex-UART was
prinzipielles im Wege steht, bis Peter schrieb, 38k gingen. Ich hätte
aber gern 96k. Das war schon immer so, hatte ich aber nicht erwähnt.
Also, falls due mir ne tolle Lsg. dafür anbietest: Immer her damit!
Schneller soll's bestimmt nicht werden :)

Ansonsten wäre ich jetzt wieder beim Thema ext. SPI/UART, und wie ich
den Datenfluss handhabe.

Viele Grüße
Jakob

Autor: hans dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
super 166 zyklen für jedes bit bei 16 Mhz ist doch schon, dass kann man
ja fast noch in hochsprache schreiben!
Ansonsten kann man das ja noch in assembler schreiben, dass sollte dann
noch reichlich zeit für den rest lassen.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Ich hätte aber gern 96k."

Naja, die wichtigsten Sachen schreibt man ja auch nicht erst im 7.
Post.

Die Software-UART sollte man auch immer für die kleinere Baudrate
benutzen.


Ich glaub, die Maxims sind auch nicht gerade billig, da könnte ein
ATTiny2313 als SPI-Slave ne echte Alternative sein.


Peter

Autor: cazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo, das war bei mir der k.o.-Grund. Wenn ich mich recht erinnere,
sollten die um die 8€/Stk bei 100 kosten. Da habe ich mir dann lieber
den Mega128 gegönnt, der kostete weniger als die nackte Zusatz-Uart.
Ich finde das Teil gut, aber der Preis stimmt hinten und vorne nicht.
Als Notanker in ein bestehendes System zu werfen - ok. Aber beim
Neudesign einzuplanen - ne.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.