Forum: Mikrocontroller und Digitale Elektronik Erfahrung: Logik-Pegelhöhe bei verschiedenen Betriebsspannungen


von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

Theoretisch sollte die Antwort klar sein, aber hat zu folgendem jemand 
praktische Erfahrung?

zwei ATMega sollen über ein einfaches paralleles 3-Bit-Wort 
kommunizieren.
Aber:
Der erste läuft auf 5V, = sein High-Level
der zweite läuft auf 3.3V = sein High-Level.

Da 3.3 ja beim 5V-betriebenen bereits als High gezählt werden, sollte 
das ja kein Problem geben - andersherum ist es aber wie? Ungut? Egal? 
Wenn ich an den 3.3V-Mega ein 5V signal an den High-Impedance Input lege 
- nimmt er das einfach als logisches High und das wars? Oder gibts 
probleme?
In diesem Fall wären ja Spannungsteiler die einfachste Lösung.

Also: Kann ich die beiden so zusammenschalten oder nicht?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Alex v. L. schrieb:
> Wenn ich an den 3.3V-Mega ein 5V signal an den High-Impedance Input
> lege - nimmt er das einfach als logisches High und das wars?
> Oder gibts probleme?
Du verletzt die Maximalwerte aus dem Datenblatt.

Und dann beginnen die Schutzdioden zu leiten und du speist Strom aus dem 
5V-Portpin in die 3,3V versorgung ein. Mit ein wenig "Glück" bekommst du 
die dann auf 4,5V hochgezogen...
Abhilfe: mach einen Serienwiderstand oder einen Spannungsteiler zwischen 
den 5V Ausgang und den 3V Eingang. Mehr dazu im artikel Pegelwandler

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

Danke!

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

Habe den Artikel gelesen,
so wie es mir außerdem scheint wäre es einfacher wenn ich die Pegel an 
einer anderen Schnittstelle zum µC wandle - aber:

Diese Schnittstelle wäre dann die USART zu einem Bluetooth-Modul. Der µC 
läuft allerdings auf einem langsamen externen 32.768kHz Crystal. Sind 
Spannungsteiler da noch gut anwendbar? Oder sollte ich z.B. den MAX3378E 
nehmen?

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

Ach quark ist ja bidirektional also nichts mit Spannungsteilern - 
MAX3378E dann mittel der Wahl?

von ConvertsQuestionsToAnswers (Gast)


Lesenswert?

>... so wie es mir außerdem scheint wäre es einfacher wenn ich die Pegel an
>einer anderen Schnittstelle zum µC wandle - aber:

Wieso wäre das einfacher? (Womit ich nicht sagen will, das es nicht 
einfacher wäre, nur das wir das nicht nachvollziehen können).

Vielleicht zeigst Du mal einen Blockschaltplan mit den 
Versorgungsspannungen der jeweiligen Subsysteme.

Ganz allgemein kann man, so denke ich, folgendes sagen:

1. Der Spannungsunterschied ist im wesentlichen unbedeutend.
2. Ob Bi- oder Uni-direktional macht einen Unterschied.
3. Wie die Flankensteilheit sein muss, macht einen Unterschied.
4. Wie die Geschwindigkeit sein muss, macht einen Unterschied.

Das Beste wäre also, die Schnittstelle zur Pegelumsetzung zu wählen, die 
mit der geringsten Flankensteilheit, die geringste Geschwindigkeit 
erfordert. Desto billigere Transistoren/ICs und einfachere Schaltungen 
kannst Du verwenden.

Spannungsteiler gehen natürlich nur unidirektional. (Das ist Dir 
wahrscheinlich klar, aber man kann ja nie wissen).

von ConvertsQuestionsToAnswers (Gast)


Lesenswert?

>Ach quark ist ja bidirektional also nichts mit Spannungsteilern -
>MAX3378E dann mittel der Wahl?

Oh. Da habe ich zu langsam geschrieben.

Da gibt es noch mehr Möglichkeiten. Hängt, wie beschrieben von weiteren 
Parametern ab.

