USART mit 3,3V µC und 5V µC

Gast #347075
Lesenswert?

Hallo Leute,

ich habe mal wieder ne Frage.

Ich habe zwei Mikrokontroller, der eine wird mit 5V und 16MHz
betrieben, der andere mit 3,3V und 4,19 MHz. Ist es möglich eine
direkte USART-Verbindung zwischen diesen beiden Kontrollern
herzustellen? Oder muss eine Pegelwandlung von 5V auf 3,3V geschehen?

Wenn eine Wandlung nötig ist, dann reichen wohl zwei richtig
dimensionierte Widerstände.

Gruß und Freude
Thomas
Gast #347076
Lesenswert?

Sollte eigentlich mit nem Spannungteiler gehen. Du hast ja immer
gewissen Toleranzbereiche mit dem Pegel z.B. +-0,3V oder sowas. Wüsste
jetzt nicht warum das nicht klappen sollte. Wichtig ist halt nur dass
du das gleiche Bezugspotential hast.
Gast #347079
Lesenswert?

guck ins Datenblatt, dann weisst du es. Je nach Toleranzschwelle
verstirbt der Controller ungefragt wenn die anliegende Spannung um
einen in den Daten angegebenen Betrag die Versorgungsspannung
übersteigt.

bye

Frank
Gast #347080
Lesenswert?

Hallo Thomas,

eine Grundregel solltest du grundsätzlich beachten, die Spezifikationen
sind grundsätzlich einhalten.
Es ist einfach Blödsinn, wie solche Aussagen, das kann der schon ab die
paar Zehntel-Volt drüber.
Der Chip kann sie nicht ab, er wird irgendwann mal seinen Geist
aufgeben.
Überlast ist grundsätzlich schädlich!
3,3V-Technik arbeit mit den spezifizierten Pegeln und die 5V-Technik
mit den den dafür spezifizierten Pegeln, alles andere ist Pfusch in
höchster Vollendung...
Gast #347081
Lesenswert?

Ok, ist ein ATmega128 der mit 3,3V betrieben wird und ein ATmega168 der
mit 5V betrieben wird.

Aber ich habe es wohl im Datenblatt gefunden.
Ich bin davon ausgegeangen, dass die USART-Eingänge andere Toleranzen
haben, als die normalen PORTPINS.
Irren ist menschlich!!!

Auszug aus dem Datenblatt

Input Voltage High außer XTAL1 und /RESET beim ATmega128:
minimun -> 0.6 VCC
maximun -> VCC + 0.5V

bei VCC = 3,3V ergibt sich ein maximum von 3,8 V.

Also werde ich einen Spannungsteiler mit 22k und 39k Widerständen
verwenden.

Danke für eure Antworten
Thomas
#347082
Lesenswert?

Rx vom 5V zu 3.3V sollte nicht das Problem sein. Einfach
Serienwiderstand rein um den Strom in den 3.3V Eingang zu reduzieren,
alles andere macht dann die interen Inputptotection des AVRs.

Tx von 3.3V zu 5V dürfte da ein leichtes bischen diffiziler werden. Der
AVR erkennt ein High bei ca. 0.8Vcc also 0.8 * 5V = 4 Volt. Das ist laut
Datenblatt der Fall, ich habe aber die Erfahrung gemacht das er bei
3Volt immer noch sauber ein High erkennt.

Für erste Test also einfach in der Rx Leitung des 3.3V AVRs einen
Serienwiderstand (470 Ohm bis 1K) rein, und die Tx Leitung direkt
miteinander verbunden. Just my 2 cents :)

Gruß Hagen
Gast #347083
Lesenswert?

@Hagen

zwei Fragen:

1.)
Mit der Input Protection meinst du damit die zwei Dioden, die auf Seite
63 des ATmega128 Datenblatts dargestellt sind?

2.)
Wo steht den das mit den 0.8*Vcc? Im Datenblatt des ATmega168 ist von
mindestens 0.6 * Vcc die Rede. Siehe Datenblatt Seite 300 --> Vih

Gruß Thomas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren