AVR-Programmer selber bauen

#2754633
Lesenswert?

Hi,

ich hab schon erfolgreich einen Arduino als Programmer zum Laufen 
gebracht; jetzt möchte ich das mit einem µC und dazu nötigen Bauteilen 
machen. Dazu hab ich schon 
http://www.ullihome.de/wiki/USBAVRLab/Firmwares/AVRISPmkII gefunden. 
Dieser ist genau das, was ich mir vorstelle, nur dass ich keinen ATmega8 
habe. Funktioniert dies auch, wenn ich einen ATmgea328P oder ATtiny84 
einsetze (diese hab ich gerade da)? Die Firmware liegt zum Download 
leider nur im hex-Format da. Den Schaltplan hab ich mal in einer PDF 
heruntergeladen. Von wo, weiss ich nicht mehr; habs also im Anhang. (Ich 
weiss nicht, ob mikrocontroller.net PDFs als Anhang annimmt. Falls 
nicht, lad ich es auf einen anderen Server hoch und poste datu den 
Link.)

Kurz gefasst:
Ich möchte einen AVR-Programmer bauen, und möchte wissen, ob ich einen 
ATmega328P oder ATtiny84 statt dem ATmega8 benutzen kann.


Danke
cheeseburgerohnekaese
Angehängte Dateien:
#2754677
Lesenswert?

Michael D. schrieb:
> Beim ATmega8:
> PORTB: 0x18, DDRB: 0x17, PINB: 0x16
> PORTC: 0x15, DDRC: 0x14, PINC: 0x13
> PORTD: 0x12, DDRD: 0x11, PIND: 0x10
>
> Beim ATmega328P:
> PORTD: 0x0B, DDRD: 0x0A, PIND: 0x09
> PORTC: 0x08, DDRC: 0x07, PINC: 0x06
> PORTB: 0x05, DDRB: 0x04, PINB: 0x03
Und was willst du damit zum Ausdruck bringen?
Wen interessieren die Adressen der Register? Darum kümmert sich der 
Compiler solange die Namen für die Portregister und die Pins gleich 
sind.

mfg.
#2754954
Lesenswert?

Mein Rat:

Also entweder einen Programmer mit atmega8 bauen oder ein bestehendes 
atmega8-Programm auf einen 328 umstellen.

Beides aber gleichzeitig zu tun dürfte die Probleme quadrieren.

Schau Dir  http://www.loetlabor.org/Ulliasp
und:       http://www.loetlabor.org/USBasp     an.

Dort findest Du ein Angebot für einen Bausatz zu ca. 5Euro.
Dann zuerst die atmega8-Version bauen, danach kanns ja eine mit 328 
werden.

Bei älteren Softwareversionen von Ulli ist meines Wissens auch der 
Sourcecode für den bootloader zu finden.
#2755481
Lesenswert?

