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.