Probleme beim Flashen des HMSensors

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Antworten
Arthy
Beiträge: 82
Registriert: 17.12.2014, 00:03
System: CCU
Danksagung erhalten: 1 Mal

Probleme beim Flashen des HMSensors

Beitrag von Arthy » 08.10.2021, 13:35

Hallo Community,

ich habe schon verschiedene Sensoren mittels den Pro Mini umgesetzt und nun wollte ich den HMSensor selber zusammenlöten. Also Teile bei Aliexpress bestellt und entsprechend der Anleitung bei AskSin++ umgesetzt. Den Atmel einzulöten ist schon nicht ohne, da bin ich mir auch schon nicht sicher, ob das alles so geklappt hat. Brücken scheinen aber keine da zu sein. Wie ihr auf den Fotos unten sehen könnt, habe ich die CR2032 Version genommen. Den Quarz und das Funkmodul habe ich noch nicht eingelötet. Laut der Anleitung wäre als nächstes das Setzen der Fuses dran. Wie ihr dem Foto unten entnehmen könnt habe ich hier nur einen USBasp. Den BOD bei den Arduino Pro minis zu deaktivieren hat damit aber ohne Probleme geklappt.
So laut der Anleitung sehen die Fuses so aus:

Code: Alles auswählen

# 
Fuses setzen
avrdude -p m328p -P /dev/ttyACM3 -c avrisp2 -B 10 -U lfuse:w:0xE2:m -U hfuse:w:0xD2:m -U efuse:w:0xFF:m -U lock:w:0xFF:m

# Upload des Arudino Bootloaders
avrdude -p m328p -P /dev/ttyACM3 -c avrisp2 -V -U flash:w:ATmegaBOOT_168_atmega328_pro_8MHz.hex

# Bootloader verifizieren
avrdude -p m328p -P /dev/ttyACM3 -c avrisp2 -U flash:v:ATmegaBOOT_168_atmega328_pro_8MHz.hex


Da ich einen USBasp habe, habe ich das folgendermaßen geändert

Code: Alles auswählen

# 
Fuses setzen
avrdude -p m328p -P usb -c usbasp -B 10 -U lfuse:w:0xE2:m -U hfuse:w:0xD2:m -U efuse:w:0xFF:m -U lock:w:0xFF:m

# Upload des Arudino Bootloaders
avrdude -p m328p -P usb -c usbasp -V -U flash:w:ATmegaBOOT_168_atmega328_pro_8MHz.hex

# Bootloader verifizieren
avrdude -p m328p -P usb -c usbasp -U flash:v:ATmegaBOOT_168_atmega328_pro_8MHz.hex


Als Antwort bekomme ich dann aber nur:

Code: Alles auswählen

C:\Users\Arthy\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17\bin>avrdude -p m328p -P usb -c usbasp -B 10 -U lfuse:w:0xE2:m -U hfuse:w:0xD2:m -U efuse:w:0xFF:m -U lock:w:0xFF:m

avrdude: set SCK frequency to 93750 Hz
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: program enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.
Liegt es daran, weil der Quarz noch nicht eingelötet wurde? Falls es daran liegt, ich habe schon öfters gesehen, dass Leute den HMSensor auch ohne einen Quarz nutzen. Wie wurde da der Bootloader bzw. Sketch dann hochgeladen? Oder stimmt etwas mit dem Atmel evtl. nicht, irgendwo fehlt eine Verbindung etc. Wäre super dankbar wenn mir jemand einen Tipp geben würde, wie ich weitermachen muss.
Danke
Dateianhänge
20211008_104146.jpg
20211008_102938.jpg
20211008_100917.jpg

t0mk
Beiträge: 180
Registriert: 08.08.2018, 20:13
Hat sich bedankt: 5 Mal
Danksagung erhalten: 18 Mal

Re: Probleme beim Flashen des HMSensors

Beitrag von t0mk » 08.10.2021, 15:54

Das ist mit Sicherheit die Steckerverbindung, denn die Lötstellen am AVR sehen eigentlich gut aus.

Ich habe mir damit beholfen, auf die Pads Lötzinn aufzutragen, damit der Stecker strammer sitzt oder gleich Kabel zum Flashen anzulöten. Per Hand fest zusammenpressen kann auch schon helfen, ist aber ärgerlich, wenn ausgerechnet beim Fuses setzen die Hand zittert und der Kontakt abreisst, dann ist der Atmega erstmal "verfust".

Arthy
Beiträge: 82
Registriert: 17.12.2014, 00:03
System: CCU
Danksagung erhalten: 1 Mal

Re: Probleme beim Flashen des HMSensors

Beitrag von Arthy » 08.10.2021, 16:11

Hallo t0mk,

Danke für die Antwort und den Tipp, das werde ich ausprobieren. Brauche ich aber den Quarz dafür nicht?

Gruß
Arthy

Matsch
Beiträge: 2040
Registriert: 30.05.2019, 11:37
System: CCU
Wohnort: Chemnitz
Hat sich bedankt: 31 Mal
Danksagung erhalten: 247 Mal

Re: Probleme beim Flashen des HMSensors

Beitrag von Matsch » 08.10.2021, 17:00

Solange die Fuses so gesetzt sind, dass der interne Takt benutzt wird, sollte es klappen. Kann ich jetzt ad hoc nicht interpretieren.

PS:
Mit E2 D2 ist weiter der interne Takt aktiv, dann sollte kein externer Quarz notwendig sein.
Zuletzt geändert von Matsch am 08.10.2021, 20:01, insgesamt 1-mal geändert.

t0mk
Beiträge: 180
Registriert: 08.08.2018, 20:13
Hat sich bedankt: 5 Mal
Danksagung erhalten: 18 Mal

