Forum: Mikrocontroller und Digitale Elektronik AtMega8L mit USBASP


von Jack P. (crosaider)


Lesenswert?

Hallo @ all

Ich habe eine Platiene entwickelt, welche ich nun mit dem USBASP 
programmieren will. Ich habe dafür extra 4 PINs auf meine Platiene 
gelötet da ja nur 4 zum schreiben benötigt werden und die anderen 6 auf 
Masse liegen. Jetzt habe ich aber doch noch ein paar Fragen dazu:

1. Ich will den AtMeage8L programmieren, welcher ja schon ab 2,7V 
funktioniert. Mein Board ist nur für 3V ausgelegt. Ich habe bis jetzt 
immer nur den normalen AtMega8 beschrieben und das mit 5V. Kann ich den 
AtMega8L auch schon mit 3V beschreiben?

2. Reicht es nur die 4 PINs an die Platine anzuschließen oder muss ich 
wirklich die anderen 6 auf Masse legen?

3. Der USBASP liefert mir 5V. Wenn ich jetzt den AVR programmiere, 
liegen diese 5V an auch an meinem Board an? Also werden an diese 4 PINs 
die 5V gelegt? Habe zwei sehr empfindliche Bauteile drauf die nur mit 3V 
betrieben werden dürfen. Ich möchte auf keinen Fall das diese kaputt 
gehen.

Ich hoffe ihr könnt mir helfen. Viele Grüße
Jack P.

von Hubert G. (hubertg)


Lesenswert?

Mit 5V wäre ich bei empfindlichen Bauteilen sehr vorsichtig.
Der Mega8 lässt sich auch mit 2,7V beschreiben.
Das AVR USB-Lab ist dem USBASP sehr ähnlich und arbeitet mit 3V. Schau 
dir das mal an.

von Jack P. (crosaider)


Lesenswert?

Okay schonmal danke für deine Antowort. Leider steht mir der AVR USB-Lab 
gerade nicht zur verfügung und bauen kann ich ihn mir auf die schnelle 
auch nicht. SOnst noch Ideen oder so? Also mit dem USBASP besser nicht 
probieren? Die Bauteile sind SD Karte und VS1011 (Mp3 Decoder). Beide 
laufen halt nur mit 3V...

von Heinz (Gast)


Lesenswert?

Du könntest versuchen, die Spannung des USBasp durch Zwischenschalten 
von 2 bis 3 Dioden vom USB-Anschluß auf die Spannung zu reduzieren. Der 
ATmega8 des USBasp läuft ja auch noch mit 3V.

von Turbo T. (turbotoni)


Lesenswert?

4 pins reichen auf keinen Fall, zumindesens muss noch 1 massepin mit 
verbunden werden

von Achim M. (minifloat)


Lesenswert?

Jack P. schrieb:
> 2. Reicht es nur die 4 PINs an die Platine anzuschließen oder muss ich
> wirklich die anderen 6 auf Masse legen?

Mosi, Miso, SCK, Reset sind wohl deine 4. Natürlich sollte wenigstens 
GND mit GND verbunden werden. Die "anderen" Leitungen des ISP-Verbinders 
würde ich nicht an Masse legen. VCC sollte mit VCC verbunden werden, 
wenn nachher mal einer einen Porgrammer mit VCC-Sensing benutzt.

Wenn du mit wenig ISP-Frequenz programmierst, kannst du in Serie zu 
MOSI(der Target-AVR ist ein Slave) und SCK je einen Widerstand einfügen, 
der zusammen mit den Internen Schutzdioden des Targets nach VCC die 
Spannung begrenzt.
Ein Spannungsteiler ist auch nicht besser. Ein Levelshifter oder ein 
5V-toleranter 3.3V-Bustreiber ist wohl der Königsweg, sowas gehört aber 
nicht auf die Target-Schaltung, sondern in den Programmer.

