Forum: Mikrocontroller und Digitale Elektronik AVR mit niedriger Spannung programmieren


von sebi707 (Gast)


Lesenswert?

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

von Jay W. (jayway)


Lesenswert?

Alternative 4) Den Atmega außerhalb der Schaltung programmieren?

von Frank K. (fchk)


Lesenswert?

Alternative 5) Einen Controller mit eingebautem Ethernet nehmen: 
PIC18F67J60

von Amateur (Gast)


Lesenswert?

Jump and feel good.

Ein Jumper vor dem Kandidaten oder eine Diode mit entsprechender Polung 
und ev. geringer Durchlassspannung...

von Max D. (max_d)


Lesenswert?

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
von sebi707 (Gast)


Lesenswert?

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.

von ich (Gast)


Lesenswert?

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...

von sebi707 (Gast)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

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

von ich (Gast)


Lesenswert?

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!

von Amateur (Gast)


Lesenswert?

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).

von sebi707 (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Max D. (max_d)


Lesenswert?

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 ^^

von stefanus (Gast)


Lesenswert?

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.

von sebi707 (Gast)


Lesenswert?

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

von sebi707 (Gast)


Lesenswert?

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.

von Konrad S. (maybee)


Lesenswert?

Du könntest einen Zwischenstecker basteln, der V-Target für den 
Programmer auf 3.3V setzt.

von Stefan F. (Gast)


Lesenswert?

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.

von sebi707 (Gast)


Lesenswert?

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?

von sebi707 (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

> 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.

von Max H. (hartl192)


Lesenswert?

Man könnte den MISO-Pin mit einem Jumper zwischen ENC und ISP 
umschalten.

: Bearbeitet durch User
von sebi707 (Gast)


Lesenswert?

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.

von stefanus (Gast)


Lesenswert?

> 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.

von stefanus (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.