Forum: Mikrocontroller und Digitale Elektronik Verträgt ein mit 3.3V gespeister ATmega wirklich keine 5V an seinen Eingängen?


von Ralph K. (rosti_mcn)


Lesenswert?

Hallo,

ich bin neu hier und möchte mich ganz kurz vorstellen. Bin uC-Neuling, 
elektronisch nur grundlegend bewandert, kann mich aber in die Physik von 
fast allem hineindenken. Aus Neugier/Interesse habe ich jetzt ein 
uC-Projekt für intelligente Sensorik mit Telemetrie in Flugmodellen 
begonnen. Ich hoffe, ihr könnt mir bei meinen ersten Laufübungen ein 
wenig auf die Sprünge helfen.

Nun zu meinem Problem: ein chinesischer JTAG-Ice-Emulator benutzt einen 
74HC244D als Schnittstelle zum uC. Aus mir unerfindlichen Gründen wird 
dieser aber nicht vom Target gespeist, sondern mit 5V aus dem 
USB-Anschluss versorgt (zumindest scheint es so, da ohne angeschlossenes 
Target an Ub 5V liegen).

Die Spec des ATmega169 (auf 'nem Butterfly) sagt mir, dass nur 
Port-Eingangsspannungen bis Vcc+0.5V zulässig sind. Ist das tatsächlich 
so? Oder kann man bei entsprechender Strombegrenzung (einfacher 
Vorwiderstand!?) die 5V-Ausgangspegel des Ausgangstreibers direkt auf 
die JTAG-Anschlüsse des mit 3.3V betriebenen uC's legen? Die Spec sagt 
dazu leider nichts aus.

Gruß, Ralph

von Floh (Gast)


Lesenswert?

Ralph K. schrieb:
> is Vcc+0.5V zulässig sind.

Das liegt daran, dass die Pins per Schutzdioden auf Masse und Vcc 
geclampt sind.

Masse --|>|--- Eingangspin  ---|>|-----Versorgungsspannung

Daher wir bei 5V am Pin und 3.3V Vcc ein Strom über die im Bild rechte 
Diode fließen.
Diesen musst du auf jeden Fall z.B. mit Hilfe eines Serienwiderstands 
zum Eingang auf unter 1mA begrenzen, sonst geht die Diode (eigentlich 
der Highsidemosfet) kaputt.

von Ralph K. (rosti_mcn)


Lesenswert?

Ah verstehe, danke für die Erklärung.

Also 2k in die Leitung und alles wird gut.

Mögen die Pegel mir gnädig sein :-D

von Floh (Gast)


Lesenswert?

Ralph K. schrieb:
> Also 2k in die Leitung und alles wird gut.

Dürfte funktionieren. Du musst nur sicherstellen, dass dein Vcc durch 
den weiteren Stromfluss nicht angehoben wird.

von spess53 (Gast)


Lesenswert?

Hi

>Also 2k in die Leitung und alles wird gut.

Aber auch den L-Pegel beachten.

MfG Spess

von Ralph K. (rosti_mcn)


Lesenswert?

Floh schrieb:
> Du musst nur sicherstellen, dass dein Vcc durch
> den weiteren Stromfluss nicht angehoben wird.

Oops, wie immer liegt der Teufel im Detail. Da muss ich dem Butterfly 
wohl noch 'ne zum Debuggen zuschaltbare Stromsenke hinter seinem 
Spannungsregler gönnen?

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Oder den Widerstand größer machen. ;) 100k sollten gehen (natürlich ohne 
internen Pull-up).

von Frank K. (fchk)


Lesenswert?

Warum dann nicht richtig machen?

5V->3.3V: 74LVCxxx, mit Vcc=3.3V versorgt
3.3V->5V: 74HCTxxx, mit Vcc=5V versorgt.

fchk

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Weil das vieeel zu aufwändig ist, nur um mal kurz zu debuggen. Wir sind 
doch Bastler!!!

von Ralph K. (rosti_mcn)


Lesenswert?

Frank K. schrieb:
> Warum dann nicht richtig machen?

Weil ich das JTAG-Ice-Emu-Board nicht aufreissen möchte und stattdessen 
gern einfach nur ein paar passive Bauteile in das Kabel gelötet hätte.

Dann mache ich mir jetzt mal Gedanken zur Richtung uC->HC. Erkennt ein 
typischer 74HC die ca. 2.5V vom uC als high?? Das liegt ja in der 
Grauzone.