Z.B. das hier: http://m.eet.com/media/1144208/193193f1.pdf

Lies mal zur Einführung: 
http://www.mikrocontroller.net/articles/Pegelwandler

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Alex v. L. schrieb:
> Diese Schnittstelle wäre dann die USART zu einem Bluetooth-Modul. Der µC
> läuft allerdings auf einem langsamen externen 32.768kHz Crystal.
Mit welcher Takt ein uC läuft, das hat doch nichts mit der Schnittstelle 
zu tun, an der der Pegel angepasst werden soll. Also reicht es aus, wenn 
du nur die Schnittstelle im Auge behältst. Und wenn dort Datenraten mit 
100kBit/s auftreten, dann reicht ein Pegelwandler, der nur 20us 
Flankensteilheit hinbekommt, nicht aus.
Also wäre ein Skizze mit den beteiligten Bauteilen (und deren Typ) sowei 
der nötigen Datenrate recht hilfreich...

von ConvertsQuestionsToAnswers (Gast)


Lesenswert?

Lothar Miller schrieb:
>Also wäre ein Skizze mit den beteiligten Bauteilen (und deren Typ) sowei
>der nötigen Datenrate recht hilfreich...

ConvertsQuestionsToAnswers schrieb:
>Vielleicht zeigst Du mal einen Blockschaltplan mit den
>Versorgungsspannungen der jeweiligen Subsysteme.

Nun bist Du zweimal dazu aufgefordert worden. Da muss also was dran 
sein. :-)

von Luther B. (luther-blissett)


Lesenswert?

Beliebt ist die Methode die hier beschrieben wird:

http://www.nxp.com/documents/application_note/AN10441.pdf

So beliebt, dass es fertige Module für 1,30-1,80 für das Brotbrett gibt, 
weil es beim Basteln öfter vorkommt:

http://www.ebay.de/itm/New-5V-3V-IIC-UART-SPI-Four-Channel-Level-Converter-Adapter-Module-For-Arduino-/390610600469

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

Lothar Miller schrieb:
> Mit welcher Takt ein uC läuft, das hat doch nichts mit der Schnittstelle
> zu tun, an der der Pegel angepasst werden soll.

irgendwie hatte ich den Zusammenhang so erstellt, dass ich ja an das 
Bluetoothmodul über USART nur mit der maximalen Taktrate des µC (hier 
32.768kHz) übermitteln kann, was auch eine Aussage über meine benötigte 
Flankensteilheit macht? Falsch gedacht?

ConvertsQuestionsToAnswers schrieb:
> Lothar Miller schrieb:
>>Also wäre ein Skizze mit den beteiligten Bauteilen (und deren Typ) sowei
>>der nötigen Datenrate recht hilfreich...
>
> ConvertsQuestionsToAnswers schrieb:
>>Vielleicht zeigst Du mal einen Blockschaltplan mit den
>>Versorgungsspannungen der jeweiligen Subsysteme.
>
> Nun bist Du zweimal dazu aufgefordert worden. Da muss also was dran
> sein. :-)

Gerne! Nur ist der noch nicht fertig, ich bin gerade dran (deshalb ja 
auch die Frage nach dem Pegelwandler ;-))
- Wenn ich soweit durch bin (vll in 30-60 min.) stell ich ihn gerne 
hoch. Soweit nur erstmal:

ConvertsQuestionsToAnswers schrieb:
> Wieso wäre das einfacher?

Weil der µC (ATMega644P) an vier weiteren ATMega164A hängt (mit 
drei-bit-wort-selfmade-Protokoll), an einem 16Bit ADC über SPI und dem 
Amber2300 Bluetoothmodul über USART.
Nur das Bluetoothmodul braucht die 3.3V, alles andere läuft auf 5. 
Einfacher daher nur aufgrund der anzahl Verbindungen.