Ich bin den Weg andersrum gegangen: In meinem USBASP steckt ein 
3,3V-Spannungsregler. Das erspart einem das Z-Diodengefummel an D+ und 
D- oder diese Konstrukte mit LED oder Z-Diode in der VCC-Leitung des 
Controllers. Ein LM317 oder ein LP2950 sind nicht teuer.
Ich musste lediglich die MISO-Leitung(von Target zu Programmer) mit 
einem Widerstand schützen, falls das Target mit 5V läuft. Nebenher kann 
ich einstellen, ob ich das Target mit 3.3V/5V/garnicht aus dem 
Programmer speise.

mfg mf

von Jack P. (crosaider)


Lesenswert?

Habe heute nochmal meinen Lehrer gefragt und mit diesem habe ich 
folgendes überlegt.

Wir schalten einfach 3 Dioden in Reihe ( 3 * 0.6V = 1.8V ) und dann 
komme ich auf meine 3.2V am Ausgang des Programmers. Das ganze soll dann 
so aufgebaut werden:

VCC  => in Durlassrichtung
GND  => durchverbunden
MOSI => in Durlassrichtung
MISO => in Sperrrichtung
SCK  => in Durlassrichtung

Was haltet ihr davon? Wird das funktionieren? Und sind die Richtungen 
der Dioden dann so richtig? Im USBASP wird dann auch ein AtMega8L 
eingesetzt. Laut dem Datenblatt laufen die SD Karte und der VS1011 auch 
noch mit 3.6V - da sollte also nicht das Problem liegen.

von holger (Gast)


Lesenswert?

>Was haltet ihr davon?

Nichts. Kauf dir einen Original AVR ISP MKII
und du bist alle Probleme los. Alleine das rumgehühner
hier hat doch schon mehr als 39Euro gekostet.

Dioden taugen als Spannungsregler nicht die Bohne.
Wenn du deine Schaltung unbedingt umbringen willst
dann versuchs halt.

von Jack P. (crosaider)


Lesenswert?

Aber warum sollte es nicht funktionieren? Es fällt genau die Spannung ab 
die ich brauche und der Strom sollte sich doch auch nicht viel dadurch 
verändern (Reihenschaltung => Strom überall gleich). Der USB Port 
liefert auch nur 500mA das sollte die Dioden auch nicht zerstören oder?

Nur mal so aus reiner Interesse - wäre die Schaltung (Durchlass- und 
Sperrrichtung) der Dioden denn so richtig??

von Hubert G. (hubertg)


Lesenswert?

Bin nicht sicher das bei den Datenleitung das mit den Dioden 
funktioniert.
Wenn du in die VCC zum Target und von dort zum Programmer (MISO) jeweils 
Dioden hinein gibst, hast du 2x Spannungsabfall.
Reduziere die Spannung des USBASP auf 3V wie beim USB-Lab und gut ists.

von Jack P. (crosaider)


Lesenswert?

Du meinst also ich soll die Spannung reduzieren bevor sie in den USBASP 
geht? Welche Spannungen liege denn beim programmieren an den 
Datenleitungen an?

Wenn ich mir eine Adapter Platine machen würde, welche den VCC vom USB 
Port auf 3V beschränkt und dann erst zum USBASP geht, müssen dann auch 
die anderen 3 Leitungen des USB Ports abgeschwächt werden oder liegen 
die Datensignale dann automatisch zwischen 0-3V? Die Datensignale werden 
ja wohl abhängig vom VCC generiert also müssten sie ja zwischen 0-3V 
liegen - sehe ich das richtig so?

von Hubert G. (hubertg)


Lesenswert?

Die Datenleitung vom USB sollten ohnehin auf 3,3V sein. Daher auch die 
beiden Widerstände und Z-Dioden.
Die beiden anderen Leitungen sind 5V und GND. Wenn du also einen 
Spannungsregler auf den Adapter baust und die 5V auf 3,3V reduzierst, 
ist alles OK.

von Jack P. (crosaider)


Lesenswert?

Habe gerade mal meinen USB Port durchgemessen. An VCC liegen 5V an Wie 
es sein sollte. Allerdings liegen an D- 3.9V an und an D+ 0V. Habe das 
ganze gemessen als der AtMega8 abgeschlossen war. Aber irgendwie kommt 
mir das komisch vor. Ändert sich das beim Programmieren noch?