Hab noch weiter gesucht und bin auf der der Seite von USBasp 
(http://www.fischl.de/usbasp/) gelandet. Bei diesem kann man entweder 
einen ATmega8 oder ATmega88 verwenden. Jetzt meine Frage: Kann ich bei 
diesem auch einen ATmega328P verwenden, weil es nur ein Datenblatt für 
den ATmega88, ATmega328P, und noch ein paar gibt?

Danke
cheeseburgerohnekaese
#2755641
Lesenswert?

Jonathan A. schrieb:
> Jetzt meine Frage: Kann ich bei
> diesem auch einen ATmega328P verwenden, weil es nur ein Datenblatt für
> den ATmega88, ATmega328P, und noch ein paar gibt?
Wenn du den Sourcecode von der 88er-Version hast, kannst du das einfach 
für den 328 neu kompilieren. Ohne Änderungen.
Hast du nur das Hexfile, geht das nicht.

Jonathan A. schrieb:
> Muss ich für den USBasp den Bootloader von der Website (fischl.de)
> nehmen?
Grundsätzlich kannst du die Anwendung auch per ISP flashen und auf den 
Bootloader verzichten. Es sei denn, es sind da irgendwelche 
Schweinereien eingebaut, die es erforderlich machen, daß vorher der 
Bootloader gestartet
wird. Aber normalerweise macht man so einen Unsinn nicht.

Das Hexfile für den 88er Bootloader nützt dir alleine aber auch nichts, 
da das in den Bootsektor des 88er geflasht wird. Dieser Speicherbereich 
ist aber beim 328er im Applikationssektor.

Das wird dieses Wochenende nichts mehr. Bestell' beim Lieferanten deines 
Vertrauens den 88er und verschieb' das auf Dienstag.

mfg.
#2755665
Lesenswert?

Noch was: Aus dem Schaltplan müsste ich alles haben; bis auf die zwei 
Dioden, die an den USB-Leitung hängen. Wenn ich das richtig ergooglet 
habe (Beitrag "Warum Zener Diode bei USB asp (und anderen)"), sind diese dafür da, 
weil die Datenleitung von USB mit 3,3V arbeitet. Wenn ich das: 
http://www.electronicspoint.com/using-1n4001-zener-diode-t124073.html 
richtig verstanden hab, müsste ich doch 2 1N4001 hintereinander schalten 
können und ich hab meine 3,3V. Oder? Falls nicht, ich hab auch 
Spannungregler, die auf 3,3V regeln. Würde sowas gehen, oder ist das zu 
langsam (Schaltgeschwindigkeit)?

Danke
cheeseburgerohnekaese
#2755666
Lesenswert?

Jonathan A. schrieb:
> Ich habs jetzt mal auf der schnelle mit der 88er-HEX
> getestet. Der AVR tut noch und die rote LED leuchtet, wie sie es soll.
Der Programmer besteht aber aus mehr als einer LED, die zufällig 
leuchtet.

Beim 168/328 ist die Vektortabelle doppelt so lang wie beim 48/88.
Somit fängt das eigentliche Programm im Flash auch dementsprechend 
später an.
Das ist auch ein Grund dafür, daß das Programm für den 168/328 etwas 
länger ist als für die beiden Kleinen.

mfg.
#2755673
Lesenswert?

Thomas Eckmann schrieb:
> Jonathan A. schrieb:
>> Ich habs jetzt mal auf der schnelle mit der 88er-HEX
>> getestet. Der AVR tut noch und die rote LED leuchtet, wie sie es soll.
> Der Programmer besteht aber aus mehr als einer LED, die zufällig
> leuchtet.
>
> Beim 168/328 ist die Vektortabelle doppelt so lang wie beim 48/88.
> Somit fängt das eigentliche Programm im Flash auch dementsprechend
> später an.
> Das ist auch ein Grund dafür, daß das Programm für den 168/328 etwas
> länger ist als für die beiden Kleinen.
>
> mfg.

Ja. Ich werd das noch richtig machen. Das war halt, bevor ich das noch 
nicht wusste. :)
#2755693
Lesenswert?

Thomas Eckmann schrieb:
>> 2 1N4001
> Kannst auch eine rote Leuchtdiode nehmen. Macht man bei VUSB auch.

Aber die Dioden gehen auch?

Und muss ich das dann so schalten (USB hier ohne +5V und GND):


|-----+ D+  -----------+
| USB |                |
|-----+ D-  ----+     | | 1N4001 2x
                |     | |
     1N4001 2x | |     |
               | |     |
                |      |
GND  -----------+------+


UND: Muss ich dann nur eine LED nehmen?


Danke
cheeseburgerohnekaese
#2755718
Lesenswert?

