Hallo, ich habe ein sehr seltsames Problem mit meinem mysmartusb light AVR ISP Programmer in Verbindung mit avrdude. Programmieren mittels Tools des Sticks funktioniert einwandfrei. Wenn ich es allerdings mit avrdude versuche, hängt der Schreibvorgang einige male, welcher anscheinend mit 100% abgeschlossen wird - die Verifikation am Ende schlägt allerdings fehl: ---------------------------------- Writing | ##################### | 42% 0.22savrdude: ser_recv(): programmer is not responding avrdude: stk500v2_ReceiveMessage(): timeout avrdude: ser_recv(): programmer is not responding avrdude: stk500v2_ReceiveMessage(): timeout avrdude: stk500v2_getsync(): found STK500 programmer Writing | ############################# | 57% 21.08savrdude: ser_recv(): programmer is not responding avrdude: stk500v2_ReceiveMessage(): timeout avrdude: ser_recv(): programmer is not responding avrdude: stk500v2_ReceiveMessage(): timeout avrdude: stk500v2_getsync(): found STK500 programmer Writing | #################################### | 71% 41.92savrdude: ser_recv(): programmer is not responding avrdude: stk500v2_ReceiveMessage(): timeout avrdude: ser_recv(): programmer is not responding avrdude: stk500v2_ReceiveMessage(): timeout avrdude: stk500v2_getsync(): found STK500 programmer Writing | ################################################## | 100% 62.83s ... avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0046 0xe0 != 0xee avrdude: verification error; content mismatch ---------------------------------- Das Seltsame ist allerdings folgendes: beschreibe ich den Atmega88 mit dem beiliegenden Tool und schreibe danach mit avrdude genau das selbe .hex File, funktioniert es. Erstelle ich ein neues .hex File indem ich den Code ändere und neu baue, schlägt es mit avrdude wie oben beschrieben fehl. Ich habe bereits den Stick für die Verwendung von avr911/avr910 konfiguriert und es damit versucht, auch mit und ohne externer Stromversorgung, hat nichts geholfen. Programmiert wird ein Atmega88. Grüße, Christian
:
Bearbeitet durch User
Christian schrieb: > mysmartusb light AVR ISP > Programmer Hallo, ich kann zwar gerade keinen Tipp zur genauen Ursache des Problems geben, möchte dir aber generell empfehlen, statt dieses Tools einen billigen Arduino-Nachbau wie z.B. https://www.reichelt.de/de/de/shop/produkt/arduino_kompatibles_nano_board_atmega328pb_usb-c-372020 (derzeit 8,15€) zu erwerben und darauf eine Open-Source-AVRISPv2-Firmware zu flashen. Damit kannst du dann mittels avrdude und dem STK500v2-Protokoll andere ISP-AVRs flashen. Von myAVR hatte ich als AVR-Anfänger zunächst auch einige Produkte benutzt (u.a. mySmartUSB mkii), würde aber inzwischen eher davon abraten, da ich bei denen schon über zahlreiche Bugs gestolpert bin und es mittlerweile sowohl bessere als auch gleichzeitig günstigere Lösungen gibt.
:
Bearbeitet durch User
Danke für die Info, das ist eine tolle und günstige Alternative! Ich habe das Problem bereits gefunden. Zum Entwickeln verwende ich PlatformIO, und setze unter anderem upload_protocol = stk500v2 in der Config. Das ist soweit auch korrekt, allerdings gibt es hier einen kleinen Haken: Der Upload Befehl der dafür verwendet wird, beinhaltet das Flag -D, welches zur Folge hat, dass der Speicher vor dem Schreiben nicht gelöscht wird: --- -D Disable auto-erase for flash memory --- Glücklicherweise kann man das Command zum Uploaden in PlatformIO auch selbst definieren, damit funktioniert es wieder.
Christian schrieb: > Danke für die Info, das ist eine tolle und günstige Alternative! Zufällig arbeite ich übrigens seit einiger Zeit an genau solch einem Programm, also versuche quasi ein AVRISPv2 (in Assembler) nachzuprogrammieren; bin damit fast fertig (nur noch Details sind zu klären, siehe einen aktuellen Thread von mir dazu). Ich war davon ausgegangen, dass es sowas bereits geben müsste, habe aber per Google-Suche auf Anhieb gar kein ähnliches Projekt gefunden. Meinen Code werde ich, sobald er ausgereift ist, auf Github veröffentlichen und auf verschiedenen AVRs wie auch ATmega328P(B) lauffähig machen (z.Zt. nur ATtiny 2-series). Noch günstiger könnte man unter Verwendung eines Raspberry Pi Pico zum Preis von knapp 4 Euro kommen; da bin ich allerdings auf das Problem gestoßen, dass mit dem Pico-SDK der USB-UART nur per scanf() lesbar ist und somit gezwungenermaßen ASCII-zeilenorientiert arbeitet, was aber im Widerspruch zum rohbinären STK500v2-Protokoll steht. Da müsste man ein eigenes ASCII-basiertes Protokoll für entwerfen und avrdude entsprechend erweitern. Das habe ich in der Zukunft als eines meiner nächsten Projekte noch vor.
Johannes F. schrieb: > Noch günstiger könnte man unter Verwendung eines Raspberry Pi Pico zum > Preis von knapp 4 Euro kommen; da bin ich allerdings auf das Problem > gestoßen, dass mit dem Pico-SDK der USB-UART nur per scanf() lesbar ist > und somit gezwungenermaßen ASCII-zeilenorientiert arbeitet Diese Aussage muss ich korrigieren – zum byteweisen Lesen von USB-CDC stellt das (C-)SDK die Funktion /getchar()/ zur Verfügung. Damit müsste es gehen, das STK500v2-Protokoll über USB laufen zu lassen; allerdings wäre eine interruptgesteuerte Verarbeitung schöner, die aber, sofern ich das richtig sehe, wohl die Umgehung von stdio und damit ein eigenes Setup von tinyusb erforderlich macht. Darin muss ich mich erst noch einarbeiten. Wollte nur oben zitiertes Statement nicht so falsch im Raum stehen lassen.
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.