Hallo, ich möchte eine Schaltung aufbauen mit ICs die unterschiedliche Versorgungsspannungen haben. Einmal einen ATmega328 bei 5V, da ich diesen bei 20 MHz betreiben möchte. Außerdem einen ENC 28J60 Netzwerk Controller der bei 3,3V arbeitet aber bei dem glücklicherweise die meisten Pins 5V tollerant sind. Einzig der SO Pin am ENC, der mit MISO am ATmega verbunden ist, ist nicht 5V tollerant (auch wohl weil es ein Output Pin ist). Das Problem was ich jetzt sehe ist, dass der MISO Pin am ATmega auch für die Programmierung verwendet wird und der Programmer hier vermutlich 5V Signale gibt. Ich dachte mir dann, dass ich den ATmega einfach mit 3,3V programmiere. Das sollte an sich kein Problem sein, da die Spannung noch hoch genug ist, um als High erkannt zu werden. Ich hab also die Platinen in Auftrag gegeben und dabei nicht an den Programmer gedacht. Ist es problematisch wenn man Target Voltage beim STK500 auf 3,3V stellt und ein Mikrocontroller programmiert der bei 5V betrieben wird? Ich habe gerade etwas in den Schaltplan geguckt und dort sieht es so aus als wären die Kontakte vom ISP Header direkt an zwei Mikrocontroller angeschlossen. Wenn die Mikrocontroller dann mit 3,3V betrieben werden ist es natürlich genauso ungünstig, wenn dort 5V Signale reinkommen. Ich steige aber auch nicht so ganz durch den Schaltplan des STK500 durch. Welche der folgenden Szenarien würdet ihr mir empfehlen? 1) Mikrocontroller mit 5V programmieren und SO Pin am ENC möglicherweise beschädigen 2) Mikrocontroller mit 3,3V programmieren und möglicherweise Programmer beschädigen 3) Mikrocontroller mit 3,3V betreiben und trotzdem bei 20MHz außerhalb der Spezifikation betreiben
Alternative 4) Den Atmega außerhalb der Schaltung programmieren?
Jump and feel good. Ein Jumper vor dem Kandidaten oder eine Diode mit entsprechender Polung und ev. geringer Durchlassspannung...
In dem Fall reicht eine (Schottky ist da Pflicht) Diode und ein Widerstand. Der Widerstand zwischen Pin am Mega und Gnd (Pulldown) und die Diode vom ENC an den Pin (Kathode an Pin, anode an ENC), fertig. Den Wert des Resis muss man ermitteln, sollte klein genug für steile flanken sein und groß genug um den ENC nicht zu überlasten (--> Datenblatt sagt dir den maximalen I/O-strom). Ist zwar etwsa "pfuschig", funktioniert aber (der Mega erkennt ab etwa 2,7 V High und 3,3 V - [Schottkydrop=0.3V] = 3 V => 0.3 V "Reserve". Sollte das dir zu unsicher sein, dann mach aus einem (VGth < 3 V) MOSFet einen Levelshifter ( http://husstechlabs.com/support/tutorials/bi-directional-level-shifter/ ), muss man halt auch den Pullup (in der Einzahl, da man auf der 3,3 V Seite hier keinen brauch) tunen. Edit: Du musst nur sicher sein können, das der ENC nicht beim proggen zwischenquatscht
:
Bearbeitet durch User
Da ich wie oben schon geschrieben das Board bereits hab fertigen lassen kann ich wenn überhaupt nur kleinere Änderungen machen. Außerhalb der Schaltung programmieren ist leider auch nicht möglich da der Mikrocontroller SMD ist. Über eine Diode hatte ich erst nachgedacht, aber nach den Angaben im Datenblatt sind 3V die Grenze ab der Signale noch als High erkannt werden, also ist man selbst bei nur 0,3V Spannungsabfall stark an der Grenze, daher habe ich die Idee erstmal verworfen. Trotzdem noch eine Frage aus Interesse: Warum ist der Pulldown Widerstand notwendig? Kann vielleicht jemand etwas zu der ursprünglichen Frage sagen? Ist es sehr problematisch wenn man mit einem Programmer (speziell das STK500) bei 3,3V eine Schaltung programmiert, die bei 5V betrieben wird? Ich muss dazu sagen ich habe das völlig unbedacht an einer anderen Schaltung ausprobiert bevor ich die Platinen in Auftrag gegeben habe. Es hat wie gewünscht funktioniert und das STK500 lebt noch. Ob es trotzdem Problematisch ist weiß ich nicht. Ich hätte eigentlich gedacht so ein Programmer ist halbwegs gegen so etwas geschützt.
Wäre es vielleicht eine Idee, den STK-500 durch einen AVRISP-MKii zu ersetzen? Der stellt sich selbst auf die entsprechende Target-Spannung ein. Nur so als Gedanke...
Was ist denn die richtige Target Spannung? Wenn ich an den VCC Pin 5V anlege programmiert der AVRISP-MKii wohl mit 5V was schlecht für den ENC ist und wenn ich dort 3,3V anlege dann programmiert er mit 3,3V was dann wiederrum schlecht für den Programmer sein könnte weil 5V Signale vom ATmega kommen. Also gleiches Problem wie mit dem STK500.
Hi >Wäre es vielleicht eine Idee, den STK-500 durch einen AVRISP-MKii zu >ersetzen? Der stellt sich selbst auf die entsprechende Target-Spannung >ein. Nur so als Gedanke... Das STK500 auch: The VCC of the target application is detected by STK500 and signals are converted into voltage levels suitable for the target system. MfG Spess
spess53 schrieb: > > Das STK500 auch: > Das wußte ich nicht. Ich war der Meinung, daß es dort in der Software eingestellt werden muß. Danke für den Hinweis!
Geh' mal davon aus, dass die meisten Programmiergeräte mit 5/3.3V, egal in welcher Richtung, keine Probleme haben. Wenn ich richtig verstanden habe, geht's um das 3,3V-Teil, welches eventuell aus der Fassung springt und nicht um den µP. Unter dem Strich bleiben Dir wohl nur drei Möglichkeiten: 1. Neues Layout 2. Jumper 3. Mit 'ner Diode probieren (drauf ankommen lassen).
Ich habe gerade nochmal in den Schaltplan des STK500 geschaut. Vorher habe ich mir scheinbar den falschen Schaltungsteil angeschaut. Habe jetzt aber den Teil gefunden, der für die Umwandlung der Signale zuständig ist. Leider verstehe ich die Schaltung nicht wirklich. Ich habe den entsprechenden Ausschnitt als Bild angehängt. Kann mir jemand sagen wie die Schaltung funktioniert und ob es Problematisch ist wenn Signale mit 5V reinkommen? Das VCC-Netz hat eine Spannung von 5V und das VTG-Netz die der eingestellten Programmierspannung also 3,3V.
sebi707 schrieb: > Über eine Diode hatte ich erst nachgedacht, aber nach den Angaben im > Datenblatt sind 3V die Grenze ab der Signale noch als High erkannt > werden, also ist man selbst bei nur 0,3V Spannungsabfall stark an der > Grenze, daher habe ich die Idee erstmal verworfen. Trotzdem noch eine > Frage aus Interesse: Warum ist der Pulldown Widerstand notwendig? Man könnte auch statt der Diode nur einen Widerstand in die Leitung hängen, der muss dann so kalkuliert sein, dass die (vmtl. vorhandenen; VORHER nachlesen; notfalls nachrüsten) Schutzdioden im ENC die Spannung auf seiner Seite auf 3,3 V runterziehen können (da ist halt auch wieder speed <-> strom das prob). Dann den CS (oder wieauchimmer Microchip das nennt) auf "abgewählt" ziehen, wenn der Mega resetet ist, dann geht der ENC-Ausgang automatisch tristate und sollte nicht stören. Der Pulldown im Dioden-Design ist nötig weil die Diode nur ein High "durchreicht" und ohne widerstand der Pin einmal auf 3 V geladen würde und dann nichtmehr Low gehen könnte... Um etwas pfusch wirst du bei der Sache nicht rumkommen ^^
Ich wundere mich schon sehr, dass du zuerst die Platine herstellen lässt und und dann fragst, wie die Schaltung angepast werden musst! Da nun das Kind in den Brunnen gefallen ist, rate ich dazu: 1) Den AVR außerhalb der Schaltung zu programmieren, oder 2) Den ENC mit Sockel zu verwenden und beim Programmieren zu entfernen.
Als ich die Platine in Auftrag gegeben habe dachte ich, dass ich durch das Programmieren des ATmega mit 3,3V das Problem gelöst hätte. Der ATmega erkennt 3,3V noch als High und der ENC kriegt bei 3,3V keine Probleme. Für mich sah alles optimal aus bis ich dann gestern an den Programmer gedachte habe, der ja jetzt mit 3,3V programmiert aber 5V Signale vom ATmega kriegt. Ich hab mir ja auch vorher einige Schaltungen von anderen Boards mit ATmega und ENC Netzwerkcontroller angeguckt und keiner hat irgendwelche Dioden an dem SO Pin am ENC. Ganz so kritisch kann es also nicht sein. Beispiele für Schaltungen ohne zusätzlichen "Schutz": http://www.lochraster.org/etherrape/ http://www.ulrichradig.de/home/index.php/avr/eth_m32_ex http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_AVR_NET_IO.html
Kann vielleicht noch jemand etwas zu dem Pegelumsetzer im STK500 sagen (etwas weiter oben von mir angehängt). Ich bin auf jeden Fall schonmal beruhigt, dass die Pins vom ISP Header nicht direkt an einen Mikrocontroller gehen sondern erst umgewandelt werden und dann erst an einen Mikrocontroller der auch mit 5V betrieben wird. Nach meinem Wissen kann bei ein Paar Transistoren und Widerständen keine höhere Spannung rauskommen als die Versorgungsspannung und damit ist der Mikrocontroller hinter der Schaltung schonmal sicher. Es könnte also höchstens noch sein, dass die Transistoren irgendwie überlastet werden. Da der kleinste Widerstand aber 1KOhm ist glaube ich nicht das dort so hohe Ströme fließen können um die Transistoren zu beschädigen. Ich wäre aber beruhigter falls jemand meine Annnahmen nochmal bestätigen kann oder am besten die Funktionsweise der Schaltung und was passiert wenn vom ISP Header 5V kommen.
Du könntest einen Zwischenstecker basteln, der V-Target für den Programmer auf 3.3V setzt.
Ich finde es ja schon faszinierend, dass das Datenblatt nichts zur maximalen Eingangsspannung am SO Pin aussagt, aber dennoch kommerzielle Schaltungen im Umlauf sind, die diesen Pin mit "überspannung" belegen - sogar ohne Vorwiderstand. Du kannst ja mal antesten, ob überhaupt ein Strom fließt:
1 | 1k |
2 | 5V o---(mA)---[===]------> SO Pin vom EN28J60 |
Wenn dabei kein Strom fließt, dann wird es wohl Ok sein, auf den pegelwandler zu verzichten. Ansosnten würde ich einen einbauen. Man könnte auch einen 470 Ohm Widerstand zur Strombegrenzung einsetzen, allerdings verschlechtert er dann zusammen mit der Eingangskapazität des AVR die Signalflanken - eventuell sogar so stark, dass die Schaltung dann nicht mehr funktioniert.
Naja der SO Pin ist ja eigentlich ein Ausgang am ENC. Wenn der ENC nicht gerade dort Daten sendet ist der Pin laut Datenblatt Hochohmig. Einen Zwischenstecker könnte ich natürlich auch bauen. Könnte man sich aber sparen wenn das STK500 sowieso damit klar kommt, dass 5V Signale reinkommen. Daher nochmal: Kann irgendwer die oben angehängte Schaltung erklären?
Konrad S. schrieb: > Du könntest einen Zwischenstecker basteln, der V-Target für den > Programmer auf 3.3V setzt. Ach du meinst nur V-Target nicht die Signale vom ATmega. Das kann man sich beim STK500 auch sparen, da man V-Target entweder vom Board das man programmieren will nimmt oder per Jumper auch eine Spannungsquelle vom STK500 nehmen kann die sich per Software auf die gewünschte Spannung einstellen lässt. Der VTG Pin vom ISP ist an meinem Board momentan unbeschaltet, ließe sich aber einfach mit einem Stück Kabel auf der Rückseite auf 3,3V oder 5V legen. Bleibt aber die Frage was passiert wenn V-Target 3,3V ist und 5V Signale vom ATmega ans STK500 gehen.
> Der VTG Pin vom ISP ist an meinem Board momentan unbeschaltet Schlechte Idee, denn einige Programmer (z.B. der "Originale" AVR ISP mkII) benötigen dort eine Spannung um die Treiber der drei ISP Leitungen zu versorgen. Die passen sich nämlich an die Versorgungsspannung des Targets an. Ohne Spannung keine Funktion. Ich würde meine Geräte nicht von einem bestimmten Programmer abhängig machen. > Habe jetzt aber den Teil gefunden, der für die Umwandlung der Signale > zuständig ist. Leider verstehe ich die Schaltung nicht wirklich. So eine Schaltung (allerdings eine qualitativ bessere) befindet sich im AVR ISP mkII. Sie sorgt dafür, dass die ISP Schnittstelle mit der Versorgungsspannung des Targets betrieben wird, unabhängig von der "eigenen" Versorgungsspannung des Programmers. Für mich ist das wichtig, denn ich betreibe meine Basteleien oft mit Batterien. Bei mir gibt's nicht nur 3,3V und 5V, sondern den ganzen Bereich von 2,8V bis 5,3V. Ich habe auch zwei alte Programmer in der Wühlkiste, die nur 3,3V/5V können. Die benutze ich aber schon lange nicht mehr. Für Deinen Anwendungsfall hilft aber auch der pegelwandler des AVR ISP mkII nicht. Denn wenn Du ihn mit 5V versorgst, hast Du mehr, als der EN28J60 (mutmaßlich) verträgt. Wenn Du ihn mit 3,3V versorgst, geht er warscheinlich kaputt, wenn er 5V vom Target-Mikrocontroller empfängt. Der Pegelwandler von oben ist meiner Meinung nach Käse, da er viel zu große Pull-Up Widerstände enthält. Damit wirst Du keine hohen Taktraten erreichen - für die Verbindung zwischen AVR und EN28J60 ist er mit Sicherheit ungeeignet. Nimm dazu lieber IC's, die hohe Ströme treiben können. Hier sind einige erklärt: http://www.mikrocontroller.net/articles/Pegelwandler#5_V_.E2.87.92_3.2C3_V Der ganze Artikel könnte Dir helfen, diverse Pegelwandler-Schaltungen zu verstehen.
Man könnte den MISO-Pin mit einem Jumper zwischen ENC und ISP umschalten.
:
Bearbeitet durch User
Den oben verlinkten Pegelwandler will ich ja gar nicht einbauen sondern dieser ist auf dem STK500 schon vorhanden. Ich denke mal nicht das der total Käse ist sonst wäre der wohl kaum von Atmel so aufgebaut worden. Obwohl ich den Wandler nicht verstehe sollte es nach meinen Annahmen (siehe weiter oben) kein Problem sein wenn vom Mikrocontroller 5V Signale kommen und VTG 3,3V beträgt. Idealerweise bestätigt jetzt noch jemand meine Annahmen oder kann die Schaltung gar komplett erklären.
> sollte es nach meinen Annahmen kein Problem sein wenn vom > Mikrocontroller 5V Signale kommen und VTG 3,3V beträgt Ja, sehe ich auch so.
> Ich denke mal nicht das der total Käse ist sonst > wäre der wohl kaum von Atmel so aufgebaut worden. Programmieren kann man ja auch beliebig langsam. Ich wollte nur klarstellen, dass der Pegelwandler für die Verbindung zwischen AVR und Ethernet Chip nicht geeignet ist - weger der viel höheren Bitrate.
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.