Hier (http://www.recursion.jp/avrcdc/cdc-spi.html#schematic) sieht der 
Bereich, der von der USB-Buchse zum µC geht ganz anders aus als bei dem 
USBasp (siehe Anhang) kann ich den USBasp mit der Schaltung von 
http://www.recursion.jp/avrcdc/cdc-spi.html#schematic nehmen oder muss 
ich dazu die Schaltung aus dem Anhang nehmen?

Danke
cheeseburgerohnekaese
Angehängte Dateien:
#2755805
Lesenswert?

Jonathan A. schrieb:
> Schaltung aus dem Anhang
Bei der LED-Geschichte wird der Controller mit 3,xV versorgt, sodaß er 
gar keine 5V auf den USB geben kann.
Bei der anderen Schaltung wird der Controller mit 5V versorgt und würde 
demzufolge auch 5V auf den USB geben. Dazu sind die Z-Dioden.
Jetzt stellt sich mir allerdings gerade die Frage, ob die Schaltung wenn 
sie mit 3,xV versorgt wird, noch zuverlässig programmieren kann. Da 
schafft man sich u.U. einen Nebenkriegsschauplatz, den man nicht 
gebrauchen
kann.

> Oder? Falls nicht, ich hab auch
> Spannungregler, die auf 3,3V regeln. Würde sowas gehen, oder ist das zu
> langsam (Schaltgeschwindigkeit)?
Jetzt verstehe ich auch erst, wie das gemeint ist. Ich denke mal nicht, 
daß das geht, wenn man die Daten über den Spannungsregler schiebt.
Da wären wohl doch die 4001 besser geeignet. Nur nicht 2, sondern 5 
Stück in Reihe. Damit hättest du dann in Durchflussrichting ca. 3,5V 
Sopannungsabfall. Also in etwa wie die Z-Diode.
Etwas halbgar ist das schon. Aber zum Testen wird es wohl gehen. Bis man 
wieder Z-Dioden kaufen kann.

> Wieso funktioniert dann das?
Die Frage sollte man sich nicht wirklich stellen. Aber mit tiny45, 
interner Takt und mega 48 mit 20MHz funktioniert es. Die Arduinos laufen 
auch mit 3,3V und 16MHz, obwohl sie das eigentlich gar nicht dürften.

> WIESO hängt die LED ohne Wiederstand da dran. Das hat mir grad ne LED
> zerschossen (das ist zwar net schlimm um die LED, aber ...). Mein
> USB-Anschluss geht zum Glück noch. Ist das, weil der Controller noch
> hintendran hängt???
Der Controller ist der Vorwiderstand. Da muss eine 20mA LED rein.
2mA ist zu klein. Der Controller läuft dann mit 3,3V.

mfg.
#2755811
Lesenswert?

Thomas Eckmann schrieb:
>> Oder? Falls nicht, ich hab auch
>> Spannungregler, die auf 3,3V regeln. Würde sowas gehen, oder ist das zu
>> langsam (Schaltgeschwindigkeit)?
> Jetzt verstehe ich auch erst, wie das gemeint ist. Ich denke mal nicht,
> daß das geht, wenn man die Daten über den Spannungsregler schiebt.
> Da wären wohl doch die 4001 besser geeignet. Nur nicht 2, sondern 5
> Stück in Reihe. Damit hättest du dann in Durchflussrichting ca. 3,5V
> Sopannungsabfall. Also in etwa wie die Z-Diode.
> Etwas halbgar ist das schon. Aber zum Testen wird es wohl gehen. Bis man
> wieder Z-Dioden kaufen kann.

Dann nehme ich wohl diese Lösung, weil ich grad letztens 30 1N4001 
bestellt hab. D.h.: Ich nehme die Schaltung aus dem Schaltplan nur statt 
den Z-Dioden jeweils 5x 1N4001. Wenn ich irgendwo falsch liege, bitte 
sagen; ich will ja nichts kaputt machen. :)


Danke
cheeseburgerohnekaese
#2756150
Lesenswert?

Jonathan A. schrieb:
> Kann ich statt dem 4.7µF-Kondensator auch einen mit 10µF nehmen? Und
> evtl. sagen, was der macht? Dann könnte ich evtl. auch selber drauf
> kommen.
Das kommt so genau nicht drauf an. Ist ja kein Taktgeber. Der soll die 
Spannung stabil halten. Nur kleiner sollte man ihn nicht machen, dann 
verfehlt er evtl. seinen Sinn.
Und? Läuft das schon?

mfg.
#2756451
Lesenswert?

This can be attributed to the voltage divider consisting of the 68 ohm 
resistor and the 1.5k ohm pull up resistor on the device. This causes a 
voltage difference of 68 / (68 + 1500) * (3 volts) = 130 mV to occur.
Quelle: 
http://lackawanna.hackhut.com/2011/10/04/using-v-usb-and-the-hid-class-part-i/

Wenn ich da meine 100 Ohm und meine 2,2 kO einsetze, kommt da auch 
ungefähr 130 mV raus. Müsste das dann also funktionieren?


Danke
cheeseburgerohnekaese
#2756498
Lesenswert?

Ok. Danke. Hab doch noch einen letzten 68 Ohm Widerstand. Hab jetzt die 
Schaltung auf dem Steckbrett exact so, wie im Schaltplan, bis auf die 
Dioden (jetzt jeweils 5x 1N4001 in Reihe), aufgebaut. Hatte erst schiss 
an den Lappi anzuschliessen, weil wenn ich was falsch gemacht hab, ... 
Aber ich habs angeschlossen und es hatte Strom wie es Strom haben soll 
und keinen Kurzschluss. Es kommt nur eine Meldung, dass ein USB-Gerät da 
ist, aber nicht erkannt wurde. Genaure Infos über das Gerät sind nicht 
vorhanden. Also ATmega-Problem. Oder liegt das ein meinen "Fake-Dioden"? 
Oder was?

Danke
cheeseburgerohnekaese
#2756529
Lesenswert?

