Forum: Mikrocontroller und Digitale Elektronik USB Programmierer mit Atmega8


von O. E. (gtr123)


Lesenswert?

Hallo, ich habe die Platine für diesen USB Programmierer nachgebaut: 
http://weigu.lu/a/pdf/MICEL_F6_Programmieradapter.pdf

Jetzt wollte ich mit einem anderen Programmiergerät den Atmega8 mit der 
Firmware versehen und die bootloader.hex draufladen. Diese hat 8046 
Byte, 8192 Byte sind ja eigentlich verfügbar, trotzdem kommt ein Fehler 
beim draufladen:
1
Fehler: Das Setzen der Fuses wird nicht unterstützt.
2
brenne Flash, 8046 Bytes ... 
3
Die verfügbare Flash-Größe reicht nicht für die zu brennenden Daten aus. Verfügbar sind 0x1800 Bytes.


Das Setzen der Fusebits geht scheinbar auch nicht. Hat jemand eine 
Ahnung an was das liegen kann? Oder hat(te) sogar jemand dasselbe 
Problem?



Gruß O.E.

von Wolfgang (Gast)


Lesenswert?

O. E. schrieb:
> mit einem anderen Programmiergerät

> Oder hat(te) sogar jemand dasselbe Problem?

Dafür müßte man erstmal wissen, mit welchem Programmiergerät du es 
versucht hast.

von O. E. (gtr123)


Lesenswert?

achso ja klar sorry, benutzt habe ich myAVR Bootloader
- mySmartControl mit der Software myAVR ProgTool, was sonst immer 
wunderbar funktioniert hat

Das Board hier ist es: 
http://shop.myavr.de/Topseller/myAVR%20Board%20light,%20Bausatz.htm?sp=article.sp.php&artID=200084

von O. E. (gtr123)


Lesenswert?

hab jetzt auch noch weiter nach dem Problem gegoogelt, aber scheinbar 
hat niemand ein ähnliches Problem...

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Villeicht meint deine Programmiersoftware, dass 8k = 8000 und nicht 8192 
sind.
Also mal AVR Burn O Mat und avrdude saugen/installen.
Dann damit versuchen.

von holger (Gast)


Lesenswert?

>achso ja klar sorry, benutzt habe ich myAVR Bootloader
>- mySmartControl mit der Software myAVR ProgTool, was sonst immer
>wunderbar funktioniert hat

Du versuchst scheinbar mit einem Bootloader Downloaderprogramm
deine HEX zu flashen. Du kannst aber mit einem
Bootloader keinen Bootloader flashen. Da dieser scheinbar
schon 2kB benötigt hast du nur noch 6kB frei und kannst eben
keine 8kB Hex flashen.

Wenn du deinen Bootloader flashen willst musst du das per ISP machen.

von O. E. (gtr123)


Lesenswert?

Danke für eure Antworten!

Hm okay, sorry dass ich nachfrage aber was heißt per ISP machen und wie 
mache ich das? bin neu im thema mikrocontroller und kenn mich noch nicht 
all zu gut aus

von Dietrich L. (dietrichl)


Lesenswert?

O. E. schrieb:
> Hm okay, sorry dass ich nachfrage aber was heißt per ISP machen und wie
> mache ich das?

ISP = In System Programmer, siehe auch 
http://www.mikrocontroller.net/articles/AVR_In_System_Programmer

Gruß Dietrich

von O. E. (gtr123)


Lesenswert?

Okay danke, leider finde ich da nichts dazu, mit was ich das direkt 
machen kann. ist mein vorhandenes board dazu irgendwie in der Lage oder 
müsste ich dazu extra etwas kaufen?

von O. E. (gtr123)


Lesenswert?

und geht des mit myavr progtool oder brauch ich da dann auch noch eine 
extra software? und über welchen pc-anschluss wird der Mikrocontroller 
dann programmiert?

von Stephan B. (matrixstorm)


Lesenswert?

Hallo.

Ggf. seh dir doch mal:

http://matrixstorm.com/avr/tinyusbboard/

an.

Du kannst tinyUSBboard in einen USBasp-Programmierer "flashen" 
(Firmware ist auf der Seite vorhanden).