Ich bin in beidem - U(S)ART und SPI noch völlig unerfahren auf dem µC, 
habe aber ein Beispielprojekt für die µC-Amber2300 Schnittstelle (auch 
C-Code) an dem ich mich langhangeln kann. bei dem SPI sieht es anders 
aus, daher auch der Beitrag
Beitrag "Re: LTC2486 und AtMega"
mit aber wohl ungünstigem Titel (bisher nicht allzu viel Feedback ;-) )

Soweit, ich mach mich an den Schaltplan.

von Uwe (Gast)


Lesenswert?

> läuft allerdings auf einem langsamen externen 32.768kHz Crystal
>> Und wenn dort Datenraten mit 100kBit/s auftreten
Die Datenrate kann ja nicht höher als 32.768kHz sein bzw. eigentlich nur 
maximal die Hälfte (wg. Nyquist). Also 16.384kHz ...

von ConvertsQuestionsToAnswers (Gast)


Lesenswert?

>Gerne! Nur ist der noch nicht fertig, ich bin gerade dran (deshalb ja
>auch die Frage nach dem Pegelwandler

So ein Blockschaltplan kann man auch ruhig mal (und hier im Besonderen) 
vorher in verschiedenen Versionen machen. Da spricht nichts dagegen. 
Sowas verändert sich. Evolutionäres Design, sozusagen.


Dabei fällt mir aber noch folgendes ein:
Im allgemeinen hat ein Bluetooth Modul zwar eine Bidirektionale 
Schnittstelle aber keine bidirektionalen Einzelverbindungen (sprich 
Drähte).
Dafür spricht, das Du von UART redest. Dann brauchst Du keinen 
Bidirektionalen Pegelwandler.

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

ConvertsQuestionsToAnswers schrieb:
> Dafür spricht, das Du von UART redest. Dann brauchst Du keinen
> Bidirektionalen Pegelwandler.

Das klingt logisch, hätte ich auch selber drauf kommen können, RxD und 
TxD sind ja gerichtet!! Was ist mit den CTS/RTS flags?

Ich habe den Schaltplan jetzt mal angehängt - gerade noch mit dem 
MAX3378E als Pegelwandler. Kurze Erklärung:
Der Mega644 steuert vier Sensorboards, die auch von dieser PCB hier 
versorgt werden. Zurück kommt eine Analoglane pro Board. Alle vier 
Analogsignale werden vom LTC2468 aufgefasst und sollen vom Mega644 über 
SPI abgefragt werden, dann über USART an das BTModul, das die Daten an 
einen PC schickt.

Fragen sind bei mir gerade folgende offen (begründet aus fehlender 
Protokollerfahrung meinerseits mit SPI und UART, die ich jetzt zu 
sammeln gedenke):

- Ist die SPI Schnittstelle richtig angeschlossen, wenn der LTC2468 als 
Slave arbeitet?
- unabhängig von der Pegelwandlung: Sind die RTS/CTS Flags bestimmten 
Pins der USART0 Schnittstelle des ATMega644 zugeordnet oder kann man die 
andocken wo man will und das Handling ist dann eigener Brei?
- Anschließend an den letzten Kommentar von "ConvertQuestionsToAnswers": 
Ließe sich das ganze dann einfach auch durch vier Spannungsteiler lösen?

von Alex V. (bastel_alex) Benutzerseite


Angehängte Dateien:

Lesenswert?

sorry, jetzt.

von ConvertsQuestionsToAnswers (Gast)


Lesenswert?

> Ich habe den Schaltplan jetzt mal angehängt
Hoppelt da jetzt gerade ein Kaninchen über die kalten Äcker, mit 'nem 
Schaltplan am Püschel? :-)

von ConvertsQuestionsToAnswers (Gast)


Lesenswert?

Die Fragen nach CTS/RTS beantworten die Datenblätter des Prozessors und 
des Bluetooth-Moduls. Mich beschleicht da gerade das ungute Gefühl, das 
wir an Deiner Stelle die Schaltung entwickeln.

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

ConvertsQuestionsToAnswers schrieb:
> Mich beschleicht da gerade das ungute Gefühl, das
> wir an Deiner Stelle die Schaltung entwickeln.