Jonathan A. schrieb:
> Hatte erst schiss
> an den Lappi anzuschliessen, weil wenn ich was falsch gemacht hab, ...
Immer einen Hub dazwischen hängen.
Wenn dann was schief geht, ist der 499-Cent-Hub im Arsch und nicht der
499-Euro-Laptop.
Zumindest ist sie Wahrscheinlichkeit groß, daß dem Laptop nichts 
passiert.

> Dieses Gerät wurde angehalten, weil es Fehler gemeldet hat. (Code 43)
D+/D- vertauscht?

Spannung auf D+/D- zu gering?
Da kommt jetzt wieder die halbgare 5-Dioden-Schaltung ins Spiel. Einfach 
mal messen, ob die 3,5V auch da sind. 1N4001 brauchen, wie alle Dioden, 
auch ein wenig Strom, um sich auf 0,7V einzustellen. Und zwar einiges 
mehr als eine 1N4148. Möglicherweise ist der zu gering.
Also besser Z-Dioden besorgen.

(Richtiger) Treiber installiert?

Richtiges Programm auf Atmega geflasht?

mfg.
#2756550
Lesenswert?

Thomas Eckmann schrieb:
> Immer einen Hub dazwischen hängen.
> Wenn dann was schief geht, ist der 499-Cent-Hub im Arsch und nicht der
> 499-Euro-Laptop.
> Zumindest ist sie Wahrscheinlichkeit groß, daß dem Laptop nichts
> passiert.

Gut zu wissen.



Thomas Eckmann schrieb:
>> Dieses Gerät wurde angehalten, weil es Fehler gemeldet hat. (Code 43)
> D+/D- vertauscht?

Nein. Sogar öfters überprüft. Hatte ich auch schon gedacht. Hier könnte 
nur der Fehler sein, wenn 
http://4.bp.blogspot.com/-Jm5HRvqog8E/T8em9sKzQlI/AAAAAAAABq8/IqXq_cL-JWw/s1600/color_code_usb_pins.JPG 
nicht stimmt!




Thomas Eckmann schrieb:
> Spannung auf D+/D- zu gering?
> Da kommt jetzt wieder die halbgare 5-Dioden-Schaltung ins Spiel. Einfach
> mal messen, ob die 3,5V auch da sind. 1N4001 brauchen, wie alle Dioden,
> auch ein wenig Strom, um sich auf 0,7V einzustellen. Und zwar einiges
> mehr als eine 1N4148. Möglicherweise ist der zu gering.
> Also besser Z-Dioden besorgen.

Leider hab ich letztens die Sichrung meines Multi-Meters zum Messen 
zerschossen; ... Gibt es noch eine andere Möglichkeit? Aber um die 
Z-Dioden, komm ich wohl nicht drum herum. Ich vermute, dass hier der 
Fehler ist.

Thomas Eckmann schrieb:
> (Richtiger) Treiber installiert?
AVR Bastler schrieb im Beitrag #2756530:
> Schaut so aus, ob kein Treiber auf dem Lappi installiert wurde.
> Stichwort LibUSB.

Ich hatte schon mal Probleme mit uC und hab deswegen LibUSB schon 
installiert. Sonst hab ich keine anderen Treiber dazu gefunden.


Danke
cheeseburgerohnekaese
#2756561
Lesenswert?

EDIT zu POST [16.07.2012 00:37]:

Thomas Eckmann schrieb:
> Richtiges Programm auf Atmega geflasht?

Ich glaub ja. Ich hab in der Makefile hab ich die Fuses, den Prozessor, 
den Port die Baud-Rate und die CPU-Geschwindigkeit eingestellt und so 
alles neu kompiliert. Der Compiler gab keine Warnings und keine Errors 
aus.
Der Code ist für den ATmega8  ATmega48  ATmega88 entwickelt. Aber das 
hatten wir ja schon oben geklärt. Sonst müsste der Code richtig sein.
Falls ich doch irgendwo falsch liege einfach wieder posten.



Danke
cheeseburgerohnekaese
Gast #2756589
Lesenswert?

Mögliche weitere Fehlerquellen:

Es wird ein Quarz ungleich 12MHz verwendet. Das Timing bei USB ist sehr 
kritisch und ein umprogrammieren der Timer allein ist nicht erfolgreich.

Sind die 4001 Dioden richtig gepolt. Im Gegensatz zu den empfohlenen 
Zenerdioden müssen diese mit den Kathoden Richtung Masse verwendet 
werden (in Durchlassrichtung, nicht in Sperrrichtung).
#2756936
Lesenswert?

