Seite 1 von 2

[gelöst] HMSensor-CR2032 Programmierung

Verfasst: 30.01.2020, 17:07
von Jack01
Hallo liebes Forum,

bis jetzt habe ich viele Projekte mit den Arduino Mini Pro, Arduino Nano und dem STM32 aufgebaut. Alles hat (fast) problemlos funktioniert. Jetzt bin ich mal mutig geworden und habe mir die HMSensor-StepUp und die HMSensor-CR2032 (danke pa-pa) fertigen lassen und selbst bestückt. Als Projekt habe ich mir den Fenstersensor HM-SEC-RHS ausgesucht.
Das Setzen der Fuses sowie das Laden des Bootloaders hat mithilfe meines Pololu Programmers wie in der Anleitung zum HM-Sensor Projekt funktioniert (habe auch die Verifizierung durchgeführt).
Dann wollte ich über die Serielle Schnittstelle via Arduino IDE den Sketch programmieren. Da klemmt es jetzt. Es kommt immer die Fehlermeldung: avrdude: stk500_recv(): programmer is not responding.
Ausgewählt habe ich: Board: "Arduino Pro or Pro Mini", Processor: ATMega328P (3,3V, 8MHz).
Angeschlossen habe ich das Board wie beschrieben, auch die DTR-Leitung über einen 100nF Cap. In diesem Fall kommt nach einem Reset (Knopf auf dem Board) keine Ausgabe auf dem Seriellen Monitor. Wenn ich die Anschlüsse TX und RX vertausche, dann erscheint nach dem Drücken der Reset Taste auf dem Board zumindest die Uhrzeit und etwas Kauderwelsch. Ich habe das mit unterschiedlichen Baudrates versucht, aber ohne Erfolg.
Frage: Wo kommt die angezeigte Uhrzeit im Seriellen Monitor her? Sollte nach der Uhrzeit nicht irgendeine Info über den Bootloader erscheinen? Den Bootloader habe ich aus der AskSinPP-master (ATmegaBOOT_168_atmega328_pro_8MHz.hex).
Habt Ihr hier noch einen Tip für mich, wo ich weitersuchen soll?

Gruß

Hans-Jürgen

Re: HMSensor-CR2032 Programmierung

Verfasst: 30.01.2020, 17:18
von TomMajor
Der Zeitstempel ist da weil du die checkbox unten im Monitor gesetzt hast.
Bist du sicher das du eine 8MHz HW hast, steht eine '8' auf dem kleinen Resonator?

Re: HMSensor-CR2032 Programmierung

Verfasst: 30.01.2020, 17:58
von Jack01
Also,
bestellt hatte ich bei Reichelt: ATMEGA 328P-AU. Die Bezeichnung laut Lieferschein lautet: "MCU, ATMega AVR RISC, 32KB, 20 MHz, TQFP-"
Einen Resonator habe ich nicht.

Gruß

Hans-Jürgen

Re: HMSensor-CR2032 Programmierung

Verfasst: 30.01.2020, 18:10
von stan23
Welche Fuses hast du denn gesetzt?
Kannst du sie zur Überprüfung nochmal auslesen?

Re: HMSensor-CR2032 Programmierung

Verfasst: 30.01.2020, 18:11
von TomMajor
sorry, hatte nicht den ganzen Text gelesen, war von einem Arduino Mini Pro ausgegangen.
Dann frage ich anders:
- bist du sicher dass du beim bootldr programmieren den Osc. auf intern 8 MHz eingestellt hast?
- und die Fuse CKDIV8 nicht gesetzt ist?

Re: HMSensor-CR2032 Programmierung

Verfasst: 31.01.2020, 10:03
von Jack01
Also,
die Fuses habe ich wie in der Beschreibung gesetzt:
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
Natürlich habe ich den Com Port angepasst.
Ich habe zuerst die Fuses gesetzt und dann den Bootloader geflasht.
Jetzt habe ich ein 2tes Board bestückt. Auch hier komme ich nur mit dem Pololu bis zum Booloader flashen. Via Seriell geht dann wieder nichts.
Nochmals meine Frage: wie müssen die TX und RX Leitungen verbunden werden? Wie in der Anleitung beschrieben oder Tx>Tx und Rx>Rx?

#TomMajor - was meinst Du mit "- bist du sicher dass du beim bootldr programmieren den Osc. auf intern 8 MHz eingestellt hast?
- und die Fuse CKDIV8 nicht gesetzt ist?"
Da steht nichts in der Anleitung zu. Und wenn, wo wird das gemacht (sorry für die Fragen, ich programmiere zum ersten Mal einen nackten Chip).

Hier sind die Ausgaben von AVRDude:

Code: Alles auswählen

Microsoft Windows [Version 10.0.18363.592]
(c) 2019 Microsoft Corporation. Alle Rechte vorbehalten.