Ich verwende das als mein Programmiergeraet und hatte noch keine 
Probleme damit.

MfG

von O. E. (gtr123)


Lesenswert?

Danke für deine Antwort!

Also müsste ich mir nur diese kleine Schaltung aufbauen und kann damit 
dann die Firmware auf den Atmega8 laden?

Wie funktioniert das Teil denn? Andere USB Programmierer brauchen einen 
Bootloader und bei diesem kann man direkt über USB den Mikrocontroller 
programmieren?

Was meinst du mit "Du kannst tinyUSBboard in einen USBasp-Programmierer 
"flashen" "?


Gruß O.E.

von Stephan B. (matrixstorm)


Lesenswert?

Hallo.

Etwas mehr Details hatte ich vor einiger Zeit in

Beitrag "Re: Womit als Anfänger beginnen?"

geschrieben.
Falls du noch Fragen hast - immer her damit.


MfG

von O. E. (gtr123)


Lesenswert?

Vielen Dank, habs mir mal durchgelesen.
Meine Frage ist es, ob ich mit der kleinen Schaltung die 
Bootloader-Firmware auf den Atmega8 laden kann? Und wo ist zu diesem 
Board der Unterschied zu z.b. dem, welches ich verlinkt hab? also dem 
selbstbau-programmieradapter (nicht das myavr light board)

von Stephan B. (matrixstorm)


Lesenswert?

Hallo O.E.

Du kannst versuchen mit deiner Schaltung die Defaultfirmware zu laden 
(und fuses zu setzen).
Aber das Problem schien doch zu sein, das dies nicht zuverlaessig 
funktioniert?
Falls du keinen anderen Programmierer zur Hand hast, zur Not:

http://matrixstorm.com/avr/tinyusbboard/#chickenoregg

Nachdem du einmal einen ATmega erfolgreich geflasht (und gefust) hast, 
brauchst du das so nie wieder zu tun.

Also dieses Board kannst du zunaechst einmal zu mehr als nur 
"programmieren" einsetzen. Es kann dir als eine sehr bequeme 
Steckbrettplattform dienen.
Mehr allgemein dazu: http://matrixstorm.com/avr/tinyusbboard/#advantages
Es emuliert einerseits einen USBasp um sich selbst zu programmieren
(USBaspLoader) kann aber andererseit mit einer Beispielfirmware 
programmiert werden, die es in einen USBasp "verwandelt".
(Wenn man es gerade nicht als USBasp braucht, nutzt man es anderweitig 
g)

Ich glaube aber der entscheidende Vorteil fuer dich ist: Es 
funktioniert!
Vermutlich setzt das andere Board als Programmiere nicht auf USBasp 
sondern auf irgendein serielles Protokoll. Diese kann aber mit USB 1.0 
nicht zuverlaessig implementiert werden, weshalb es zu deinen 
beschriebenen Instabilitaeten kommt.

Der Bootloader (https://github.com/baerwolf/USBaspLoader) ist 
desweiteren voellig ueberarbeitet - die tinyUSBboard firmware 
(http://matrixstorm.com/avr/tinyusbboard/bootloader/rev3_default_ger_lfx3f_hfxc0_v0x96x2.hex) 
8192 Byte.

MfG

von Spess53 (Gast)


Lesenswert?

Hi

Immer wieder interessant, das man das einfache Flashen eines eines AVRs 
noch weiter komplizieren kann. Weiter so. In ein paar Jahren seit ihr so 
weit, das man mindestens zehn Tools basteln muss, um zu einem 
funktionierenden Programmer zu kommen.

MfG Spess

von Stephan B. (matrixstorm)


Lesenswert?

Noe. Das Board reicht auch fuer die naechsten paar Jahre ;-)

Ausserdem ist "Programmer" nur eine Einsatzmoeglichkeit.

Je groesser der Chip, desto laenger dauert ISP. USB ist da einiges 
schneller.

Sorry das sich fuer dich die Welt zu schnell dreht...

MfG

von Spess53 (Gast)


Lesenswert?

Hi

>Je groesser der Chip, desto laenger dauert ISP. USB ist da einiges
>schneller.

Mit einem USB1-Softwaregefrickel? Mach dich nicht lächerlich. Da bin ich 
mit einem STK500 noch schneller.

MfG Spess

von isnah (Gast)


Lesenswert?

Aber die ganze Diskussion löst nicht das "Chicken or the egg (How to get 
the bootloader into the AVR)"-Problem von O.E.
Ich empfehle dir: Such jemand, der einen funktionsfähigen Programmer 
besitzt, und bitte ihn dir 2 Atmega8 mit dem Bootlaoder zu "füllen"
(2Stk darum, dass du, wenn einer abraucht selbt weitere selbst 
programmieren kannst.)

