Hi Leute, ich habe bisher keine Lösung gefunden. Daher hoffe ich dass ihr mir helfen könnt. Und zwar möchte ich einen ATmega16 mit meinem avrisp-mkII programmieren. Dazu verwende ich auf Ubuntu avrdude. Wenn ich den Controller programmiere, dann wird der erste Lesezyklus erfolgreich ausgeführt (auch eine wohl passende Signatur wird erkannt), das schreiben funktioniert aber nicht. Die Anzeige steht eine Weile auf 0% und dann taucht die Nachricht "stk500v2_recv_mk2: error in USB receive" auf. Bei LEDs des Programmers sind grün und auch die libusb ist installiert. Kann damit jemand was anfangen? Vielen Dank im Voraus David
Hänge mal ein oder mehrere -v an und lass dir Einzelheiten von avrdude anzeigen.
Ich hab mir das Makefile aus dem Netz gezogen.
Das ist die Ausgabe:
avrdude -p atmega16 -P usb -c stk500 -v -U flash:w:main.hex
avrdude: Version 6.3
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/etc/avrdude.conf"
User configuration file is "/home/david-tower/.avrduderc"
User configuration file does not exist or is not a regular
file, skipping
Using Port : usb
Using Programmer : stk500
avrdude: usbdev_open(): Found AVRISP mkII, serno: 0000B0020188
AVR Part : ATmega16
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page
Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages
MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------
----- ----- ---------
eeprom 4 10 128 0 no 512 4 0
9000 9000 0xff 0xff
flash 33 6 128 0 yes 16384 128 128
4500 4500 0xff 0xff
lock 0 0 0 0 no 1 0 0
9000 9000 0x00 0x00
lfuse 0 0 0 0 no 1 0 0
9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0
9000 9000 0x00 0x00
signature 0 0 0 0 no 3 0 0
0 0 0x00 0x00
calibration 0 0 0 0 no 4 0 0
0 0 0x00 0x00
Programmer Type : STK500V2
Description : Atmel STK500
Programmer Model: AVRISP mkII
Hardware Version: 1
Firmware Version Master : 1.17
Vtarget : 5.1 V
SCK period : inf us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100%
2.07s
avrdude: Device signature = 0x1e9403 (probably m16)
avrdude: safemode: hfuse reads as 99
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be
performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: input file main.hex auto detected as Intel Hex
avrdude: writing flash (122 bytes):
Writing | | 0%
0.00savrdude: stk500v2_recv_mk2: error in USB receive
avrdude: stk500v2_recv_mk2: error in USB receive
avrdude: stk500v2_recv_mk2: error in USB receive
^Cmakefile:437: recipe for target 'program' failed
Mit welchen Parametern hast du avrdude aufgerufen? Hast du eine Stromversorgung angeschlossen? Hast du root Rechte oder eine udev Rule hinzugefügt, damit andere User das Gerät benutzen dürfen? Kannst du wenigstens die Versorgungsspannung des Targets auslesen? Mit wie viel Mhz wird der µC getaktet und welche Taktfrequenz hast am Programmer mit avrdude (Parameter -B) eingestellt? Wer schon die Antworten zwischen den Zeilen erkennt, darf sie behalten.
Stefanus F. schrieb: > Mit welchen Parametern hast du avrdude aufgerufen? > Hast du eine Stromversorgung angeschlossen? > Hast du root Rechte oder eine udev Rule hinzugefügt, damit andere User > das Gerät benutzen dürfen? > Kannst du wenigstens die Versorgungsspannung des Targets auslesen? > Mit wie viel Mhz wird der µC getaktet und welche Taktfrequenz hast am > Programmer mit avrdude (Parameter -B) eingestellt? Die Aufrufparameter sind oben zu sehen. externe Spannung ist da. Das dürften die Vtarget mit 5.1V sein. Die udev-rule hab ich nicht angelegt. Da der Programmer ja anscheinend lesen darf wird es nicht daran liegen, dachte ich mir. Der uC wird mit den Default-gesetzten, internen 1 MHz getaktet. Die Taktfrequenz des Programmers kenn ich ehrlich gesagt nicht. Habe da aber nie was dran gemacht, deswegen dürften das auch die Default-Einstellungen sein.
> Die Aufrufparameter sind oben zu sehen. Oh, dieser Beitrag war noch nicht da, als ich geschrieben hatte. > Der uC wird mit den Default-gesetzten, internen 1 MHz getaktet. Dann brauchst du den Parameter -B16. Wenn du die Fuses auf 8Mhz oder mehr umgestellt hast, geht es auch ohne -B. > Die Taktfrequenz des Programmers kenn ich ehrlich gesagt nicht. Den Standard Wert weiß ich auch nicht, ist auf jeden Fall mehr als der µC bei 1Mhz schafft.
help schrieb: > Stefanus F. schrieb: >> Mit welchen Parametern hast du avrdude aufgerufen? >> Hast du eine Stromversorgung angeschlossen? >> Hast du root Rechte oder eine udev Rule hinzugefügt, damit andere User >> das Gerät benutzen dürfen? >> Kannst du wenigstens die Versorgungsspannung des Targets auslesen? >> Mit wie viel Mhz wird der µC getaktet und welche Taktfrequenz hast am >> Programmer mit avrdude (Parameter -B) eingestellt? > > Die Aufrufparameter sind oben zu sehen. > externe Spannung ist da. Das dürften die Vtarget mit 5.1V sein. > Die udev-rule hab ich nicht angelegt. Da der Programmer ja anscheinend > lesen darf wird es nicht daran liegen, dachte ich mir. > Der uC wird mit den Default-gesetzten, internen 1 MHz getaktet. Die > Taktfrequenz des Programmers kenn ich ehrlich gesagt nicht. Habe da aber > nie was dran gemacht, deswegen dürften das auch die > Default-Einstellungen sein. Hallo, dann schaue dir bitte die Parameter von avrdude an, bei F_CPU = 1 MHz darf der ISP Takte <= 250 kHz sein. Somit sind "-B 10" [µs] ausreichend langsam.
Stefanus F. schrieb: >> Der uC wird mit den Default-gesetzten, internen 1 MHz getaktet. > > Dann brauchst du den Parameter -B16. Wenn du die Fuses auf 8Mhz oder > mehr umgestellt hast, geht es auch ohne -B. Ich werd verrückt. Das war die Lösung! Stefano ich Danke dir vielmals. Kann ich diesen Beitrag auf "Solved" setzen für die Nachwelt?
Karl M. schrieb: > Hallo, dann schaue dir bitte die Parameter von avrdude an, bei F_CPU = 1 > MHz darf der ISP Takte <= 250 kHz sein. > Somit sind "-B 10" [µs] ausreichend langsam. Die 10 µs tauchen dann auch hier bei der Ausgabe unter "SCK period : inf us" auf.
Die 10 ergeben hier nur zufällig 10µS. Dieser Parameter hat keine 1:1 Beziehung zu den µS. Schau mal in die Anleitung von avrdude.
Hallo Stefanus , Stefanus F. schrieb: > Die 10 ergeben hier nur zufällig 10µS. Dieser Parameter hat keine > 1:1 > Beziehung zu den µS. Schau mal in die Anleitung von avrdude. Ich beziehe mich auf diese Anleitung und habe den Parameter auch auf anderen Programmieradapter, wie den AVRISP-MKII Clone, übertragen: https://www.nongnu.org/avrdude/user-manual/avrdude_4.html ----------------------------- B bitclock ----------------------------- Specify the bit clock period for the JTAG interface or the ISP clock (JTAG ICE only). The value is a floating-point number in microseconds. The default value of the JTAG ICE results in about 1 microsecond bit clock period, suitable for target MCUs running at 4 MHz clock and above. Unlike certain parameters in the STK500, the JTAG ICE resets all its parameters to default values when the programming software signs off from the ICE, so for MCUs running at lower clock speeds, this parameter must be specified on the command-line. It can also be set in the configuration file by using the ’default_bitclock’ keyword. ----------------------------- Ich will ja immer noch etwas lernen, wie ist der Parameter in deinen Augen zu verstehen?
Vielleicht hat sich das inzwischen Geändert. Es war mal so, dass kleine Zahlen kleine Änderungen bewirkten und je größer die Zahl wurde, umso größer die Schrittweite. Wie dem auch sei, ich benutze einfach immer -B16 und komme damit prima klar.
Hallo Stefanus , unsere Antworten hatten sich uber schnitten und beide liefern eine Lösung. Damit ist dem TO geholfen. Stefanus F. schrieb: > Wie dem auch sei, ich benutze einfach immer -B16 und komme damit prima > klar. ..thumbs up..
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.