Re: Probleme beim Flashen des HMSensors

Beitrag von t0mk » 08.10.2021, 19:31

Was auch helfen kann: Geschwindigkeit beim Flashen Drosseln. Entweder mit einem entsprechenden Parameter, wobei er mir gerade nicht einfällt, oder durch schließen der Brücke JP3 auf dem USBasp.

Arthy
Beiträge: 82
Registriert: 17.12.2014, 00:03
System: CCU
Danksagung erhalten: 1 Mal

Re: Probleme beim Flashen des HMSensors

Beitrag von Arthy » 09.10.2021, 00:24

Hallo,

der Tipp mit dem etwas Lötzinn auf die Pads war genau richtig (siehe Foto unten). Echt genial. Besten Dank t0mk.
Also wie man unten an dem Code sieht ist der Bootloader schon mal geflasht. Der Fehler mit dem set sck period ist immer noch da, das Flashen hat dennoch funktioniert. Werde mal nächstes Mal versuchen den Jumper 3 zu brücken.
Jetzt geht es weiter mit dem Flashen der Sketche.

Code: Alles auswählen

C:\Users\Arthy\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17\bin>avrdude -p m328p -P usb -c usbasp -B 10 -U lfuse:w:0xE2:m -U hfuse:w:0xD2:m -U efuse:w:0xFF:m -U lock:w:0xFF:m

avrdude: set SCK frequency to 93750 Hz
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "0xE2"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xE2:
avrdude: load data lfuse data from input file 0xE2:
avrdude: input file 0xE2 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xD2"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xD2:
avrdude: load data hfuse data from input file 0xD2:
avrdude: input file 0xD2 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xFF:
avrdude: load data efuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0xFF"
avrdude: writing lock (1 bytes):

Writing |                                                    | 0% 0.00s ***failed;
Writing | ################################################## | 100% 0.09s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0xFF:
avrdude: load data lock data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: WARNING: invalid value for unused bits in fuse "lock", should be set to 1 according to datasheet
This behaviour is deprecated and will result in an error in future version
You probably want to use 0x3f instead of 0xff (double check with your datasheet first).
avrdude: 1 bytes of lock verified

avrdude: safemode: Fuses OK (E:FF, H:D2, L:E2)

avrdude done.  Thank you.


C:\Users\Arthy\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17\bin>avrdude -p m328p -P usb -c usbasp -V -U flash:w:ATmegaBOOT_168_atmega328_pro_8MHz.hex

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e950f (probably m328p)
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: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: reading input file "ATmegaBOOT_168_atmega328_pro_8MHz.hex"
avrdude: input file ATmegaBOOT_168_atmega328_pro_8MHz.hex auto detected as Intel Hex
avrdude: writing flash (32652 bytes):

Writing | ################################################## | 100% 0.30s

avrdude: 32652 bytes of flash written

avrdude: safemode: Fuses OK (E:FF, H:D2, L:E2)

avrdude done.  Thank you.


C:\Users\Arthy\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17\bin>avrdude -p m328p -P usb -c usbasp -U flash:v:ATmegaBOOT_168_atmega328_pro_8MHz.hex

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: verifying flash memory against ATmegaBOOT_168_atmega328_pro_8MHz.hex:
avrdude: load data flash data from input file ATmegaBOOT_168_atmega328_pro_8MHz.hex:
avrdude: input file ATmegaBOOT_168_atmega328_pro_8MHz.hex auto detected as Intel Hex
avrdude: input file ATmegaBOOT_168_atmega328_pro_8MHz.hex contains 32652 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.31s

avrdude: verifying ...
avrdude: 32652 bytes of flash verified

avrdude: safemode: Fuses OK (E:FF, H:D2, L:E2)

avrdude done.  Thank you.
Dateianhänge
20211009_000923.jpg

t0mk
Beiträge: 180
Registriert: 08.08.2018, 20:13
Hat sich bedankt: 5 Mal
Danksagung erhalten: 18 Mal

Re: Probleme beim Flashen des HMSensors

Beitrag von t0mk » 09.10.2021, 16:58

Hi,

freut mich, dass das funktioniert hat. Ich habe mir anfangs auch die Zähne ausgebissen an den Platinchen. Ist echt frustrierend, wenn man die Hintergründe nicht genau kennt...

Der Fehler "cannot set sck period" kommt im übrigen höchstwahrscheinlich von der veralteten Firmware auf deinem USBasp. Die aktuellste von fischl.de ist zwar auch von 2011, aber irgendwie scheint es immer noch nicht in China angekommen zu sein :) Es gibt aber genug Anleitungen, wie man die Firmware aktualisiert bekommt. Man braucht dann entweder einen 2. USBasp oder einen Arduino. Kann sein, dass das Setzen von JP3 auch erst dann erkannt wird.

Benutzeravatar
Psi
Beiträge: 469
Registriert: 09.08.2018, 19:58
Wohnort: Nürnberg
Hat sich bedankt: 26 Mal
Danksagung erhalten: 79 Mal

Re: Probleme beim Flashen des HMSensors

Beitrag von Psi » 10.10.2021, 21:47

Ich klemm die PCB immer in die Flash-Station. Klappt ganz gut :)

PS: Hab auch noch einige zum verschenken da (wg https://github.com/psi-4ward/HMSensor-F ... gfix-guide) ;)

Ansonsten ist der USBasp schon vor Jahren in dem Müll gewandert - Diamex ist hier die bessere Wahl. USBasp haben meist auch 5V am SPI was ein angeschlossenes CC1101 beleidigen könnte. https://asksinpp.de/Grundlagen/04-isp.html

Auf dem HB-UNI-TESTPROG ist ein Pro Mini als ISP geflashed - klappt erstaunlich gut.

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“