Originales HM-PBI-4-FM wiederbeleben

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

Moderator: Co-Administratoren

Antworten
Funsailor
Beiträge: 21
Registriert: 22.02.2017, 20:47
Danksagung erhalten: 1 Mal

Originales HM-PBI-4-FM wiederbeleben

Beitrag von Funsailor » 21.03.2024, 17:25

Hallo,
ich habe schon seit längerem einen HM-PBI-4-FM mit defektem TRX Modul rumliegen. Das Modul hatte ich recht schnell getausch, allerdings war das Teil verschlüsselt. Also erst mal in die Ecke gelegt....
Jetzt würde ich das Teil gerne benutzen und habe mich mit den Infos von hier und aus dem ELV Journal 6/07 an die Arbeit gemacht. Als ersten Test habe ich einen fliegenden Aufbau nach den Vorgaben vom Ronny gemacht und bis auf die Tx/Rx die Pins angepasst. Funktioniert wie gewünscht, einschließlich anlernen etc...
Nun habe ich den Sketch angepasst, die Boards.txt angepasst (Dank dem Hinweis von Jérôme) und der Sketch passt nun auch in einen 168p...

Code: Alles auswählen

## Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168 
## --------------------------------------------------
pro.menu.cpu.8MHzatmega168=ATmega168_NoBootload (3.3V, 8 MHz)

pro.menu.cpu.8MHzatmega168.upload.maximum_size=16384
pro.menu.cpu.8MHzatmega168.upload.maximum_data_size=1024
pro.menu.cpu.8MHzatmega168.upload.speed=19200

pro.menu.cpu.8MHzatmega168.bootloader.low_fuses=0xc6
pro.menu.cpu.8MHzatmega168.bootloader.high_fuses=0xdd
pro.menu.cpu.8MHzatmega168.bootloader.extended_fuses=0xF8
pro.menu.cpu.8MHzatmega168.bootloader.file=atmega/ATmegaBOOT_168_pro_8MHz.hex

pro.menu.cpu.8MHzatmega168.build.mcu=atmega168p
pro.menu.cpu.8MHzatmega168.build.f_cpu=8000000L
ISP Programmer aktiviert und nach einigen Startproblemen konnte ich den Sketch laden.... 8)... allerdings gibt der Controller keinen Mucks mehr von sich :x

Zum Test den einfache Blink Sketch genommen, angepasst ... auch keinen Erfolg.
Um auszuschließen das es an den LED Pins A4/A5 liegt habe ich zuletzt nur den ACTIVATE_PIN 17 im Setup eingeschaltet... Auch da tut sich nix, habe mit einem mit Spannungsmesser an C1 +UB gemessen... Sobald ich den Konfigtaster drücke liegen da die 3,xV an, leider wird der Pin 26 PC3 nicht geschaltet...
Der Sketch ist eigentlich viel zu Simpel um Ihn hier einzustellen, aber der Vollständigkeit halber:

Code: Alles auswählen

#define LED_PIN A4
#define LED_PIN2 A5
#define CC1101_GDO0_PIN 2
#define CC1101_PWR_PIN 5
#define ACTIVATE_PIN   17
// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
//  pinMode(LED_PIN, OUTPUT);
//  digitalWrite(LED_PIN, HIGH);  // turn the LED on (HIGH is the voltage level)
  pinMode(ACTIVATE_PIN, OUTPUT);
  digitalWrite(ACTIVATE_PIN, HIGH);
//  pinMode(CC1101_PWR_PIN, OUTPUT);
//  digitalWrite(CC1101_PWR_PIN, LOW);
 
}

// the loop function runs over and over again forever
void loop() {
//  digitalWrite(LED_PIN, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
//  digitalWrite(LED_PIN, LOW);   // turn the LED off by making the voltage LOW
  delay(1000);                      // wait for a second
}
Das Blinken habe ich auskommentiert.... zuerst muss die Selbsthaltung funktionieren.

Hier die Infos vom Programmieren:

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\Mikel\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : usb
         Using Programmer              : usbasp
         AVR Part                      : ATmega168P
         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        512    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     16384  128    128  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 : usbasp
         Description     : USBasp, http://www.fischl.de/usbasp/

avrdude: auto set sck period (because given equals null)
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e940b (probably m168p)
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: auto set sck period (because given equals null)
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: reading input file "C:\Users\Mikel\AppData\Local\Temp\arduino\sketches\FB9736D9FF541C4A4A0062774025A477/Blink.ino.hex"
avrdude: writing flash (902 bytes):

Writing | ################################################## | 100% 0.59s

avrdude: 902 bytes of flash written

avrdude done.  Thank you.