von Stephan B. (matrixstorm)


Lesenswert?

Hi nochmal.

Um einen Byte (8Bit) per ISP zu transferieren muessen 32 Bit aus dem SPI 
kommen. (Siehe "Memory Programming")

Sagen wir mal fuer einen 16MHz getakteten IC die hoechste Rate mit der 
geschrieben werden kann ist 4Mbit/sec (Sehr optimistisch).
Macht 128kbyte/sec - egal was dein UART schafft.
USB ist da schneller, weil hoehere Datenrate und direktes Schreiben...

Wenn du UART fuer deinen STK benutzt wirst du nicht viel mehr haben.
Nun habe ich das STK nie getestet - dafuer aber den Arduinobootloader 
mit aehnlichem (gleichen??) Protokoll.
Das Ergebnis war: Lamgsamer, instabiler und fehleranfaelliger.

Und falls wirklich hindert dich nichts, den USBaspLoader durch einen 
UART-Bootloader zu ersetzen...

MfG

von Stephan B. (matrixstorm)


Lesenswert?

isnah schrieb:
> Aber die ganze Diskussion löst nicht das "Chicken or the egg (How to get
> the bootloader into the AVR)"-Problem

Deswegen:

http://matrixstorm.com/avr/tinyusbboard/#chickenoregg

von isnah (Gast)


Lesenswert?

Stephan, ich glaube du hast den Abschnitt "or the egg (How to get the 
bootloader into the AVR)" in deinem Link nicht genau genug durchgelesen. 
Besonders Ziffer 2. ;-)

von Stephan B. (matrixstorm)


Lesenswert?

isnah schrieb:
> Stephan, ich glaube du hast den Abschnitt "or the egg (How to get the
> bootloader into the AVR)" in deinem Link nicht genau genug durchgelesen.
> Besonders Ziffer 2. ;-)


Okay, doch doch ich sehe ein. Ich habe es ja schliesslich auch 
geschrieben ;-)

von O. E. (gtr123)


Lesenswert?

Danke für eure Antworten!


Stephan B. schrieb:
> Du kannst versuchen mit deiner Schaltung die Defaultfirmware zu laden
> (und fuses zu setzen).
> Aber das Problem schien doch zu sein, das dies nicht zuverlaessig
> funktioniert?


Ich denke mal das Problem ist das, wie es holger beschrieben hat:

holger schrieb:
> Du versuchst scheinbar mit einem Bootloader Downloaderprogramm
> deine HEX zu flashen. Du kannst aber mit einem
> Bootloader keinen Bootloader flashen. Da dieser scheinbar
> schon 2kB benötigt hast du nur noch 6kB frei und kannst eben
> keine 8kB Hex flashen.


Meine Frage ist eigentlich nur, ob das tinyUSBboard dieses Problem dann 
nicht hat?
Und was ist genau ein USBaspLoader?

Leider kenn ich auch überhaupt niemanden, der einen Programmierer hat 
und mir 1 oder 2 Atmega programmieren könnte :/


Gruß O.E.

von Christian B. (luckyfu)


Lesenswert?

Warum nimmst du nicht den fertigen AVR ISP Programmer? Zusammen mit dem 
AVR Studio ist das doch eine sichere Sache. Gerade wenn man anfängt und 
niemanden hat der einem Hilft will man so viele Fehlermöglichkeiten wie 
möglich ausschließen.

ansonsten ist die Frage: In welcher Region treibst du dich herum? Es 
gibt mit sehr hoher Wahrscheinlichkeit in deiner Nähe jemanden, der dir 
helfen kann. Wenn der aber nichts davon weiß...