Überlege gerade, ob ich nicht den 74HC mit 3.3 V versorgen kann. Den Pin 
von der Platine zu lösen ist ja nicht so viel Aufwand. Nur stimmen dann 
die Pegel in Richtung uC des JTAG-Ice-Emus vermutlich nicht mehr :(

Gibt's da wirklich keine quick-and-dirty Lösung??? Also 100k in die 
Leitung vom JTAG-Interface zum Target-Board. Soweit okay. Und dann in 
der anderen Richtung den Ausgangspegel vom Target-uC mit 'nem Pull-Up 
leicht nach oben ziehen, wie in 
http://www.mikrocontroller.net/articles/Pegelwandler gezeigt. Spricht in 
meinem Fall etwas dagegen?

von holger (Gast)


Lesenswert?

>Oder den Widerstand größer machen. ;) 100k sollten gehen

Na, da zweifel ich mal ganz stark dran. Ich hätte da schon
mit 2k Bedenken ob dann noch was brauchbares rauskommt.
Aber probieren geht über studieren;)

von Frank K. (fchk)


Lesenswert?

Ralph K. schrieb:
> Frank K. schrieb:
>> Warum dann nicht richtig machen?
>
> Weil ich das JTAG-Ice-Emu-Board nicht aufreissen möchte und stattdessen
> gern einfach nur ein paar passive Bauteile in das Kabel gelötet hätte.

Das wäre Dir mit dem Original erspart geblieben.

> Dann mache ich mir jetzt mal Gedanken zur Richtung uC->HC. Erkennt ein
> typischer 74HC die ca. 2.5V vom uC als high?? Das liegt ja in der
> Grauzone.

Du hast schon gesehen, dass ich da HCT geschrieben habe und nicht HC? Du 
kennst den Unterschied zwischen HCT und HC? Ansonsten schau mal in die 
Datenblätter.

Mein Vorschlag wäre eine kleine Platine zwischen Controller und ICE mit 
einem 74HCTirgendwas und einem 74LVCirgendwas. Den LVC versorgst Du von 
Target, den HCT am besten vom JTAG, wenns geht.

> Gibt's da wirklich keine quick-and-dirty Lösung??? Also 100k in die

Ich denke, Du willst Dein Chinesen-Billich-JTAG noch öfter verwenden. Da 
lohnt sich das doch, das einmal richtig zu machen.

fchk

von Ralph K. (rosti_mcn)


Lesenswert?

Ich habe mir mal die Datenblätter aller beteiligten ICs rausgesucht und 
die I/O-Pegel auf die Betriebsspannungen von 3.3V bzw 5.0V interpoliert:

               Vcc    Out Low Max    In Low Max    Out High Min   In 
High Min

JTAG Atmega    5      0,7            1,5           4,2            3
JTAG 74HC      3,3    0,26           0,942         3,2            2,358
Target Atmega  3,3    0,53           0,99          2,585          1,98

Es ergeben sich folgende Möglichkeiten für den Einsatz des chinesischen 
JTAG-Interfaces mit dem AVR Butterfly:

 1)  Butterfly mit 3.0-3.3V betreiben (Knopfzelle oder eingebauter
       Spannungsregler)
     Vcc-Pin des 74HC von der Platine lösen und mit 3.3-3.5V speisen

     Nachteile:  a) man braucht für den 74HC einen Spannungsregler, da
                    2 Dioden in Serie leider nur einen zu geringen
                    Spannungsabfall erzeugen
                    (allerdings kann man auch einfach den 3.3V-Vout-
                    Ausgang des USB-Treiberchips PL2303HX auf dem
                    JTAG-Ice-Emu-Board anzapfen, siehe auch  Punkt 4)
     Anmerkungen: Der Butterfly könnte bei dieser Variante aus der
                  Knopfzelle gespeist werden, was aber aufgrund des
                  Stromverbrauchs beim Debuggen nicht empfohlen wird

 2)  Vcc-Pin des 74HC und Pin 7 des JTAG-Connectors von der Platine 
lösen
       und beide miteinander verbinden
     Pin 7 des JTAG-Connectors des Butterfly mit dessen Vcc verbinden

 3)  Butterfly mit exakt 4.5V versorgen

     Nachteile:  a) nur wenig mehr zerstört den EEPROM-Chip des 
Butterfly
                 b) nur wenig weniger zerstört die Schutzdioden des uC's
                    des Butterfly

 4)  Vcc-Pin des 74HC von der Platine lösen und mit 3.3-4.5V speisen 