Bitte nicht! Tatsache ist aber: Erst mit funktionierendem "Evalboard" 
kann ich mir die Software/Protokolle sinnvoll antun. Ich versuche grade 
erstmal den Wald vor lauter Bäumen nicht aus den Augen zu verlieren!
Fehlt denn so viel an der eigentlich schon fertigen Schaltung?

von ConvertsQuestionsToAnswers (Gast)


Lesenswert?

Du solltest jedenfalls in der Lage sein, die Frage nach RTS/CTS nach 
Lektüre der Datenblätter selbst zu beantworten.

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

ConvertsQuestionsToAnswers schrieb:
> Du solltest jedenfalls in der Lage sein, die Frage nach RTS/CTS nach
> Lektüre der Datenblätter selbst zu beantworten.

Ja, die Richtung habe ich mir beantwortet - du hast recht.
Die nach den Pins/ dem internen Handling im µC nicht (weil keine 
Erfahrung und im DB im USART Kapitel erstmal noch nichts finden können 
zu cts und rts)

von ConvertsQuestionsToAnswers (Gast)


Lesenswert?

>Ja, die Richtung habe ich mir beantwortet - du hast recht.

Es ging um diese Fragen:

>- unabhängig von der Pegelwandlung: Sind die RTS/CTS Flags bestimmten
>Pins der USART0 Schnittstelle des ATMega644 zugeordnet oder kann man die
>andocken wo man will und das Handling ist dann eigener Brei?

Wenn man nun garkeine Ahnung hat, was ja legitim ist, dann liest man 
erstmal ein paar Grundlagenartikel im Netz.

So. Und dann im Datenblatt.

Und wenn man
> ... im DB im USART Kapitel erstmal noch nichts finden ...
dann liest man es nochmal bis man abschliessend nichts findet.

So.

Aber um das ein wenig abzukürzen:
Der AVR-U(S)ART unterstützt keine Hardware-Handshaking. Sprich, er hat 
keine RTS/CTS-Leitung.
Einerseits kann man das selbst mit zwei Portpins nachbilden.
Andererseits lässt sich das (soweit ich weiss) in den Bluetooth-Modulen 
manchmal konfigurieren.

von Alex V. (bastel_alex) Benutzerseite


Lesenswert?

ConvertsQuestionsToAnswers schrieb:
> Wenn man nun garkeine Ahnung hat, was ja legitim ist, dann liest man
> erstmal ein paar Grundlagenartikel im Netz.
> So. Und dann im Datenblatt.

Ich denke du hast recht, teilweise auch mit deinem Ärger. Das Einlesen 
ist schon länger eingeplant und wird intensivst noch stattfinden 
(müssen).
Auch wenn es an der Stelle vielleicht nicht direkt ersichtlich ist:
Ich möchte nur gerne die Hardware fertig haben, damit ich hands-on 
lernen kann. Und da die Protokolle für mich bisher eine "reine code 
sache" waren und damit alles lediglich an ein paar wenigen verbindungen 
hängt, ob ich das eval-board soweit fertig machen kann, dass ich hands 
on lernen kann, kamen diese fragen recht unbelesen.

Ich danke dir für deine Aussage, dass der AVR keinen hardware-handshake 
kann - das hat mir jetzt einiges einfacher gemacht!

Wenn noch irgendjemand eine aussage zu den SPI-Pins 
(Beschaltung/Pulldown/up) machen könnte wäre das toll - wenn nicht muss 
ich halt mit dem board warten bis "nach dem lesen", was auch ok ist.
Wobei ich dazu sagen möchte dass ich durchaus meine datenblätter 
durchschaue. Aber ich denke jeder kennt es: Man sieht insbesondere das, 
womit man bereits etwas verbindet. Ich verknüpfe noch, viele 
Verbindungen sind also noch nicht da ;-)

von ConvertsQuestionsToAnswers (Gast)


Lesenswert?

> wenn nicht muss ich halt mit dem board warten bis "nach dem lesen", was
> auch ok ist.

Das wird das Beste sein.

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.