von Axel S. (a-za-z0-9)


Lesenswert?

O. E. schrieb:
> Hallo, ich habe die Platine für diesen USB Programmierer nachgebaut:
> http://weigu.lu/a/pdf/MICEL_F6_Programmieradapter.pdf

Halte ich für keine besonders glückliche Wahl. Das ist so eine 
eierlegende Wollmilchsau, die alles können will und nix davon richtig. 
Fang doch einfach mit einem Einzweck-ISP-Programmiergerät an.

Ich habe mir z.B. diesen gebaut: http://www.fischl.de/usbasp/

Das Henne/Ei-Problem ist relativ einfach aus der Welt zu schaffen, wenn 
man einen Computer mit Parallelport hat. Dann baut man einmalig einen 
Minimalprogrammierer SP12 a'la http://www.rowalt.de/mc/avr/progd.htm

Zum Programmieren geht dann jedes Tool, das SP12 unterstützt. Ich würde 
hier gleich AVRDUDE empfehlen.

> Jetzt wollte ich mit einem anderen Programmiergerät den Atmega8 mit der
> Firmware versehen und die bootloader.hex draufladen. Diese hat 8046
> Byte, 8192 Byte sind ja eigentlich verfügbar, trotzdem kommt ein Fehler
> beim draufladen:
>
>
1
Fehler: Das Setzen der Fuses wird nicht unterstützt.
2
> brenne Flash, 8046 Bytes ...
3
> Die verfügbare Flash-Größe reicht nicht für die zu brennenden Daten aus. 
4
> Verfügbar sind 0x1800 Bytes.
...
> benutzt habe ich myAVR Bootloader
> - mySmartControl mit der Software myAVR ProgTool, was sonst immer
> wunderbar funktioniert hat

Tja. Blöderweise ist dieses Board kein ISP-Programmer, sondern setzt 
einen Bootloader im zu programmierenden µC voraus (Henne/Ei läßt 
grüßen). Und weil der Bootloader selber auch Platz braucht
(hier anscheinend 0x800 = 2K Bytes) paßt kein Programm größer als
0x1800 = 6K mehr rein.

Das von dir zu ladende Programm bringt aber seinen eigenen Bootloader 
mit. Und da der Bootloader natürlich nicht überschrieben werden darf, 
während er gerade läuft, bist du so oder so aufgeschmissen.

Persönlich empfinde ich diese Bootloader als Seuche. Vor allem weil es 
so viele davon gibt und jeder sein eigenes Süppchen kocht: welche 
Schnittstelle er verwendet, welches Protokoll und damit welche Software 
man auf der PC-Seite braucht. Daß man dann nur einen Teil des Flashs 
benutzen kann und oftmals auch Pins reservieren muß, kommt als 
Sahnehäubchen noch oben drauf.

> Das Setzen der Fusebits geht scheinbar auch nicht.

Das könnte beabsichtigt sein. Schließlich steht in den Fuses auch die 
Größe des Bootloaders drin. Und wenn du das ändern könntest, könntest du 
deine myAVR Spielwiese karpott machen.

Ich sehe im wesentlichen drei Möglichkeiten, wie du weitermachen kannst

1. du siehst zu, daß du einen SP12 "Notprogrammierer" zusammenkriegst 
und flashst dir so deinen ersten USB-Programmierer selber. Da deine 
Hardware fast identisch zum USBasp ist, kannst du auch von USB-Lab auf 
USBasp umorientieren.

2. du suchst dir jemand der dir einen ATmega8 programmiert. Das gibts 
auch preiswert kommerziell, z.B. 
http://www.ehajo.de/Dienstleistungen/Programmierung-Mikrocontroller

(das sind EUR 1,55 für einen ATmega8A und EUR 0,60 für das Programmieren 
- finde ich unverschämt preiswert)

3. du kaufst einen fertigen Programmer oder einen Bausatz mit 
vorprogrammiertem µC. Preiswert und wirklich gut ist z.B. 
http://www.ehajo.de/%25-Schnaeppchen-%25/AVR-ISP-Stick