von Hubert G. (hubertg)


Lesenswert?

Das ist OK so. Du brauchst nur einen Adapter in die USB einfügen in dem 
du die VCC von 5V auf 3,3V reduziertst. Die Datenleitung laufen durch.

von Jack P. (crosaider)


Lesenswert?

Ah okay wunderbar vielen dank :)

Habe gerade auch mal einen Brennvorgang am MISO, MOSI und SCK mit 
durchgemessen. Da waren eigentlich nie mehr als 1.9 - 2V im Spiel und 
der Reset wird ja eh auf GND gezogen. Ist das auch richtig so?

Und ganz zur sicherheit nochmal - die anderen 3 Leitung bleiben 
unberührt nur VCC wird auf 3V runtergezogen!?

Vielen Dank nochmal für deine Hilfe. Du hast mir wirklich sehr viel 
weitergeholfen :)

von Hubert G. (hubertg)


Lesenswert?

Jack P. schrieb:
> Und ganz zur sicherheit nochmal - die anderen 3 Leitung bleiben
> unberührt nur VCC wird auf 3V runtergezogen!?

Genau, dann kann nichts mehr passieren.

von Jack P. (crosaider)


Lesenswert?

Habs gestern versucht zu bauen aber das geht leider so nicht. Wenn der 
USBASP nur mit 3V versorgt wird, muss ja ein AtMega8L da rein. Dieser 
läuft aber nur mit 8MHz und die USBASP Software benötigt 12 MHz. Geht 
also ohne weiteres nicht so einfach :(

Habe heute jetzt die Ausgänge des USBASP mit den Dioden beschaltet und 
diese liefern jetzt an meine Platine nur 3V. Allerdings mus ja über MISO 
5V zurückkommen. Hatte mir überlegt da einen Pull Up Widerstand 
reinzubauen aber weiß nicht welchen? Was würdet ihr da für einen 
vorschlagen?

von Heinz (Gast)


Lesenswert?

Ein ATmega8L im USBasp ist Murks. Bau da einen ATmega8 ein und gut ist.

von Jack P. (crosaider)


Lesenswert?

Ja genau deswegen brauche ich ja jetzt den Pull Up Widerstand. Habe im 
USBASP nun wieder den AtMega8 und dieser versorgt mein Board über die 
Dioden nur mit 3V. Allerdings muss über MISO ja wieder 5V ankommen - 
deswegen der Widerstand aber ich weiß nicht welchen ich nehmen soll...

von Hubert G. (hubertg)


Lesenswert?

In meinem USB-AVR-Lab ist ein Mega8 drinnen, der läuft mit 12MHz bei 3V 
einwandfrei.
Wenn du den USBASP mit 3V versorgst und deine Zielplatine auch mit 3V 
läuft, wozu und wo brauchst du dann 5V?

von Jack P. (crosaider)


Angehängte Dateien:

Lesenswert?

Hab die Lösung gefunden - steht in einem anderen Thread hier:

>bei den neuen Atmega8-16PU oder Atmega48-20PU liegt der LO-Pegel der
>Pins um 0.3V höher als bei den alten.
>Der USB Port kann somit das LO Signal nicht mehr eindeutig
>identifizieren.
>
>Ich hab mit einer Universal Diode die Programmer Masse gegenüber der USB
>Masse um 0.5V nach unten gezogen und der Programmer wird wieder
>wunderbar erkannt.

Aber woher soll ich jetzt die 0.3V bzw die 0.5V nehmen? Jemand ne Idee??

Bei dem zitierten Beitrag von oben war auch noch der Schaltplan bei der 
auch diesem Beitrag angefügt wurde. Aber irgendwie verstehe ich nicht so 
ganz wo ich jetzt die Diode einbauen müsste.

von Jack P. (crosaider)


Lesenswert?

/push
Niemand sonst noch eine Idee?

von Hannes J. (Firma: eHaJo.de) (joggl) Benutzerseite Flattr this


Lesenswert?

Wie wärs wenn du die Diode so einbaust wie sie in dem Schaltplan 
nachträglich eingezeichnet wurde?

von Jack P. (crosaider)


Lesenswert?

Ich verstehe leider nicht so ganz was das bringen soll. PIN4 am USB 
Anschluss ist GND. Warum dann eine Diode in Sperrichtung zu GND?? Was 
bringt mir das?

Außerdem kann ich die Diode an jedes GND in dem SChaltplan anschließen? 
GND sollte ja eigentlich überall gleich sein also sollte das jawohl 
gehen oder?

von Hubert G. (hubertg)


Lesenswert?

Ich habe so den Eindruck das du bevor du was probierst immer erst noch 
schaust ob es nicht einen Grund geben könnte warum es vielleicht nicht 
funktioniert.
Hast du es mit einem Spannungsregler auf 3,3V schon probiert?

von Jack P. (crosaider)


Lesenswert?

Ich habe doch probiert den USBASP mit 3V zu versorgen und dann darüber 
die Fuses von dem AtMega8L auf meiner Platine zu lesen. Da sagt mir 
Burn'o'Mat aber immer "Target does not answer". Also muss es ja irgendwo 
dran liegen.

von Achim M. (minifloat)


Lesenswert?

Hubert G. schrieb:
> Hast du es mit einem Spannungsregler auf 3,3V schon probiert?

Das ist sowieso eine mehr brauchbare Methode.
Probiers einfach mal mit LM317(musst du erst mit zwei Widerständen auf 
3,3V einstellen) oder dem LP2950 für 
3,3V(http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=lp2950-n&reg=en&fileType=pdf).

In die MISO-Leitung muss dann ein Widerstand rein, der den Programmer 
dann auch 5V-Kompatibel macht. Mit dem Jumper/Schalter für "Target aus 
USBASP versorgen" kann ich bei meinem USBASP nun zwischen 5V oder 3,3V 
oder "aus" umschalten.

Mein 3,3V-USBASP passt ohne Not in diese 
Schachtel:http://www.pollin.de/shop/dt/NzU5OTQ2OTk-/Stromversorgung/Ladegeraete/Spezielle_Lader/Ladeadapter_SEC_0500.html 
:)