(dazu
       genügt in einfachsten Fall eine Diode in Serie gegen Plus)
     Verbindung des Pin 7 des JTAG-Connectors des JTAG-Ice-Emulators zu
       Vcc=5V trennen und mit an den Vcc-Pin des 74HC hängen
     Pin 7 des JTAG-Connectors des Butterfly mit dessen Vcc verbinden

     Anmerkungen:
       Im Gegensatz zur Intention von Atmel/JTAG wird Pin 7 zur Speisung
         des Targets verwendet, statt zur Speisung des JTAG-Interfaces.
       Die Knopfzelle des Butterfly ist mit einer Schottkydiode gegen
         höhere externe Versorgungsspannungen des Boards geschützt, muss
         zum Debuggen also nicht entfernt werden.
       Alternativ zu einer Seriendiode zur Absenkung der Spannung könnte
         man auch den 3.3V-Vout-Ausgang des USB-Treiberchips PL2303HX 
auf
         dem JTAG-Ice-Emu-Board benutzen. Dieser Ausgang darf aber mit
         maximal 150mA belastet werden. Zieht das Target-Board mehr 
Strom,
         geht er in Rauch auf.

Achtung:

Es gibt USB-Ports, die mehr als 5V Spannung liefern (ich habe selbst 
schon mit Entsetzen 6.07V mit dem JTAG-Interface als "Last" gemessen - 
die Norm legt 5.25V als Maximum fest). Zum einen wird damit die  maximal 
zulässige Versorgungsspannung für den USB-Treiberchip PL2303HX des 
JTAG-Interfaces (5.5V) überschritten. Aber scheinbar verträgt der doch 
auch mal etwas mehr.
In Bezug auf die erlaubten Pegel zwischen JTAG-Interface und dem 
Butterfly als Target-Board ist folgendes zu bedenken:

  bei Variante 1:  Der 3.3V-Vout-Ausgang des USB-Treiberchips PL2303HX
                   liefert bei Vcc=6V ca. 4.0V. Nutzt man diesen Ausgang
                   als Vcc für den 74HC, werden die zulässigen
                   Eingangspegel für den uC des Target-Boards
                   überschritten.

  bei Variante 2:  Geht zwar nie in Rauch auf, funktioniert aber bei
                   kleinen Versorgungsspannungen des Butterfly/74HC
                   möglicherweise nicht mehr, weil der ATmega des
                   JTAG-Interfaces den High-Level vom 74HC nicht mehr
                   erkennt.
                   Konkret: bei Vcc=3.3V ist V_high_out(74HC)=3.2V,
                   V_high_in(ATmega) bei Vcc=6.0V aber möglicherweise
                   höher. Das Datenblatt des ATmega sagt dazu aber 
leider
                   nichts genaues dazu aus.

  bei Variante 3:  Bereits kleine Überschreitungen des 5V-Sollpegels
                   führen zu einer Überschreitung maximal zulässigen
                   Eingangsspannungen für die uC-Ports des 
Target-Boards.

  bei Variante 4:  Siehe Variante 2.

Berücksichtigt man diese Problematik, ergeben sich also folgende 
Konsequenzen:

  Variante 1:  nur mit dediziertem Spannungsregler-IC sicher

  Variante 2:  Butterfly mit etwas höherer Spannung als 3.3V betreiben,
               falls das Debuggen sonst nicht funktionieren sollte

  Variante 3:  nicht einsetzbar

  Variante 4:  ggf. zwei statt einer Diode in Serie benutzen, damit die
               maximal zulässige Betriebsspannung des Butterfly von 4.5V
               nicht (wesentlich) überschritten wird

So, ich hoffe das war jetzt (beinahe) erschöpfend und fehlerfrei. Wer 
Lust verspürt, daraus noch eine Eigenschaften-Matrix zu bauen - nur zu 
;)

Für die Vertreter "sauberer" Lösungen mag das jetzt alles mehr oder 
weniger Mindf... sein, zumal meine Zeiteffizienz bei der Analyse 
offensichtlich gegen Null tendierte. Da es mir aber hier nicht um 
Effizienz ging, sondern um die Bschäftigung mit der Materie, die 
Lerneffekte und um die intellektuelle Freude, doch eine ganze Menge an 
quick-and-dirty-Lösungen gefunden zu haben, finde ich das okay. Und Gott 
sei Dank bin ich scheinbar ja nicht der einzige, der das aus dieser 
Perspektive sehen kann :-)

Happy burning :D
Ralph

von Guter Rat (Gast)


Lesenswert?

Für genau diese Pegelwandlungen lohnt es sich mal
bei TI.COM die Suche zu bemühen.

TI bietet weil der z.B. MSP430 mit 3.3V läuft zum Anschließen
von 5.0V Peripherie passende Pegelwandlervorschläge
an. Vom IC das mit 5V und 3.3V versorgt in beide Richtungen
sauber wandelt, bis zum "Schaltungstrick" findet man da so einiges.
Ist sogar mit Vor und Nachteilen recht ordentlich beschrieben und
nicht all zu schwer zu finden.

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.