HMW-IO-12-FM

Begonnen von maxx3105, 09 März 2024, 12:05:49

Vorheriges Thema - Nächstes Thema

Ralf9

#15
ich habe von den HMW-IO-12-FM 2 Stück. Ich habe sie mit Treibern für Relais in Hutschinengehäuse eingebaut.
Die events bei delayed peerings funktionieren nicht richtig.
Das event, das kommen sollte, wenn bei einem ondelay peering das Licht wieder ausgeht, kommt nur ab und zu.
Das ist auch abhängig von der Anzahl der Ausgänge mit peerings.

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

maxx3105

Ich habe versucht einen anderen Sketch auf meine HMW-IO-12-FW Platine zu laden und habe dazu den ATmega32 versucht zu integieren in die hardware.h
/*
 * hardware.h
 *
 *  Created on: 23.05.2018
 *      Author: loetmeister.de
 */

#ifndef hardware_h
#define hardware_h

//#define _HAS_BOOTLOADER_    // enable bootlader support of the device. BOOTSTART must be defined as well

/* Start Boot Program section and RAM address start */
#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__)
// Boot Size 2048 words
#define BOOTSTART (0x3800)
#endif


#if defined(__AVR_ATmega168__)
#define RAMSTART (0x100)
#define NRWWSTART (0x3800)
#elif defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__)
#define RAMSTART (0x100)
#define NRWWSTART (0x7000)
#elif defined (__AVR_ATmega644P__)
#define RAMSTART (0x100)
#define NRWWSTART (0xE000)
#elif defined(__AVR_ATtiny84__)
#define RAMSTART (0x100)
#define NRWWSTART (0x0000)
#elif defined(__AVR_ATmega1280__)
#define RAMSTART (0x200)
#define NRWWSTART (0xE000)
#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega88__)
#define RAMSTART (0x100)
#define NRWWSTART (0x1800)
#elif defined (__AVR_ATmega32__)
#define RAMSTART (0x100)
#define NRWWSTART (0x3800)
#define BOOTSTART (0x3800)

#endif


/* sleep macro. Timer for millis() must keep running! Don't sleep too deep... */
#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__)
// "idle" sleep mode (mode 0)
#include <avr/sleep.h>
#define POWERSAVE() set_sleep_mode(0); \
                    sleep_mode();
//#elif defined (__AVR_ATmega644P__)... // TODO: add others
#endif

#endif /* hardware */

aber ich bekomme immer die selbe Fehlermeldung.
c:\Users\marku\Documents\Arduino\libraries\HBWired\src/HBWired.h:259:38: error: 'BOOTSTART' was not declared in this scope
  void (*bootloader_start) = (void *) BOOTSTART;   // TODO: Add bootloader?
                                      ^~~~~~~~~

Sind in die Bibliothek die angeführten ATmegas integiert?

Thorsten Pferdekaemper

Ich glaube, dafür muss der ATmega32 erst einmal in die Arduino-IDE eingebunden werden. (...unter der Annahme, dass Du es damit versuchst.)
Hier hat mal jemand was dazu aufgeschrieben:
https://www.instructables.com/Using-Atmega32-with-Arduino-IDE/
Hilft das?

...oder wir programmierst Du die Dinger normalerweise?

Gruß,
  Thorsten
FUIP

maxx3105

#18
https://github.com/MCUdude/MightyCore

Ich habe den einfacheren Weg gewählt.

Du darfst diesen Dateianhang nicht ansehen.

loetmeister

#19
Hi,

scheint als hatte ich nur in der HBWired.cpp aber nicht HBWired.h Datei den Fall des nicht definierten BOOTSTART abgefangen...  O:-)
Kommentiere einfach mal aus:
void (*bootloader_start) = (void *) BOOTSTART;  // TODO: Add bootloader?
(in libraries\HBWired\src/HBWired.h:258:38:)

habs kurz mit Mega32u4 kompiliert, das läuft dann durch.


EDIT:
Es spricht natürlich auch nix dagegen hardware.h mit dem ATmega32 zu ergänzen. Auch wenn ich keinen Bootloader nutze...

z.b. so (angenommen 0x3800 is die Startadresse des bootloaders)
/* Start Boot Program section and RAM address start */
#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__) || defined (__AVR_ATmega328PB__)
  // Boot Size 2048 words
  #define BOOTSTART (0x3800)
#elif defined (__AVR_ATmega32__)
  #define BOOTSTART (0x3800)
#endif

Gruß,
Thomas