Forum: Mikrocontroller und Digitale Elektronik attiny1 / atmega0 Usart und Loop-Back-Mode


von Randy B. (rbrecker)


Lesenswert?

Bei den neuen Tinys und den neuen Megas (tiny1 und mega0) kann man bei 
den Usarts ja den Loop-Back-Mode einschalten. Dafür verwendet man dann 
nur noch den TX-Pin.

Kann man dann den RX-Pin beliebig anders verwenden?

Ich kann das dem DB nicht ganz eindeutig entnehmen. Und ausprobieren 
kann ich es auch nicht, da ich derzeit keinen hier herumliegen habe.

von c-hater (Gast)


Lesenswert?

Randy B. schrieb:

> Ich kann das dem DB nicht ganz eindeutig entnehmen. Und ausprobieren
> kann ich es auch nicht, da ich derzeit keinen hier herumliegen habe.

Dann kauf' dir einen!

von Randy B. (rbrecker)


Lesenswert?

c-hater schrieb:
> Randy B. schrieb:
>
>> Ich kann das dem DB nicht ganz eindeutig entnehmen. Und ausprobieren
>> kann ich es auch nicht, da ich derzeit keinen hier herumliegen habe.
>
> Dann kauf' dir einen!

Die Antwort passt gar nicht zu Dir!

Anscheinend weißt Du es selbst nicht.

von c-hater (Gast)


Lesenswert?

Randy B. schrieb:

> Anscheinend weißt Du es selbst nicht.

Das ist völlig korrekt.

Wenn ich aber so ein Teil verwenden wollte, würde ich mir einen kaufen 
und es dann sehr bald wissen.

Also selbst genau so vorgehen, wie ich es dir empfohlen habe.

von STK500-Besitzer (Gast)


Lesenswert?

Hast du mal einen Link zu einem Datenblatt des passenden Chips?

von Dieter R. (drei)


Lesenswert?

Ich kann hier nur vom ATtiny Series 1 sprechen und da auch gerade nicht 
direkt etwas zur Frage beisteuern, bloß generell:

1. Nimm ein Demo-Board, da gibt es billige von Atmel, und probier es 
aus.

2. Wenn es geht, freu dich. Wenn es nicht geht, melde dich wieder, dann 
müssen wir mal suchen. Gerade im Bereich RxD/TxD splitten gibt es 
(mindestens) einen nicht dokumentierten Bug (der aber nicht direkt mit 
dieser Frage etwas zu tun hat, nur zur Vorsicht, dass nicht alles so 
funktioniert, wie es im Datenblatt steht):

24.3.2.3.2 Disabling the Transmitter
A disabling of the transmitter will not become effective until ongoing 
and pending transmissions are completed; i.e. when the Transmit Shift 
register and Transmit Buffer register do not contain data to be 
transmitted. When the transmitter is disabled, it will no longer 
override the TxDn pin, and the pin direction is set as input 
automatically by hardware, even if it was configured as output by the 
user.

Disabling the transmitter is insufficient. The TXCIF flag has to be set 
explicitly in order to re-enable the output.

If USART_RXEN is also enabled and disabled, the problem is gone and 
everything behaves as expected. So apparently this bug would only appear 
in a USART TX-only system, not in a USART TX+RX system.

von S. Landolt (Gast)


Lesenswert?

Da im 'megaAVR® 0-series'-'Family Data Sheet' "For example, the One-Wire 
Half-Duplex mode is useful when low pin count applications are desired." 
steht, ist stark zu vermuten, dass der RxD-Pin frei wird, sonst ergäbe 
dieser Satz doch keinen Sinn, oder?

von S. Landolt (Gast)


Lesenswert?

PS:
Falls wirklich Interesse besteht und die Antwort Zeit hat, könnte ich es 
bis vielleicht morgen abend an einem ATmega4809 ausprobieren.

von Peter D. (peda)


Lesenswert?

Randy B. schrieb:
> Ich kann das dem DB nicht ganz eindeutig entnehmen.

Ja, bei den neuen gibt es ein extra "megaAVR 0-series Family Data 
Sheet", d.h. es steht nicht mehr alles im Datenblatt.