C:\AVR-Dude>avrdude -p m328p -P /com6 -c avrisp2 -B 10 -U lfuse:w:0xE2:m -U hfuse:w:0xD2:m -U efuse:w:0xFF:m -U lock:w:0xFF:m

avrdude: AVR device initialized and ready to accept instructions

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

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.03s

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.01s

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

Writing | ################################################## | 100% 0.03s

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.00s

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

Writing | ################################################## | 100% 0.03s

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.01s

avrdude: verifying ...
avrdude: 1 bytes of lock verified

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

avrdude done.  Thank you.

Code: Alles auswählen

VR-Dude>avrdude -p m328p -P /com6 -c avrisp2 -V -U flash:w:ATmegaBOOT_168_atmega328_pro_8MHz.hex

avrdude: AVR device initialized and ready to accept instructions

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

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: 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.08s

avrdude: 32652 bytes of flash written

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

avrdude done.  Thank you.

Code: Alles auswählen

C:\AVR-Dude>avrdude -p m328p -P /com6 -c avrisp2 -U flash:v:ATmegaBOOT_168_atmega328_pro_8MHz.hex

avrdude: AVR device initialized and ready to accept instructions

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

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.08s

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

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

avrdude done.  Thank you.

Re: HMSensor-CR2032 Programmierung

Verfasst: 31.01.2020, 10:21
von Jack01
So, ich habe jetzt mal schnell den "Frequenz Test" Sketch mithilfe des Pololu Programmers über die ISP Schnittstelle via Arduino IDE geladen. Das scheint funktioniert zu haben.
Ist das ein gängiger Weg oder bekomme ich in diesem Fall irgendwelche Probleme/Fehlfunktionen? Ist der Bootloader jetzt gelöscht?
(ich kann das noch nicht komplett prüfen, da das Board noch nicht komplett bestückt ist).

Logfile von Frequenz Test:

Code: Alles auswählen

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Hans\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM6
         Using Programmer              : stk500
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         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        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500V2
         Description     : Atmel STK500
         Programmer Model: STK500
         Hardware Version: 15
         Firmware Version Master : 2.10
         Topcard         : Unknown
         Vtarget         : 3.4 V
         SCK period      : 8.7 us
         Varef           : 0.0 V
         Oscillator      : Off

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

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: reading input file "C:\Users\Hans\AppData\Local\Temp\arduino_build_263629/Homematic_Frequenz_Test.ino.hex"
avrdude: writing flash (12322 bytes):

Writing | ################################################## | 100% 4.68s

avrdude: 12322 bytes of flash written
avrdude: verifying flash memory against C:\Users\Hans\AppData\Local\Temp\arduino_build_263629/Homematic_Frequenz_Test.ino.hex:
avrdude: load data flash data from input file C:\Users\Hans\AppData\Local\Temp\arduino_build_263629/Homematic_Frequenz_Test.ino.hex:
avrdude: input file C:\Users\Hans\AppData\Local\Temp\arduino_build_263629/Homematic_Frequenz_Test.ino.hex contains 12322 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 4.23s

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

avrdude done.  Thank you.

Hier die Einstellungen meines Programmers:
Pololu.PNG
Settings
Gruß

Hans-Jürgen

