Probleme beim Flashen des HMSensors

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

Moderator: Co-Administratoren

Arthy
Beiträge: 103
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: 250
Registriert: 08.08.2018, 20:13
Hat sich bedankt: 7 Mal
Danksagung erhalten: 21 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: 103
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: 5425
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 114 Mal
Danksagung erhalten: 734 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: 250
Registriert: 08.08.2018, 20:13
Hat sich bedankt: 7 Mal
Danksagung erhalten: 21 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: 103
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: 250
Registriert: 08.08.2018, 20:13
Hat sich bedankt: 7 Mal
Danksagung erhalten: 21 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: 512
Registriert: 09.08.2018, 19:58
Wohnort: Nürnberg
Hat sich bedankt: 27 Mal
Danksagung erhalten: 90 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.

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

Re: Probleme beim Flashen des HMSensors

Beitrag von Arthy » 26.10.2021, 14:25

Hallo zusammen,

so konnte nun endlich weiter an dem Projekt machen, war die letzten Wochen komplett zu mit Arbeit. Ich werde mir für das Flashen des Bootloaders auf jeden Fall einen Diamex holen. Habe gerade bei Amazon geschaut und diesen gefunden:

https://www.amazon.de/Diamex-7200-USB-I ... 148&sr=8-2

Kann ich den dafür auch nehmen?

Gruß
Arthy
Zuletzt geändert von Arthy am 26.10.2021, 14:54, insgesamt 1-mal geändert.

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

Re: Probleme beim Flashen des HMSensors

Beitrag von Arthy » 26.10.2021, 14:53

Ich nochmal,

so, nun geht es also weiter mit dem Flashen des Sketches und schon gibt es die nächsten Probleme. Für das Flashen habe den FTDI genommen, den ich schon immer für das Flashen von den Pro Minis genommen habe. Beim Versuch das Ding zu Flashen kommt aber immer nach einer Zeit:

Code: Alles auswählen

Arduino: 1.8.12 (Windows 10), Board: "Arduino Pro or Pro Mini, ATmega328P (3.3V, 8 MHz)"

Der Sketch verwendet 19872 Bytes (64%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 739 Bytes (36%) des dynamischen Speichers, 1309 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x47
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x47
Problem beim Hochladen auf das Board. Hilfestellung dazu unter http://www.arduino.cc/en/Guide/Troubleshooting#upload.
Was ich natürlich nicht gemacht habe, ist einen Quarz draufzupacken. An die Resetleitung habe ich einen 100 nF SMD Kondensator drangelötet. Andere hatte ich gerade nicht zur Hand, habe ich aber schon bestellt. Den FTDI oder Arduino Einstellungen kann ich denke ich ausschließen, da ich gerade noch einen Sketch damit auf einen Pro Mini draufgepackt habe. Da gab es keine Probleme. Beim Anschluss habe ich mich auch an die Tabelle für den HMSensor gehalten.

HMSensor FTDI
VCC VCC 3.3V (gelb)
GND GND (grau)
TX RX (grün)
RX TX (blau)
RESET DTR 100nF Kondensator in Reihe schalten! (lila)

Um sicher zu gehen, dass überall Kontakt ist, habe ich es zum testen sogar alles angelötet. Mit dem USBasp habe ich davor zum testen den Blink Sketch über den Programmer hochgeladen um die Platine zu testen. Das funktioniert und beim anschließen des FTDI sehe ich auch, dass dieser Sketch immer noch aktiv ist. Beim Hochladen blinkt die rote LED schön vor sich hin. Der Sketch wird also gar nicht übertragen. Kann es sein, dass etwas mit dem Reset nicht in Ordnung? Was kann ich da noch testen, damit ich es mit dem FTDI übertragen kann, wollte anschließend einen Blick mit dem seriellen Monitor draufwerfen.

Vielen Dank

Gruß
Arthy
Dateianhänge
20211026_142713.jpg

Antworten

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