Ich habe keine Idee mehr was da falsch läuft :?: ...

jp112sdl
Beiträge: 12167
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 857 Mal
Danksagung erhalten: 2164 Mal
Kontaktdaten:

Re: Originales HM-PBI-4-FM wiederbeleben

Beitrag von jp112sdl » 21.03.2024, 17:41

Teste mal mit den Fuses L:E3, H:DF, E:FE
Funsailor hat geschrieben:
21.03.2024, 17:25
digitalWrite(ACTIVATE_PIN, HIGH);
Ist auch gesichert, dass es HIGH sein muss und nicht evtl. LOW? Kenne die Schaltung aber nicht... ist nur eine Idee

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Funsailor
Beiträge: 21
Registriert: 22.02.2017, 20:47
Danksagung erhalten: 1 Mal

Re: Originales HM-PBI-4-FM wiederbeleben

Beitrag von Funsailor » 21.03.2024, 18:16

Hallo Jérôme,
die Fuses habe ich mir gerade genauer angeschaut, allerdings wollte ich mein Controller nicht abschießen und erst hier nachfragen welche Einstellungen richtig ist.
Dein Vorschlag für die Fuses ändern leider auch nichts.
Pin auf High ist richtig, so wird die Schaltung im Jornal erklärt.
Allerdings müßten die LEDs blinken (habe das toggeln wieder eingebaut) wenn ich den Taster gedrückt halte, denn dann wird die Versorgung über die Taster/Eingänge geschaltet.
Edit1:
Die eFuse: E3 schaltet auf den internen Oszillator mit 128kHz.... eigentlich läuft das Teil mit dem ext. Oszillator 8MHz....
Obwohl es beim Blink Beispiel wahrscheinlich egal ist woraus der Takt generiert wird.
Wo sehe ich, ob der Programmer die Fuses richtig setzt?
Edit2: Eben habe ich gelesen das die Fuses nur beim Programmieren des Bootlader gesetz werden. Dann müssten die Fuses ja von original Programm richtig gesetzt sein, oder?

Funsailor
Beiträge: 21
Registriert: 22.02.2017, 20:47
Danksagung erhalten: 1 Mal

Re: Originales HM-PBI-4-FM wiederbeleben

Beitrag von Funsailor » 27.03.2024, 21:11

Bin jetzt endlich wieder dazu gekommen und habe mir das mit den Fuses in den Controllern genauer angesehen.

Mit AVRDUDESS bekomme ich folgende Fuses angezeigt:
L: 0xEC
H: 0xC1
E: 0xFF
LB: ---

Dann habe ich die folgende Kombination probiert:
L: 0xEC
H: 0xD1
E: 0xFF
LB: ---

Programm geht immer noch nicht

Anschließend die "letzte" Kombination:

L: 0xE3
H: 0xD1
E: 0xFF
LB: ---

Jetz bekomme ich mit AVRDUDESS keinen Kontakt meht zum Chip :shock: :? :roll:

Code: Alles auswählen

Reading fuses...
>>>: avrdude.exe -c usbasp -p m168pa -P usb -U hfuse:r:-:h -U lfuse:r:-:h -U efuse:r:-:h 
ERROR: Unable to read fuses/lock bits

avrdude error: cannot set sck period; please check for usbasp firmware update
avrdude error: program enable: target does not answer (0x01)
avrdude error: initialization failed, rc=-1
        - double check the connections and try again
        - use -B to set lower the bit clock frequency, e.g. -B 125kHz
        - use -F to override this check

avrdude done.  Thank you.

Edit1:
Dann bei AVRDUDESS -F angegeben:

Code: Alles auswählen

avrdude: set SCK frequency to 500 Hz
avrdude error: cannot set sck period; please check for usbasp firmware update
avrdude error: program enable: target does not answer (0x01)
avrdude error: initialization failed, rc=-1
        - double check the connections and try again
        - use -B to set lower the bit clock frequency, e.g. -B 125kHz
avrdude: AVR device initialized and ready to accept instructions
avrdude: device signature = 0x000000 (retrying)
avrdude: device signature = 0x000000 (retrying)
avrdude: device signature = 0x000000
avrdude error: Yikes!  Invalid device signature.
avrdude warning: expected signature for ATmega168PA is 1E 94 0B
Resonator ausgelötet (Verzweiflungstat) bringt auch nix....

Bei anderen Platinen funktioniert das auslesen auf anhieb....

Benutzeravatar
stan23
Beiträge: 2070
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 608 Mal
Danksagung erhalten: 346 Mal
Kontaktdaten:

Re: Originales HM-PBI-4-FM wiederbeleben

