USB Programmierer mit Atmega8

OP #3293929
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.
Gast #3294290
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.
OP #3296765
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.
OP #3296923
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)
#3297693
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
Gast #3297780
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
Gast #3297809
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
Gast #3297815
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.)
#3297826
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
OP #3298159
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.
#3298191
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ß...
#3298330
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
#3298347
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
#3298371
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...
OP #3298785
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.
#3298788
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
Gast #3299195
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.
(Firma: guloshop.de) #3299871
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

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