PS: falls das gerade wie Werbung rüberkam: ich bin mit dem Betreiber 
weder verschwägert noch bekomme ich Prozente. Ich habe aber erst 
kürzlich was bei ihm bestellt - u.a. einen ISP-Stick als Zweitprogrammer 
- und finde sein Angebot wirklich überzeugend.

PPS: die USBasp Firmware ist gerade mal 4K groß. Prinzipiell müßtest du 
die mit myAVR in einen ATmega8 reinbekommen (in dem sich natürlich 
vorher der myAVR Bootloader befinden muß). Das wäre dann ein 4. Weg.


XL

von Axel S. (a-za-z0-9)


Lesenswert?

Nachtrag:

Axel Schwenke schrieb:

>> Das Setzen der Fusebits geht scheinbar auch nicht.
>
> Das könnte beabsichtigt sein.

Tatsächlich geht das gar nicht anders. Aus einem laufenden Programm 
heraus (ein Bootloader ist ein solches) kann man die Fuses gar nicht 
setzen.

> PPS: die USBasp Firmware ist gerade mal 4K groß. Prinzipiell müßtest du
> die mit myAVR in einen ATmega8 reinbekommen (in dem sich natürlich
> vorher der myAVR Bootloader befinden muß). Das wäre dann ein 4. Weg.

Das fällt dann vermutlich flach. Du könntest zwar die USBasp Firmware 
flashen, aber wenn die Fuses nicht zufällig schon kompatibel gesetzt 
sein sollten (im wesentlichen für einen externen Quarz mit 12MHz) dann 
wird es nicht funktionieren.


XL

von Stephan B. (matrixstorm)


Lesenswert?

O. E. schrieb:
> Meine Frage ist eigentlich nur, ob das tinyUSBboard dieses Problem dann
> nicht hat?
> Und was ist genau ein USBaspLoader?

Also ein Feature, was meines Wissens kein anderes Bootloader-Board 
bietet:

