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
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.
Ja, danke erstmal. Aber ohne diese Widerstände gibt es Probleme?? Was passiert mit dem 3,3V µC, wenn er auf der USART-Empfangsseite 5V bekommt?
welcher uC ist es den du mit 3,3V betreibst? die meisten pins der lpc900 serie von philips sind zum Beispiel 5V kompatibel...
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
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...
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
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
@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
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.