Edit:
habe das Board jetzt bis auf den CC1101 bestückt. Über die Serielle Schnittstelle kommt jetzt folgendes:
(irgendwie sind die Bilder jetzt verrutscht. Hierzu gehört das Bild "Terminal).

Edit 2:
Ich glaube ich hab's hinbekommen. Scheinbar habe ich bei einem Board den MC gekillt. Beim 2. Board habe ich dann wie gehabt mit dem ISP Programmer diesmal erst den Bootloader und dann die Fuses geladen. Dann via FTDI den Sketch. Ich hatte allerdings erwartet, dass vor dem Flashen des Sketches nach einem Reset des Boards irgendeine Meldung vom Booloader im Terminal erscheinen würde. Das passierte aber nicht. Erst nach dem Flashen des Sketches kamen die erwarteten Meldungen (zurzeit noch kein CC1101 angeschlossen).

Code: Alles auswählen

13:49:21.382 -> AskSin++ V4.1.1 (Jan 31 2020 13:48:10)
13:49:21.582 -> CC init1
13:49:21.582 -> Error at 00 expected: 2E read: 00
13:49:21.582 -> Error at 02 expected: 06 read: 00
13:49:21.582 -> Error at 03 expected: 0D read: 00
13:49:21.582 -> Error at 04 expected: E9 read: 00
13:49:21.582 -> Error at 05 expected: CA read: 00
13:49:21.582 -> Error at 07 expected: 0C read: 00
13:49:21.582 -> Error at 0B expected: 06 read: 00
13:49:21.582 -> Error at 0D expected: 21 read: 00
13:49:21.582 -> Error at 0E expected: 65 read: 00
13:49:21.582 -> Error at 0F expected: 6A read: 00
13:49:21.582 -> Error at 10 expected: C8 read: 00
13:49:21.582 -> Error at 11 expected: 93 read: 00
13:49:21.582 -> Error at 12 expected: 03 read: 00
13:49:21.582 -> Error at 15 expected: 34 read: 00
13:49:21.582 -> Error at 17 expected: 03 read: 00
13:49:21.582 -> CC Version: 00
13:49:21.622 -> Error at 3E expected: C0 read: 00
13:49:21.622 ->  - ready
13:49:21.622 -> Start searching ...
13:49:21.622 -> Freq 0x21656A 868.300 MHz: Error at 0D expected: 21 read: 00
13:49:21.622 -> Error at 0E expected: 65 read: 00
13:49:21.622 -> Error at 0F expected: 6A read: 00

Re: HMSensor-CR2032 Programmierung

Verfasst: 01.02.2020, 16:32
von stan23
Jack01 hat geschrieben:
31.01.2020, 10:03
#TomMajor - was meinst Du mit "- bist du sicher dass du beim bootldr programmieren den Osc. auf intern 8 MHz eingestellt hast?
- und die Fuse CKDIV8 nicht gesetzt ist?"
Da steht nichts in der Anleitung zu. Und wenn, wo wird das gemacht (sorry für die Fragen, ich programmiere zum ersten Mal einen nackten Chip).

Hier sind die Ausgaben von AVRDude:

Code: Alles auswählen

avrdude: safemode: Fuses OK (E:FF, H:D2, L:E2)
Die Werte sehen gut aus: Int RC Oscillator 8 MHz ist gewählt und divide clock by 8 ist nicht aktiv.
http://www.engbedded.com/fusecalc?P=ATm ... ply+values


Jack01 hat geschrieben:
31.01.2020, 10:21
So, ich habe jetzt mal schnell den "Frequenz Test" Sketch mithilfe des Pololu Programmers über die ISP Schnittstelle via Arduino IDE geladen. Das scheint funktioniert zu haben.
Ist das ein gängiger Weg oder bekomme ich in diesem Fall irgendwelche Probleme/Fehlfunktionen? Ist der Bootloader jetzt gelöscht?
Der Bootloader wird gelöscht bzw. überschreiben wenn du einen anderen Sketch mit dem ISP flashst. Prinzipiell ist es kein Problem, ohne Bootloader die Sketche (FreqTest und den eigentlichen Sketch) per ISP zu flashen.
Die Variante mit Bootloader und hochladen per FTDI hat lediglich den Charme dass man am gleichen Interface auch die Debug-Ausgaben sieht.
Jack01 hat geschrieben:
31.01.2020, 10:21
Beim 2. Board habe ich dann wie gehabt mit dem ISP Programmer diesmal erst den Bootloader und dann die Fuses geladen. Dann via FTDI den Sketch. Ich hatte allerdings erwartet, dass vor dem Flashen des Sketches nach einem Reset des Boards irgendeine Meldung vom Booloader im Terminal erscheinen würde. Das passierte aber nicht. Erst nach dem Flashen des Sketches kamen die erwarteten Meldungen (zurzeit noch kein CC1101 angeschlossen).
Der Bootloader gibt nichts (lesbares) aus.
Jack01 hat geschrieben:
31.01.2020, 10:21

Code: Alles auswählen

...
13:49:21.622 -> Freq 0x21656A 868.300 MHz: Error at 0D expected: 21 read: 00
...
Zur Info: dass dort die Frequenz ausgegeben wird bedeutet, dass der FreqTest einen Wert im EEPROM gespeichert hat. Das hat also geklappt.
Falsch, es ist die Standart-Frequenz. Das wird auch bei einem fabrikneuen EEPROM-Inhalt ausgegeben.

Re: [gelöst] HMSensor-CR2032 Programmierung

Verfasst: 01.02.2020, 17:03
von Jack01
Moin,

hat alles jetzt geklappt. Es lag einfach an meiner Unerfahrenheit einen nackten Chip mit selbstgebauten Adaptern zu programmieren (und SMD zu löten :wink: ).
Mein erster Fenstersensor ist also einsatzbereit. Dieser ist mit einer CR-Batterie aufgebaut. Als nächstes werde ich mal einen mit einem Step Up Wandler und einer AA-Batterie bauen. Mal sehen, was länger durchhält.
Vielen Dank nochmal an die Entwickler und die Helfer!

Gruß

Hans-Jürgen

Re: [gelöst] HMSensor-CR2032 Programmierung

Verfasst: 03.02.2020, 10:25
von Jack01
So,
jetzt habe ich aber doch noch mal eine Frage:
Bis jetzt habe ich den ATMEGA 328P-AU über die Arduino IDE mit dem Board "Arduino Mini Pro" programmiert.
Jetzt habe ich aber gesehen, dass man auch einen "Minicore AtMega 328P" auswählen kann.
In den Anleitung zu den Projekten konnte ich nichts passendes finden (oder bin ich zu blind?)
Was ist hier die richtige Auswahl, und welche Einstellungen sind richtig?

Gruß

Hans-Jürgen