AVR Bastler schrieb im Beitrag #2756589:
> Es wird ein Quarz ungleich 12MHz verwendet. Das Timing bei USB ist sehr
> kritisch und ein umprogrammieren der Timer allein ist nicht erfolgreich.

Ich hab letztens mehre Qurze bestellt und verwende im Momenen exact 12 
MHz.
Der Rest des Schaltplans hab ich exact aufgebaut, jetzt auch mit den 68 
Ohm Widerständen, die ich zu erst nicht gefunden hatte.




AVR Bastler schrieb im Beitrag #2756589:
> Sind die 4001 Dioden richtig gepolt. Im Gegensatz zu den empfohlenen
> Zenerdioden müssen diese mit den Kathoden Richtung Masse verwendet
> werden (in Durchlassrichtung, nicht in Sperrrichtung).

Ah. Ok. Hatte ich falsch. Danke!! Mein Programmer tut aber immer noch 
nicht. :(


Danke
cheeseburgerohnekaese
#2757017
Lesenswert?

Jetzt funktioniert es etwas mehr. Es wird als USBasp erkannt, findet 
aber keine Treiber. Ich suche nochmal danach. Problem war der 
4.7uF-Kondensator. Der ist mir beim Umpolen der Dioden "rausgeruscht" 
und hatte keine Kontakt mehr.

EDIT: Treiber aus dem Ordner /bin/win-driver/ automatisch installieren 
lassen und es wird erkannt. Danke für jede Hilfe. Jetzt teste ich, ob es 
auch andere MCU's programmiert. :)


Danke
cheeseburgerohnekaese
#2757539
Lesenswert?

Jetzt wollte ich einen weiteren Sockel für den zu proramierenden 
Controller auflöten (hab es jetzt auf einer Platine). Nur seit dem 
blinkt die rote Led ganz schnell und unregelmäßig. Sie müsste eigtl. 
leuchten. Direkt am Controller hab ich das mit einer Led getestet. Dort 
blinkt die Led nicht. Ist der Controller kaputt (das kann eigtl. nur 
sein, wenn 3-5 sec bei 350° C mit dem Lötkolben am Sockel, wo der 
Controller drin ist, schlimm ist)?

Danke
cheeseburgerohnekaese
Gast #2760131
Lesenswert?

Jonathan A. schrieb:
> http://www.ullihome.de/wiki/USBAVRLab/Firmwares/AVRISPmkII gefunden.
> Dieser ist genau das, was ich mir vorstelle, nur dass ich keinen ATmega8
> habe.

hallo, das teil hatte ich auch mal aufgebaut. ohne ullis arbeit 
schmälern zu wollen, das teil lief bei mir ziemlich wackelig, besonders 
bei größeren programmen (=längere datenübertragung).

war dann vorübergehend wieder auf sp12 (parallelprogger) umgestiegen und 
hab mir dann ein einen echten AVRISPmkII neu für 29€ geholt. das teil 
ist im gegensatz zum clon absolut zuverlässig, auch bei langen 
.hex-files und hoher taktrate.

nur mal so als tipp!

:O)
Gast #2760142
Lesenswert?

Dered schrieb:
> hallo, das teil hatte ich auch mal aufgebaut. ohne ullis arbeit
> schmälern zu wollen, das teil lief bei mir ziemlich wackelig, besonders
> bei größeren programmen (=längere datenübertragung).
>
> war dann vorübergehend wieder auf sp12 (parallelprogger) umgestiegen und
> hab mir dann ein einen echten AVRISPmkII neu für 29€ geholt. das teil
> ist im gegensatz zum clon absolut zuverlässig, auch bei langen
> .hex-files und hoher taktrate.
>
> nur mal so als tipp!
>
> :O)

Also mit meinem selbstgebauten USBasp hab ich eine 
Schreibgeschwindigkeit von ca. 200 Byte/s. Ist das schnell?

Danke
burgerohnealles
Gast #2760219
Lesenswert?

spess53 schrieb:
> Das ist schnarchlangsam. AVR ISP MKII (Controller @ 11MHz) ca. 10K/s.

Na ja. Dafür konnte ich es machen, ohne extra Teile zu kaufen. (Bin 13 
-> Hab nicht so viel Taschengeld.)

Es funktioniert und das ist für mich die Hauptsache.
Ach ja. Bringt es was nen schnelleren Quarz einzubauen. Oder gibt es 
dann Probleme mit dem USB?


Danke
burgerohnealles

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren