Forum: Mikrocontroller und Digitale Elektronik AVR MKII + ATmega16


von Teddy H. (teddybear)


Lesenswert?

Hallo zusammen,

ich habe ein Problem mit folgender Hard.- und Software:

-WinAVR 20081205
-USBprog mit "AVR ISP MKII klon" von embedded-projects
-Atmel Evaluationboard v2.01 von Pollin
-ATmega16

Ich versuche mir das Programmieren in C mit den oben dargestellten Tools 
selbst beizubringen allerdings hapert es im Moment noch bei der 
Inbetriebnahme der Hardware. Ich habe ein einfaches Programm, dass ich 
zu Inbetriebnahmezwecken auf den ATmega programmieren will. Beim 
Programmieren gibt mir das Output-Fenster folgende (Fehler)Meldung:


> "make.exe" program

Compiling C: Test01.c
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=16000000UL -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=./Test01.lst  -std=gnu99 -MMD -MP -MF 
.dep/Test01.o.d Test01.c -o Test01.o

Linking: Test01.elf
avr-gcc -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=16000000UL -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=Test01.o  -std=gnu99 -MMD -MP -MF 
.dep/Test01.elf.d Test01.o --output Test01.elf 
-Wl,-Map=Test01.map,--cref     -lm

Creating load file for Flash: Test01.hex
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock Test01.elf Test01.hex

Creating load file for EEPROM: Test01.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
  --change-section-lma .eeprom=0 --no-change-warnings -O ihex Test01.elf 
Test01.eep || exit 0
avrdude -p atmega16 -P usb -c avrisp2    -U flash:w:Test01.hex

avrdude: stk500v2_command(): command failed
avrdude: stk500v2_recv_mk2: error in USB receive
avrdude: stk500v2_program_enable(): bad STK600 connection status: 
Unknown (0x64)
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

make.exe: *** [program] Error 1

> Process Exit Code: 2
> Time Taken: 00:13


Das Programm ist natürlich danach nicht auf dem ATmega.
Meine Vermutung ist nun folgende: Ich nutze a den o.a. "AVR ISP MKII 
klon" und in dem Output-Fenster wird der "stk500v2"-Programmer erwähnt. 
Ich denke also, ich habe den "AVR ISP MKII klon" irgendwo nicht richtig 
initialisiert. In den Makefiles habe ich den "avrisp2" als Programmer 
angegeben, da kein MKII zur auswahl dort steht. Das sollte aber 
eigentlich (nach dem, was ich gelesen habe) nicht die Fehlerquelle sein. 
Oder doch?
Bitte helft mir! Ich hühnere nun schon fast zwei Monate mit dem Kram rum 
und komme nicht vorwärts...


Grüße
Teddy

von Hubert G. (hubertg)


Lesenswert?

Warum verwendest du nicht das AVR-Studio, da würdest du dir den ganzen 
makefile Kram ersparen. Ausserdem sollte der Klon direkt unterstützt 
werden.
Es wäre also wesentlich komfortabler.

von Teddy H. (teddybear)


Lesenswert?

AVR-Studio hatte ich auch schon in meiner Testkonstellation mit drinne 
(auch unter Berücksichtigung der beiden unterschiedlichen Treiber). 
Allerdings fand dort gar keine Kommunikation mit dem Klon statt, bzw. 
kam ich dort mit den Connect-Einstellungen zu dem usbprog nicht klar und 
habe dies wieder verworfen. Mit WinAVR tut sich zumindest etwas.

von Oliver (Gast)


Lesenswert?

>Mit WinAVR tut sich zumindest etwas.

Das ist ein Trugschluß. Die Kommunikation funktioniert nicht. Weder  mit 
dem Studio, noch mit AVRDude, nur sind bei lezterem die Fehlermeldungen 
kryptischer. Warum das nicht funktioniert, ist unklar. Treiberprobleme, 
Hardwareprobleme in Programmer oder Board, Spannungsversorgung, alles 
ist möglich. Deine makefile-Einstellungen sind richtig.

Oliver

von Hubert G. (hubertg)


Lesenswert?

Bei USB im AVR-Studio ist es so, das das AVR-Studio öfter die Nummer der 
COM-Schnittstelle nicht zur Verfügung stellt, die Windows vergibt.
Abhilfe ist hier die COM-Schnittstelle in der Systemsteuerung auf einen 
Wert zu verlegen den das AVR-Studio vorgibt.
Bei AVR-Dude kann ich dir leider nicht helfen, das hatte ich noch nie in 
Verwendung.

von Teddy H. (teddybear)


Lesenswert?

@Oliver: Probleme in der Hardware des usbprog und des Evaluationboard 
wage ich auszuschließen, da ich beide selbst gefertigt und getestet habe 
(Intensive ohmsche Messungen um ungewollte Übergangswiderstände 
auszuschließen, Signalsimulation an der Testhardware durch anlegen von 
Spannungen,...). Die Betriebsspannung zapfe ich über den USB-Port und 
sollte ebenso hin hauen (I=100...120mA maximal).
Es sollte also nur noch an der Software liegen.

@Hubert G.: Wie kann ich in der Systemsteuerung die Schnittstelle 
festlegen?
Ich dachte, dass der usbprog automatisch mit dem entsprechenden USB-Slot 
verbunden wird.

von Hubert G. (hubertg)


Lesenswert?

Start - Einstellungen - Systemsteuerung - System - Systemeigenschaften - 
Hardware - Geräte-Manager - Anschlüsse (COM und LPT)
Wenn dein USB-Prog angesteckt ist sollte er dort mit der COM-Nummer 
aufscheinen. Mit rechter Maustaste und Eigenschaften kannst du die 
COM-Nummer ändern.
Wenn die Systemsteuerung für den USB-Prog eine höhere Nummer vergibt als 
im AVR-Studio vorhanden, dann wird er im AVR-Studio nicht gefunden und 
auch nicht connected.

von Bensch (Gast)


Lesenswert?

> Wenn dein USB-Prog angesteckt ist sollte er dort mit der COM-Nummer
aufscheinen.

Bei mir erscheint als Schnittstelle USB und kein COM. Sollte da jemand 
vergessen haben, den Jungo Treiber zu installieren?

von Teddy H. (teddybear)


Lesenswert?

@Bensch: Auf die korrekten Treiber habe ich geachtet:
Jungo für Anwendung im AVR-Studio und
LibUSB-Win32 für Anwendung im WinAVR.
Zumindest ist es hier beschrieben:
Beitrag "AVRISPmkII + AVRDUDE + Window Vista ein Tipp!"

@Hubert G.: Der usbprog taucht als eigenständiges Gerät bei mir im 
gerätemanager auf und über die Eigenschaften finde ich keine 
COM-Zuweisung.

von Christoph B. (christophbechtel)


Lesenswert?

Ich habe das gleiche Problem... den ATMega2560 und ATMega128 kann ich 
ohne probleme flashen, ATMega8/16 und 32 aber nicht... ist doch sehr 
merkwürdig. Gibt es dafür eine Lösung?

von Pascal (Gast)


Lesenswert?

Wahrscheinlich ist es für den Fragesteller schon zu spät, aber ich 
antworte mal für andere, die diesen Thread hier finden:

Ich hatte das gleiche Problem unter Linux mit einem ATmega168.

Ich hab dann in einer Mailingliste die Lösung gefunden. Das Problem 
tritt nur bei noch nicht programmierten ATmega8/16/168 etc auf, weil der 
USBprog zu schnell programmiert. Wenn man die ISP Geschwindigkeit auf 
125kHz runterschaltet, funktioniert es.

Bei avrdude geht das mit dem Parameter -i 8 (8 µS Pause zwischen den 
Bitwechseln, also 125kHZ).

Das obige Beispiel würde also so aussehen:

avrdude -p m16 -P usb -c avrisp2 -i 8 -U flash:w:Test01.hex

von Pat (Gast)


Lesenswert?

Thanks a lot, Pascal!
Your late answer was really helpful to me, so I feel like I should also 
share my findings.
I have an USBprog 4, and indeed it seems too fast with new unprogrammed 
AVRs.
Using -i 8 did not work for me, but your suggestion made me look at 
avrdude command line options. I tried -B 8 and it worked immediately!
Cheers!
Pat

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.