Dianmax ISP USB Programierer
Moderator: Co-Administratoren
-
- Beiträge: 250
- Registriert: 12.11.2011, 16:58
- System: CCU
- Wohnort: Schweiz
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 6 Mal
Re: Dianmax ISP USB Programierer
Hallo Stephan
Danke für deine Hilfe, die hat mich die letzte Nacht nochmal ruhig schlafen lassen
Wenn du mir eine PN mit deiner Adresse sendes mache ich dir im neuen Jahr ein Päckchen fertig (wie versprochen!)
Es war wirlich der fehlende Kondensator. In meinem letzten Post in der Nacht habe ich übrigens eine 0 vergessen, es wurde ein 100nF Kondensator in die Leitung gelötet.
Ich habe mich dann mal dem CC1101 gewidmet und den FrequenzTest Sketch aufgespielt. https://asksinpp.de/Grundlagen/FAQ/Fehl ... 1-frequenz
Und siehe da, er hat mir eine andere Ferquent im Eprom gespeichert.
Und nun habe ich das nächste Problem, wenn ich nun den eigentlichen Sketch
aufpielen möchte, medet mir die Konsole
Im seriellen Monitor wird der Frequenztest wieder durchgeführt.
Ich habe auch schon versucht, den COM Port im Gerätemanager umzustellen, jedoch erhalte ich dort die gleiche Fehlermeldung.
Danke für deine Hilfe, die hat mich die letzte Nacht nochmal ruhig schlafen lassen
Wenn du mir eine PN mit deiner Adresse sendes mache ich dir im neuen Jahr ein Päckchen fertig (wie versprochen!)
Es war wirlich der fehlende Kondensator. In meinem letzten Post in der Nacht habe ich übrigens eine 0 vergessen, es wurde ein 100nF Kondensator in die Leitung gelötet.
Das Anlernen an die CCU war wie zu erwarten erfolglos (wie kann es anders sein, wenn ein Bug drin ist dann nehme ich jeden mitSehr schoen, sieht soweit gut aus. Laeuft der sketch auch?
Ich habe mich dann mal dem CC1101 gewidmet und den FrequenzTest Sketch aufgespielt. https://asksinpp.de/Grundlagen/FAQ/Fehl ... 1-frequenz
Und siehe da, er hat mir eine andere Ferquent im Eprom gespeichert.
Und nun habe ich das nächste Problem, wenn ich nun den eigentlichen Sketch
Code: Alles auswählen
//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2016-10-31 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
//- -----------------------------------------------------------------------------------------------------------------------
// define this to read the device id, serial and device type from bootloader section
// #define USE_OTA_BOOTLOADER
#define USE_WOR
#define EI_NOTEXTERNAL
#include <EnableInterrupt.h>
#include <AskSinPP.h>
#include <LowPower.h>
#include <Switch.h>
#include <ResetOnBoot.h>
// we use a Pro Mini
// Arduino pin for the LED
// D4 == PIN 4 on Pro Mini
#define LED_PIN 4
// Arduino pin for the config button
// B0 == PIN 8 on Pro Mini
#define CONFIG_BUTTON_PIN 8
#define RELAY1_PIN 5 //change to D5 for further PWM Options
// number of available peers per channel
#define PEERS_PER_CHANNEL 8
// all library classes are placed in the namespace 'as'
using namespace as;
// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
{0x42,0xA2,0x00}, // Device ID
"papa42a200", // Device Serial
{0x00,0x6c}, // Device Model
0x10, // Firmware Version
as::DeviceType::Switch, // Device Type
{0x01,0x00} // Info Bytes
};
/**
* Configure the used hardware
*/
typedef AvrSPI<10,11,12,13> RadioSPI;
//typedef AskSin<StatusLed<LED_PIN>,BattSensor<AsyncMeter<InternalVCC>>,Radio<RadioSPI,2> > Hal;
typedef AskSin<StatusLed<LED_PIN>,BattSensor<AsyncMeter<ExternalVCC<17,7,LOW,3300> >>,Radio<RadioSPI,2> > Hal;
DEFREGISTER(Reg0,DREG_INTKEY,DREG_LEDMODE,MASTERID_REGS,DREG_LOWBATLIMIT)
class SwList0 : public RegList0<Reg0> {
public:
SwList0(uint16_t addr) : RegList0<Reg0>(addr) {}
void defaults () {
clear();
lowBatLimit(22);
}
};
// setup the device with channel type and number of channels
class SwitchType : public MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,1,SwList0> {
public:
typedef MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,1,SwList0> DevType;
SwitchType (const DeviceInfo& i,uint16_t addr) : DevType(i,addr) {}
virtual ~SwitchType () {}
virtual void configChanged () {
DevType::configChanged();
//uint8_t lowbat = getList0().lowBatLimit();
uint8_t lowbat = getList0().lowBatLimit() / 5; //factor 5 to get low bat message at 1V (CCU 5V)
DDECLN(lowbat);
if( lowbat > 0 ) {
battery().low(lowbat);
}
}
};
Hal hal;
SwitchType sdev(devinfo,0x20);
ResetOnBoot<SwitchType> resetOnBoot(sdev);
ConfigToggleButton<SwitchType> cfgBtn(sdev);
#ifndef USE_WOR
BurstDetector<Hal> bd(hal);
#endif
void initPeerings (bool first) {
// create internal peerings - CCU2 needs this
if( first == true ) {
HMID devid;
sdev.getDeviceID(devid);
for( uint8_t i=1; i<=sdev.channels(); ++i ) {
Peer ipeer(devid,i);
sdev.channel(i).peer(ipeer);
}
}
}
void setup () {
DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);
bool first = sdev.init(hal);
sdev.channel(1).init(RELAY1_PIN);
buttonISR(cfgBtn,CONFIG_BUTTON_PIN);
initPeerings(first);
#ifndef USE_WOR
// start burst detection
bd.enable(sysclock);
#endif
// stay on for 15 seconds after start
hal.activity.stayAwake(seconds2ticks(15));
// measure battery every hour
hal.battery.init(seconds2ticks(60UL*60),sysclock);
resetOnBoot.init();
sdev.initDone();
//if (sdev.getMasterID() == HMID::broadcast) { DPRINTLN(F("START PAIRING")); sdev.startPairing(); } // start pairing of no master id is present
}
void loop() {
bool worked = hal.runready();
bool poll = sdev.pollRadio();
if( worked == false && poll == false ) {
hal.activity.savePower<Sleep<> >(hal);
}
}
Code: Alles auswählen
avrdude: ser_open(): can't open device "\\.\COM4": Zugriff verweigert
Ich habe auch schon versucht, den COM Port im Gerätemanager umzustellen, jedoch erhalte ich dort die gleiche Fehlermeldung.
-
- Beiträge: 539
- Registriert: 20.08.2019, 06:23
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 95 Mal
Re: Dianmax ISP USB Programierer
Du konntest also den Frequenztest per FTDI flashen, der lief dann und produzierte sinnvolle Ausgaben im seriellen Monitor, und Du kannst auf die gleiche Weise einen anderen Sketch nicht flashen? Das ist sehr seltsam. Probier mal
- seriellen Monitor schliessen
- keine weiteren Arduino-IDE-Fenster offen haben
- die Arduino IDE und darin den zu flashenden Sketch auch erst oeffnen, nachdem FTDI-Adapter samt Deiner Zielplatine angeschlossen ist
- Rechner neu starten (klingt banal, half aber bei mir auch schon, wenn mal wieder der USB-Treiber nicht wollte)
Viele Gruesse,
Stephan
- seriellen Monitor schliessen
- keine weiteren Arduino-IDE-Fenster offen haben
- die Arduino IDE und darin den zu flashenden Sketch auch erst oeffnen, nachdem FTDI-Adapter samt Deiner Zielplatine angeschlossen ist
- Rechner neu starten (klingt banal, half aber bei mir auch schon, wenn mal wieder der USB-Treiber nicht wollte)
Viele Gruesse,
Stephan
-
- Beiträge: 250
- Registriert: 12.11.2011, 16:58
- System: CCU
- Wohnort: Schweiz
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 6 Mal
Re: Dianmax ISP USB Programierer
Ja genau den Fequenztest konnte ich ausführen.
Was ich seltsam finde, dass er mir nicht jedesmal den gleichen Wert ausgibt.
Anbei ein Auszug:
Ich habe deine Tips beherzigt und es denn nochmal mit schliessen des seriellen Monitors versucht - das war übrigens die Lösung
Den Ketck konnte ich aufspielen und er hat mir auch die erlittelte Frequenz "0x216642" angezeigt.
Nur leider wird mir nach dem Anlernprozedere kein Gerät im Posteingang angezeigt.
Die notwendige Zusatzsoftware https://github.com/jp112sdl/jp-hb-devices-addon & https://github.com/TomMajor/SmartHome/t ... ices-AddOn habe ich beide bereits auf der CCU (Raspberrymatic) installiert.
Mühsam ernährt sich das Eichhörnchen... aber wir kommen wohl immer einen Schritt weiter.
Das ist übrigens die Ausgabe des seriellen Monitors, wenn ich den FTI Anschliesse:
Und diese nach betätigen des Anlernbutton (der ja auf der latine dem Resetbutton entspricht):
Was ich seltsam finde, dass er mir nicht jedesmal den gleichen Wert ausgibt.
Anbei ein Auszug:
Code: Alles auswählen
14:01:49.278 -> Done: 0x2165FA - 0x21669A
14:01:49.324 -> Calculated Freq: 0x21664A 868.389 MHz
14:01:49.324 -> Store into config area: 664A...stored!
14:01:49.433 ->
14:01:49.433 -> Old Config Freq was: 0x216642 868.386 MHzGoing to sleep...
14:03:55.928 -> Done: 0x2165DA - 0x2166AA
14:03:55.928 -> Calculated Freq: 0x216642 868.386 MHz
14:03:55.928 -> Store into config area: 6642...stored!
14:03:56.043 ->
14:03:56.043 -> Old Config Freq was: 0x216632 868.379 MHzGoing to sleep...
14:05:39.164 -> Calculated Freq: 0x216642 868.386 MHz
14:05:39.164 -> Store into config area: 6642...stored!
14:05:39.302 ->
14:05:39.302 -> Old Config Freq was: 0x216642 868.386 MHzGoing to sleep...
14:08:04.928 -> Done: 0x2165EA - 0x21669A
14:08:04.928 -> Calculated Freq: 0x216642 868.386 MHz
14:08:04.928 -> Store into config area: 6642...stored!
14:08:05.057 ->
14:08:05.057 -> Old Config Freq was: 0x216642 868.386 MHzGoing to sleep...
Den Ketck konnte ich aufspielen und er hat mir auch die erlittelte Frequenz "0x216642" angezeigt.
Nur leider wird mir nach dem Anlernprozedere kein Gerät im Posteingang angezeigt.
Die notwendige Zusatzsoftware https://github.com/jp112sdl/jp-hb-devices-addon & https://github.com/TomMajor/SmartHome/t ... ices-AddOn habe ich beide bereits auf der CCU (Raspberrymatic) installiert.
Mühsam ernährt sich das Eichhörnchen... aber wir kommen wohl immer einen Schritt weiter.
Das ist übrigens die Ausgabe des seriellen Monitors, wenn ich den FTI Anschliesse:
Code: Alles auswählen
14:30:33.373 -> AskSin++ v5.0.2 (Dec 29 2022 14:09:37)
14:30:39.636 -> Address Space: 32 - 250
14:30:39.636 -> CC init1
14:30:39.636 -> CC Version: 04
14:30:39.636 -> - ready
14:30:39.636 -> Config Freq: 0x216642
14:30:39.901 -> eVcc: 0
14:30:39.901 -> 4
14:30:39.949 -> <- 0E 01 86 10 42A200 000000 06 01 00 80 00 - 323
14:30:46.340 -> ignore 14 AF 84 5E 3BB34C 000000 80 4E 68 00 00 26 00 02 09 1B 01 - 6793
14:30:46.820 -> ignore 15 10 00 8E 63B3C9 BECF91 00 0C BE 97 FB B7 51 4C AA 02 5E 43 - 7317
14:30:46.951 -> ignore 14 10 00 8E BECF91 63B3C9 1B C9 1F D4 12 85 EB BD B1 A9 86 - 7428
14:30:47.294 -> ignore 0C 76 86 5A 344776 000000 30 F7 22 - 7778
14:30:53.686 -> ignore 0C EE 86 70 172BB2 000000 00 DD 2B - 14252
14:33:08.555 -> debounce
14:33:08.642 -> pressed
14:33:08.735 -> released
14:33:08.735 -> -> 0B 02 02 40 42A200 42A200 01 02 - 15042
14:33:08.859 -> <- 0E 03 86 10 42A200 000000 06 01 C8 80 4F - 15169
14:33:08.859 ->
14:33:09.171 -> debounce
14:33:09.236 -> pressed
14:33:09.330 -> released
14:33:09.330 -> -> 0B 04 02 40 42A200 42A200 01 04 - 15552
14:33:09.454 -> <- 0E 05 86 10 42A200 000000 06 01 00 80 4F - 15679
14:33:09.454 ->
Code: Alles auswählen
14:35:02.252 -> AskSin++ v5.0.2 (Dec 29 2022 14:09:37)
14:35:02.252 -> Address Space: 32 - 250
14:35:02.252 -> CC init1
14:35:02.252 -> CC Version: 04
14:35:02.295 -> - ready
14:35:02.295 -> Config Freq: 0x216642
14:35:02.515 -> eVcc: 0
14:35:02.515 -> 4
14:35:02.557 -> <- 0E 01 86 10 42A200 000000 06 01 00 80 00 - 325
14:35:06.823 -> ignore 12 12 00 83 63B3C9 F00001 00 0C BE 99 9A E1 AA 7F BF - 4626
Zuletzt geändert von sickboy2711 am 29.12.2022, 14:36, insgesamt 1-mal geändert.
-
- Beiträge: 12115
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
-
- Beiträge: 250
- Registriert: 12.11.2011, 16:58
- System: CCU
- Wohnort: Schweiz
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 6 Mal
-
- Beiträge: 12115
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
Re: Dianmax ISP USB Programierer
Anlernen beim 1-Kanal-Schaltaktor erfolgt durch langes Drücken (ca. 2 Sek.) des Configbuttons.
Und die Batteriemessung solltest du auch erst noch in Ordnung bringen,
Und die Batteriemessung solltest du auch erst noch in Ordnung bringen,
-
- Beiträge: 250
- Registriert: 12.11.2011, 16:58
- System: CCU
- Wohnort: Schweiz
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 6 Mal
Re: Dianmax ISP USB Programierer
Danke, das wars
Wie meinst du das?Und die Batteriemessung solltest du auch erst noch in Ordnung bringen,
Der Autor schreibt doch:
Und im Sketch ist dieser Parameter doch gesetztBatterie-Messung:
Desweiteren kann die Batteriespannung vor dem Stepup mittels Spannungsteiler gemessen werden. Ein angepasster Sketch liegt bei. Vielen Dank an Jérôme für die Unterstützung und das Aufzeigen, wie "einfach" doch die Batterieklasse ist.
Da in der CCU, bei diesem Aktor, die Batteriemeldung nur im Bereich von 5-15V auslöst, wird im Sketch unter ...
uint8_t lowbat = getList0().lowBatLimit() / 5; //factor 5 to get low bat
... die eingestellte Batterieschwelle durch 5 geteilt. In der CCU müssen also die Spannungwerte mit "x5" angegeben werden. Beispiel: Batteriemeldung bei 2,1V Versorgungsspannung. Heißt 2,1V x 5 = 10,5V. Es müssen demnach 10,5V in der CCU eingestellt werden. Die Werte variieren je nach verwendetem Batterie.- Akkutyp und müssen "für sich selbst" gefunden werden.
Code: Alles auswählen
virtual void configChanged () {
DevType::configChanged();
//uint8_t lowbat = getList0().lowBatLimit();
uint8_t lowbat = getList0().lowBatLimit() / 5; //factor 5 to get low bat message at 1V (CCU 5V)
DDECLN(lowbat);
if( lowbat > 0 ) {
battery().low(lowbat);
}
}
-
- Beiträge: 12115
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
-
- Beiträge: 250
- Registriert: 12.11.2011, 16:58
- System: CCU
- Wohnort: Schweiz
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 6 Mal
Re: Dianmax ISP USB Programierer
Ich denk das lag daran, dass ich beim Anlernen noch keine Excterne Stomversorgung dran hatte.
In der CCU wird es jetzt ohne Probleme angezeit und auch keine Low-Bat-Meldung.
Jetzt sind nur noch zwei Hürden, die ich erledigen muss.
Ich danke allen, die mir bei meinen Problem geholfen haben, wenn ich die Zeit habe werde ich das Vorgehen mal zusammen fassen, ich denk' ich werd nicht der Einzige Schlaubischlumpf sein, der diese Anfängerfehler macht.
In der CCU wird es jetzt ohne Probleme angezeit und auch keine Low-Bat-Meldung.
Jetzt sind nur noch zwei Hürden, die ich erledigen muss.
- Heraus zu finden, warum das Schreiben des bootloaders erst nach dem Anlöten der Pins funktioniert hat.
- Die integration in Homekit, dass ich den Aktor wie gehabt über den Hompod schalten kann
Ich danke allen, die mir bei meinen Problem geholfen haben, wenn ich die Zeit habe werde ich das Vorgehen mal zusammen fassen, ich denk' ich werd nicht der Einzige Schlaubischlumpf sein, der diese Anfängerfehler macht.