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
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.
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
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.
Hi
>Also 2k in die Leitung und alles wird gut.
Aber auch den L-Pegel beachten.
MfG Spess
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?
Oder den Widerstand größer machen. ;) 100k sollten gehen (natürlich ohne internen Pull-up).
Warum dann nicht richtig machen? 5V->3.3V: 74LVCxxx, mit Vcc=3.3V versorgt 3.3V->5V: 74HCTxxx, mit Vcc=5V versorgt. fchk
Weil das vieeel zu aufwändig ist, nur um mal kurz zu debuggen. Wir sind doch Bastler!!!
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?
>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;)
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.