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
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
> meinst Du eine SW-UART ?
Oh sorry. Ja, den meine ich. Die USART-Schnittstelle habe ich schon
verbraucht.
Gruß
Jakob
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
Ich sehe schon, der SW-UART muss weg. Wird dann wohl auf den MAX3100 hinauslaufen. (Den meintest du doch?) Danke schön. Jakob
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
> 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
>>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 :-)
> 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
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.
"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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.