Beitrag von stan23 » 28.03.2024, 13:55

Funsailor hat geschrieben:
27.03.2024, 21:11
Anschließend die "letzte" Kombination:

L: 0xE3
H: 0xD1
E: 0xFF
LB: ---

Jetz bekomme ich mit AVRDUDESS keinen Kontakt meht zum Chip :shock: :? :roll:
Wie bist du denn auf 0xE3 gekommen?
Das ist laut https://www.engbedded.com/fusecalc der interne Oszillator mit 128 kHz.

Da müsstest du jetzt die Frequenz am ISP kleiner als die Hälfte machen, aber das mag dein Programmer wohl nicht:

Code: Alles auswählen

avrdude: set SCK frequency to 500 Hz
avrdude error: cannot set sck period; please check for usbasp firmware update
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

jp112sdl
Beiträge: 12167
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 857 Mal
Danksagung erhalten: 2164 Mal
Kontaktdaten:

Re: Originales HM-PBI-4-FM wiederbeleben

Beitrag von jp112sdl » 28.03.2024, 14:11

stan23 hat geschrieben:
28.03.2024, 13:55
Wie bist du denn auf 0xE3 gekommen?
Irgendwie hab ich mich da wohl verhauen...
jp112sdl hat geschrieben:
21.03.2024, 17:41
Teste mal mit den Fuses L:E3, H:DF, E:FE
Sollte E2 sein. :cry:

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Funsailor
Beiträge: 21
Registriert: 22.02.2017, 20:47
Danksagung erhalten: 1 Mal

Re: Originales HM-PBI-4-FM wiederbeleben

Beitrag von Funsailor » 28.03.2024, 18:22

Aber mit E3 sollte das Teil doch trotzdem anlaufen, dann ist dann lediglich die Frequenz des Systemtakt falsch....
Oder passt dann die SpI Frequenz überhaupt nicht mehr?
Ich bin mit AVRDUDESS ja bis auf 500Baud runtergegangen