Die Bootloadersektion bleibt austauschbar ("bootloader section 
update-/exchangeable without any further programming device needed") 
und der Schutz vor versehentlichen Ueberschreiben wird von der Software 
anstatt von den Lockbits uebernommen.

Um deinem Leiden ein Ende zu setzen, hier mein Angebot:

Wenn du in Deutschland einen Briefkasten haben solltest und mir einen 
(1) Euro fuer die Warensendungbriefmarke ueberweist sende ich dir nen 
Bausatz mit vorprogrammierten Rev.3 Chip.
Alernativ kannst du mir auch die Briefmarke per Post senden - halte ich 
aber fuer Overhead...

MfG Stephan


Achso, Nachtrag: USBaspLoader ist der standardmaessig installierte 
Bootloader: https://github.com/baerwolf/USBaspLoader
Es gibt aber bereits auch firmwares fuer  BootloadHID und AVRUSBBoot.

USBaspLoader erlaubt dir, dass du immer wieder bequem per USB Interface 
die auf dem Board installierte firmware auswechseln kannst.

Ggf. les dich mal bissel intensiver durch die Seite...

von O. E. (gtr123)


Lesenswert?

Nochmals vielen Dank für eure wirklich ausführlichen Antworten!

Axel Schwenke schrieb:
> Ich sehe im wesentlichen drei Möglichkeiten, wie du weitermachen kannst

Ja ich überleg mir nochmal wie ich weitermache, will das USB-Lab aber 
auf jeden Fall irgendwann zu Ende bringen, da ich schon mit dem Löten 
begonnen und auch fast fertig bin. Es wurde mir empfohlen und habe 
eigentlich auch nur gutes darüber gehört. Notfalls lass ich mir den 
Atmega einfach programmieren,  2,15€ für einen programmierten Atmega8 
ist ja nun wirklich nicht viel.



@Stephan B.:
danke, ich werd mich auf jeden Fall intensiver damit beschäftigen, ich 
will ja auch etwas dazulernen.
Und danke für dein Angebot. Was genau ist das denn für ein Bausatz?



Gruß O.E.

von Stephan B. (matrixstorm)


Lesenswert?

O. E. schrieb:
> Was genau ist das denn für ein Bausatz?

http://matrixstorm.com/avr/tinyusbboard/#components


Das Set enthält in einem Zipbeutel:

1x grob vorgeschnittene (halbierte 5cm x 7cm) (Prototyp-)Leiterplatte (8 
x 24 lötbare Punkte à 0.1")
(Die Platine bedarf weiterer "Beschneidung"/"Bearbeitung" damit 
USB-Stecker eingesetzt werden kann)

1x vorprogrammierter (und "vorgefuster") ATmega8-16PU

1x USB-Stecker (Typ A)
1x Widerstand 1.5kOhm
2x Zenerdiode 3.6V (1N4729)
2x Widerstand 68Ohm (1/6W)

1x Quarz 16MHz
2x Keramikkondensator 18pF
1x Pinleiste 14Pins
1x Pinleiste  3Pins
2x Pinleiste  4Pins

2x Taster (tactile push button)

4x LED 3mm rot
1x LED 3mm grün
5x Widerstand 1kOhm (1/6W)

2x rund 13cm Kabel


zusätzlich:
1x Keramikkondensator 1uF

von Uwe (Gast)


Angehängte Dateien:

Lesenswert?

Diese Software (ponyprog) löst dein Henne-Ei Problem mit der 
nachstehenden Schaltung:
http://www.lancos.com/prog.html

von Uwe (Gast)


Lesenswert?

Also :
4 Widerstände
2 Z-Dioden 4,7V-5.1V
1 NPN Transistor

von O. E. (gtr123)


Lesenswert?

Uwe schrieb:
> Diese Software (ponyprog) löst dein Henne-Ei Problem mit der
> nachstehenden Schaltung:
> http://www.lancos.com/prog.html


Danke! Diese oder eine ähnliche Schaltung habe ich auch schon gefunden, 
allerdings bräuchte ich da ja einen Parallelport am PC...



Gruß O.E.

von isnah (Gast)


Lesenswert?

Lesen ist eine Kunst. In Uwes Anhang steht doch  "Serial-Port", aber ich 
vermute du hast nur USB zur verfügung. Darum der gute Rat, probier schon 
gar nicht den Programmer über einen USB-Serial-Converter zu betreiben - 
Es wird mit 90%-er Sicherheit scheitern.

von O. E. (gtr123)


Lesenswert?

Sorry hatte mich verschrieben, meinte natürlich die serielle 
Schnittstelle, die ich aber leider auch nicht habe, wie du richtig 
vermutet hast.
Ja ich hab auch schon gelesen, dass man davon die Finger lassen sollte.

von Stephan B. (matrixstorm)


Lesenswert?

...Ich empfehle Tastatur LEDs - falls nichts anderes geht...

Punkt 5 meiner Liste 
(http://matrixstorm.com/avr/tinyusbboard/#chickenoregg).

von O. E. (gtr123)


Lesenswert?

besser gesagt, ich hab falsch gedacht und das dann geschrieben ;)

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Stephan B. schrieb:
> Um deinem Leiden ein Ende zu setzen, hier mein Angebot:
>
> Wenn du in Deutschland einen Briefkasten haben solltest und mir einen
> (1) Euro fuer die Warensendungbriefmarke ueberweist sende ich dir nen
> Bausatz mit vorprogrammierten Rev.3 Chip.

--> O. E.
Warum nimmst du Stephans Angebot nicht an? Das ist doch eine super 
Sache!
Mit einem eigenen Programmer hast du nachher alle Freiheiten.

Wenn du mir deine Adresse zukommen lässt, schick ich dir gern auch einen 
Programmer. Der ist dann nicht so komfortabel wie der von Stephan, aber 
sonst läuft dieser Thread ja ewig. ;-)

Markus

von Stephan B. (matrixstorm)


Lesenswert?

Hi O.E., hi Markus

Mein Brief geht nachher zur Post ;-)

MfG

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Stephan B. schrieb:
> Mein Brief geht nachher zur Post ;-)

Danke, du tust ein gutes Werk. :-)

von O. E. (gtr123)


Lesenswert?

@Markus Weber: ich habe sein Angebot angenommen. Danke auch für dein 
Angebot ;)

@Stephan B.: Vielen Dank! die Überweisung wurde gestern früh getätigt. 
;)


Gruß O.E.

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.