Darin findet man dann die Information:
"One-Wire mode is enabled by setting the Loop-Back Mode Enable (LBME) 
bit in the USARTn.CTRLA register. This will enable an internal 
connection between the TXD pin and the USART receiver, making the TXD 
pin a combined TxD/RxD line. The RXD pin will be disconnected from the 
USART receiver and may be controlled by a different peripheral."

: Bearbeitet durch User
von Randy B. (rbrecker)


Lesenswert?

Vielen Dank für all die Zitate aus den DB'en: die hatte ich ja alle 
schon gelesen. Wie auch immer: es fehlt darin das Definitive.

Und ja: ich habe 4808 bzw. 4809 zu Hause liegen. Aber bin gerade 
beruflich unterwegs, deswegen in meinem obigen Post "ich habe gerade 
keinen hier herumliegen". Deswegen danke für den Hinweis, dass ich es 
ausprobieren solle ;-)

von S. Landolt (Gast)


Lesenswert?

Das "Definitive"?
Also für mich ist dieses "The RXD pin ... may be controlled by a 
different peripheral." aus Peter D.s Zitat eindeutig; und in den Errata 
finde ich auch nichts.

von Randy B. (rbrecker)


Lesenswert?

S. Landolt schrieb:
> Das "Definitive"?
> Also für mich ist dieses "The RXD pin ... may be controlled by a
> different peripheral." aus Peter D.s Zitat eindeutig; und in den Errata
> finde ich auch nichts.

In dem DB von 2018, was ich bislang verwendet habe, steht dieser Absatz 
nicht drin. Jetzt habe ich das DB erneut heruntergeladen mit Stand 2019, 
da steht es drin! Ok, das halte ich jetzt auch für eindeutig. Jetzt 
fehlt der Praxistest ...

von Veit D. (devil-elec)


Lesenswert?

Hallo,

laut meinen Englischkünsten widerspricht sich das in meinen Augen.

"One-Wire mode is enabled by setting the Loop-Back Mode Enable (LBME)
bit in the USARTn.CTRLA register. This will enable an internal
connection between the TXD pin and the USART receiver, making the TXD
pin a combined TxD/RxD line. The RXD pin will be disconnected from the
USART receiver and may be controlled by a different peripheral."

Zuerst wird gesagt das intern TxD und RxD gebrückt wird wenn man OneWire 
Modus aktiviert. Danach wird gesagt das der RxD Pin getrennt wurde und 
man ihn anderweitig verwenden kann. Passt nicht zusammen. Denn RxD ist 
ja intern mit TxD verbunden/gebrückt. Irgendwie nicht eindeutig für 
mich.

von Peter Petersson (Gast)


Lesenswert?

Veit D. schrieb:
> Zuerst wird gesagt das intern TxD und RxD gebrückt wird wenn man OneWire
> Modus aktiviert. Danach wird gesagt das der RxD Pin getrennt wurde

Nein, es wird gesagt, dass TxD (der PIN) mit der Empfangslogik des 
Prozessors verbunden wird. Dadurch wird RxD (der PIN) frei für andere 
Aufgaben.

Du hast zweimal RxD PIN verstanden wo erst von Empfangslogik und dann 
vom RxD PIN die Rede ist.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

Dank deiner Antwort und nochmaligen lesen habe ich es jetzt verstanden. 
Hatte tatsächlich falsch gelesen. :-(

von Randy B. (rbrecker)


Lesenswert?

Hier die "offizielle" Antwort von MicroChip:

“if I set the usart in loop-back mode, the manual says, that the RX pin 
isn't used.

The question is: is it possible to use the RX Pin in this case as a gpio 
oder analog input pin?”



Yes, your understanding is correct. When the USART in ATtiny412 is used 
in Loop back mode by setting LBME bit, the Rxd pin is not used and it is 
available as GPIO pin.

von Peter D. (peda)


Lesenswert?

Randy B. schrieb:
> the Rxd pin is not used and it is
> available as GPIO pin.

Dann stimmt also das "megaAVR 0-series Family Data Sheet".

von Randy B. (rbrecker)


Lesenswert?

Peter D. schrieb:
> Randy B. schrieb:
>> the Rxd pin is not used and it is
>> available as GPIO pin.
>
> Dann stimmt also das "megaAVR 0-series Family Data Sheet".

Auch der Praxis-Test ist positiv: Half-Duplex-Protokolle mit LBME und 
ODME geht sehr schön und man spart Pin und externe Beschaltung.

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.