mfg mf

von B.A. (Gast)


Lesenswert?

> Da sagt mir Burn'o'Mat aber immer "Target does not answer"

@ Jack P.
Bei einem Fabrik neuen AVR musst du deinen USBasp auf "SlowSCK" stellen, 
erst dann kann der USBasp mit dem AVR kommunizieren.

An der Spannung liegt es nicht, der ATmega8L läuft bei der gleichen 
Frequenz mit einer niedrigeren Spannung.(ist halt besser als die 
nicht-L-Version, hab das bei einigen ATmega8 und 8L ausprobiert, die 
L-Version ist immer hochwertiger)

von Jack P. (crosaider)


Lesenswert?

So habe nun nochmal alles überprüft und jetzt geht es manchmal.

Das komische ist halt wirklich nur manchmal - ich sag mal bei 33% 
funktioniert es. Woran könnte das noch liegen? Wackelkontakt kann ich 
ausschließen alles überprüft. Sonst jemand ne Idee?

von Heinz (Gast)


Lesenswert?

Jack P. schrieb:
> Woran könnte das noch liegen?
Es kann an so Vielem liegen. Am besten, du machst mal ein Foto von 
deinem Aufbau.

von Jack P. (crosaider)


Angehängte Dateien:

Lesenswert?

Ich glaube zwar nicht das euch dsa groß was helfen wird aber es sieht so 
wie im Bild aus. Farben:

Rot => VCC
Blau => GND
GRÜN => SCK
GELB => MOSI
Schwarz => MISO
Weiß => Reset

Es sind 10k Widerstände, welche den Spannungseinbruch verhindern sollen. 
NIcht irritieren lassen von den anderen Bauteilen auf der Lochplatine - 
die sind unwichtig hierfür bzw auch gar nicht angeschlossen.