Edit1: Sorry, habe eben erst den Kommentar von Stan gelesen....
Hat jemand eine Idee wie ich beim Programmer die Frequenz so weit runtersetzen kann?
Im Notfall Bau ich mir einen ISP Programmer aus einem Arduino und muss dann das Programm anpassen.
... und natürlich Onkel Google bemühen
Edit2: Ich habe in der Krustel-Kiste noch einen Chinaclone (mit ALU Gehäuse) gefunden.. Den hatte ich total vergessen weil ich den nicht zum laufen gebracht hatte. Jetzt den Hack gefunden (https://irq5.io/2017/07/25/making-usbas ... es-usable/) wichtig ist das patchen der Hex Datei in Zeile 185.. und dann die Datei brennen.
Jetzt habe ich 2 Programmer mit der aktuellen Firmware...
Jetzt kann ich mich wieder dem ursprünglichem Problem zuwenden... Ein einfaches Blinky Programm zum laufen zu bringen :idea: :?: :wink:
Zuletzt geändert von Funsailor am 28.03.2024, 22:12, insgesamt 1-mal geändert.

Benutzeravatar
stan23
Beiträge: 2070
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 608 Mal
Danksagung erhalten: 346 Mal
Kontaktdaten:

Re: Originales HM-PBI-4-FM wiederbeleben

Beitrag von stan23 » 28.03.2024, 19:45

Der SPI-Clock vom Programmer muss kleiner sein als der Systemtakt. Maximal die Hälfte oder noch weniger.


Welchen Programmer hast du denn?

Einen Arduino als Programmer zu nehmen und dort den Takt im Code sehr langsam einzustellen ist eine gute Idee.

Nur würde ich damit nicht den Speicher flashen, sonst dauert es bis Pfingsten :D
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

Funsailor
Beiträge: 21
Registriert: 22.02.2017, 20:47
Danksagung erhalten: 1 Mal

Re: Originales HM-PBI-4-FM wiederbeleben

Beitrag von Funsailor » 28.03.2024, 22:14

Hi Stan,
Habe eben beschrieben wie ich die Fuses wieder gerade gebogen habe ...
Jetzt kann ich mich wieder meinem Blinky Programm widmen.... :wink: :roll:

Funsailor
Beiträge: 21
Registriert: 22.02.2017, 20:47
Danksagung erhalten: 1 Mal

Re: Originales HM-PBI-4-FM wiederbeleben

Beitrag von Funsailor » 02.04.2024, 23:31

Geschafft....
allerdings mit Umwegen, mein USBASP flippte immer aus, wenn ich ein größeres Programm laden wollte :( . Blinky ging gerade mal so, aber alles was größer war... keine Chance :twisted: .
Keine Ahnung warum, der verify ging jedes mal schief :?: . Ich hatte zum Glück noch einen weiteren ISP Stick da :wink: und mit dem konnte ich das Projekt weiter vorantreiben. Das Blinken ist allerdings nicht wie im Original, die LED's blinken zum konfigurieren nicht einfarbig (grün) sondern gelb :roll: . Ich kann den PBI-4FM pairen, das peering muss ich noch testen. So weit so gut.

Hier mal der bisherige Code aus verschiedenen Sketchen zusammengebastelt:

Code: Alles auswählen

//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2016-10-31 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
//- -----------------------------------------------------------------------------------------------------------------------
// ci-test=yes board=168p aes=no
// define this to read the device id, serial and device type from bootloader section
// #define USE_OTA_BOOTLOADER
#define EI_NOTEXTERNAL

#define SENSOR_ONLY
#define NORTC
#define NOCRC 
#define SIMPLE_CC1101_INIT

#define NDEBUG

//saves ~646 bytes program size:
extern "C" void *malloc(size_t size) {return 0;}
extern "C" void free(void* p) {}


#include <EnableInterrupt.h>
#include <AskSinPP.h>
#include <MultiChannelDevice.h>
#include <Remote.h>
// wird nicht mehr benötigt #include <LowPower.h>


// we use a Pro Mini
// Arduino pin for the LED
// D4 == PIN 4 on Pro Mini
//#define LED_PIN A4
//#define LED_PIN2 A5

// http://stefanfrings.de/avr_tools/avrdude-6.3-mingw32.zip


#define LED_PIN A5
#define LED_PIN2 A4
// Arduino pin for the config button
#define CONFIG_BUTTON_PIN 0
// Arduino pins for the buttons
#define BTN1_PIN 9
#define BTN2_PIN 8
#define BTN3_PIN 7
#define BTN4_PIN 6

#define CC1101_GDO0_PIN 2
#define CC1101_PWR_PIN 5
#define ACTIVATE_PIN   17

// number of available peers per channel
#define PEERS_PER_CHANNEL 16
#define WAKE_TIME_MS      2500   //Stay awake for 2.5 seconds after last action (original eQ-3 -> 10 secs)
#define MSG_COUNT_BYTE    8      //StorageConfig Byte to save last message counter value
#define RPT_COUNT_BYTE_1  9      //StorageConfig Byte to save last repeat counter value ch.1
#define RPT_COUNT_BYTE_2  10     //StorageConfig Byte to save last repeat counter value
#define RPT_COUNT_BYTE_3  11     //StorageConfig Byte to save last repeat counter value
#define RPT_COUNT_BYTE_4  12     //StorageConfig Byte to save last repeat counter value
// all library classes are placed in the namespace 'as'
using namespace as;

// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
    {0x00,0xda,0x00},       // Device ID    
    "JPPBI4FM01",           // Device Serial
    {0x00,0x34},            // Device Model
    0x01,                   // Firmware Version
    as::DeviceType::Remote, // Device Type
    {0x00,0x00}             // Info Bytes
};

/**
 * Configure the used hardware
 */
typedef AvrSPI<10, 11, 12, 13> SPIType;
typedef Radio<SPIType,CC1101_GDO0_PIN, CC1101_PWR_PIN> RadioType;
typedef DualStatusLed<LED_PIN2, LED_PIN> LedType;
typedef AskSin<LedType,BatterySensor,RadioType> HalType;
class Hal : public HalType {
  // extra clock to count button press events
  AlarmClock btncounter;
public:
  void init (const HMID& id) {
    HalType::init(id);
       // get new battery value after 50 key press
    battery.init(50,btncounter);
    battery.low(22);
    battery.critical(19);
  }

  void sendPeer () {
    --btncounter;
  }

  bool runready () {
    return HalType::runready() || btncounter.runready();
  }
};

typedef RemoteChannel<Hal,PEERS_PER_CHANNEL,List0> ChannelType;
typedef MultiChannelDevice<Hal,ChannelType,4> RemoteType;

Hal hal;
RemoteType sdev(devinfo,0x20);
ConfigButton<RemoteType> cfgBtn(sdev);

template <uint8_t EN_PIN>
class PowerOffAlarm : public Alarm {
private:
  bool    timerActive;
public:
  PowerOffAlarm () : Alarm(0), timerActive(false) {}
  ~PowerOffAlarm () {}

  void init() {
    pinMode(EN_PIN, OUTPUT);
    digitalWrite(EN_PIN, HIGH);
  }

  void activateTimer(bool en) {
    if (en == true && timerActive == false) {
      sysclock.cancel(*this);
      set(millis2ticks(WAKE_TIME_MS));
      sysclock.add(*this);
    } else if (en == false) {
      sysclock.cancel(*this);
    }
    timerActive = en;
 }

  virtual void trigger(__attribute__((unused)) AlarmClock& clock) {
    powerOff(true);
  }

  void powerOff(bool save) {
    if (save == true) {
      StorageConfig sc = sdev.getConfigArea();
      uint8_t currentCount = sdev.nextcount() - 1;
      sc.setByte(MSG_COUNT_BYTE, currentCount);
      sc.setByte(RPT_COUNT_BYTE_1, sdev.channel(1).repeatCount());
      sc.setByte(RPT_COUNT_BYTE_2, sdev.channel(2).repeatCount());
      sc.setByte(RPT_COUNT_BYTE_3, sdev.channel(3).repeatCount());
      sc.setByte(RPT_COUNT_BYTE_4, sdev.channel(4).repeatCount());
      sc.validate();
//     // DPRINT("setByte ");DDECLN(currentCount);
    }
//    DPRINTLN(F("GOOD BYE JONNY"));_delay_ms(200);
    digitalWrite(ACTIVATE_PIN, LOW);
  }
  
};

PowerOffAlarm<ACTIVATE_PIN> pwrOffAlarm;



void setup () {
  
  pinMode(ACTIVATE_PIN, OUTPUT);
  digitalWrite(ACTIVATE_PIN, HIGH);
  pinMode(CC1101_PWR_PIN, OUTPUT);
  digitalWrite(CC1101_PWR_PIN, LOW);

  //DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);

  pwrOffAlarm.init();


  buttonISR(cfgBtn,CONFIG_BUTTON_PIN);
  remoteISR(sdev,1,BTN1_PIN);
  remoteISR(sdev,2,BTN2_PIN);
  remoteISR(sdev,3,BTN3_PIN);
  remoteISR(sdev,4,BTN4_PIN);

 uint8_t TA = 0;
  if (digitalRead(CONFIG_BUTTON_PIN) == LOW) TA = 1;
  if (digitalRead(BTN1_PIN)  == LOW) TA = 2;
  if (digitalRead(BTN2_PIN)  == LOW) TA = 3;
  if (digitalRead(BTN3_PIN)  == LOW) TA = 4;
  if (digitalRead(BTN4_PIN)  == LOW) TA = 5;

  if (TA > 0) {
   sdev.init(hal);

   sdev.initDone();
   StorageConfig sc = sdev.getConfigArea();
   uint8_t msgCount = sc.getByte(MSG_COUNT_BYTE);
   while (sdev.nextcount() < msgCount);

   sdev.channel(1).repeatCount(sc.getByte(RPT_COUNT_BYTE_1));
   sdev.channel(2).repeatCount(sc.getByte(RPT_COUNT_BYTE_2));
   sdev.channel(3).repeatCount(sc.getByte(RPT_COUNT_BYTE_3));
   sdev.channel(4).repeatCount(sc.getByte(RPT_COUNT_BYTE_4));
  
   hal.radio.setSendTimeout();
   if (TA == 1) cfgBtn.irq();
   else if (TA == 2) sdev.channel(1).button().irq();
   else if (TA == 3) sdev.channel(2).button().irq();
   else if (TA == 4) sdev.channel(3).button().irq();
   else if (TA == 5) sdev.channel(4).button().irq();
  } else {
    pwrOffAlarm.powerOff(false);
  }



  }

void loop() {
  bool worked = hal.runready();
  bool poll = sdev.pollRadio();
  if(worked == false && poll == false ) {
      pwrOffAlarm.activateTimer( hal.activity.stayAwake() == false &&  worked == false && poll == false );
//   hal.activity.savePower<Sleep<>>(hal);
//   digitalWrite(ACTIVATE_PIN, LOW);
//    hal.radio.setIdle();
 //   hal.led.ledOff();
 //   LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
  }
}
Vor allem bei der Erweiterung mit der Klasse 2PowerOffAlarm" bin ich mir nicht sicher ob das so stimmt.... funktionieren tut es auf jeden Fall, der CC1101 und die CPU werden am Ende der Übertragung (oder wenn das blinken vorbei ist) abgeschaltet.

Verbesserungsvorschläge werden auf gerne entgegengenommen.

Die Fuses habe ich einem HM-SCI-3-FM entlockt:

L=0xEC
H=0xD7
E=0xFF
LB=0xFF

Vielen Dank an allen die diese Software gemacht haben und weiter pflegen...
LG Michael

Antworten

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