von Hannes J. (Firma: eHaJo.de) (joggl) Benutzerseite Flattr this


Lesenswert?

Jack P. schrieb:
> Ich verstehe leider nicht so ganz was das bringen soll. PIN4 am USB
> Anschluss ist GND. Warum dann eine Diode in Sperrichtung zu GND?? Was
> bringt mir das?
>
> Außerdem kann ich die Diode an jedes GND in dem SChaltplan anschließen?
> GND sollte ja eigentlich überall gleich sein also sollte das jawohl
> gehen oder?

Dadurch, dass du eine Diode zwischen die USB-Masse und deine 
Platinen-Masse hängst wird das Masse-Potential der Platine um die 
Durchlassspannung der Diode angehoben. Das bedeutet, dass zB die 5V vom 
USB nur noch 4,4 Volt sind. Und damit dein Low-Pegel auch sinkt und 
wieder richtig erkannt wird...

Stichwort: Virtuelle Masse.
Auf diese Art kannst du zB auch die Spannung von nem 78xx ändern.
1
      ____
2
In --|78xx|-- Out
3
     |____|
4
       |
5
     -----
6
      \|/
7
      ---
8
       |
9
      GND

von Jack P. (crosaider)


Lesenswert?

Ich könnte doch eigentlich auch einen Transistor nehmen, die MISO 
Leitung an die Basis legen, an den Kollektor 5V legen und den Emitter an 
den MISO PIN des programmers oder?

Habe hier einen BC547. Welche Widerstände würdet ihr da an Basis und 
Kollektor vorschlagen? Reichen da jeweils 10k Ohm aus??

von Hubert Cumberdale (Gast)


Lesenswert?

sigh

von B.A. (Gast)


Lesenswert?

Wenn du deinen AVR auf dem mp3-Board (welches mit 3V läuft) beschreiben 
möchtest musst du nur die Betriebsspannung deines Programmers auf 3V 
setzen.

Durch die langen Leitungen setzt du dein USBasp noch auf Slow und dann 
geht das.

von Jack P. (crosaider)


Lesenswert?

Also ich habe es jetzt so einigermaßen hinbekommen. Die Fuses können 
manchmal ausgelesen werden allerdings nicht immer. Der USBASP legt jetzt 
3.3V an mein Board.

Wenn ich jetzt die Fuses auslesen und es erfolgreich war kommen über die 
MISO Leitung 3.3V zurück wenn es fehlgeschlagen ist kommen nur 2.8V 
zurück. Hat jemand eine Idee woran das liegen könnte? Die 3.3V am 
Eingang vom Board sind konstant. Wo könnte der Fehler liegen??

von Hubert G. (hubertg)


Lesenswert?

Programmierst du über das AVR-Studio? Wenn ja, welche 
Programmierfrequenz hast du eingestellt.

von Jack P. (crosaider)


Lesenswert?

Ne ich Programmiere über Burn-o-mat. Wo kann ich da die 
Programmierfrequenz einstellen und welche wäre okay?

von Hubert G. (hubertg)


Lesenswert?

Burn-o-mat kenne ich nicht, aber hast du den Jumper für Slow-SCK 
gesteckt?

von Jack P. (crosaider)


Lesenswert?

Ja der ist gesteckt und damit ist die Erfolgsrate auch höher als ohne. 
Trtozdem bricht es manchmal ab...

von Hubert G. (hubertg)


Lesenswert?

Du hast immer noch keine Schaltung gepostet von deiner Mega8 Platine.
Wie sieht es hier mit Kondensatoren aus.

von Jack P. (Gast)


Angehängte Dateien:

Lesenswert?

Sorry ich hatte jetzt lange Zeit kein Internet mehr :(
Schaltplan sieht wie folgt aus ^^

von Hubert G. (hubertg)


Lesenswert?

Wenn C7 der einzige Kondensator in der Stromversorgung ist, dann 
solltest du rasch einiges nachholen.
An alle VCC, AVCC, VDD, AVDD und DVDD Pin einen 100n Kondensator nach 
GND legen. So nahe wie möglich an die jeweiligen Pin.

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.