AskSin++ Library

Begonnen von papa, 08 September 2016, 11:11:25

Vorheriges Thema - Nächstes Thema

papa

Oh man - das ist schon alles lange her. Wir haben versucht das so gut wie möglich nachzubauen. Ich würde mal behaupten, dass es keine großen Unterschied zwischen Wired & Funk gibt und wir das einfach nur nicht korrekt implementiert haben.


ZitatNutze einen Teil deines Codes in der HBWired Lib... hoffe das ist ok.

Na klar - kein Problem.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Funsailor

Hi Papa,
da es mir wieder besser geht, habe ich mich wieder mit den verschiedenen Sketche aus der AskSinPP befasst. Da ich aus meinen Anfängerzeiten mit FHEM noch einen verschlüsselten HM-SEC-WDS-2" rumliegen habe (den hatte ich vor zig Jahren in der Bucht erworben, ich dachte ich kann den bestimmt irgendwie zurücksetzen  :-\ ) wollte ich nun versuchen deinen Sketch HM-SEC-WDS auf den ATMega168 anzupassen.
Dabei fiel mir in der Ausgabe aus, das die PhaseCut.cpp eingebunden wird. Eigentlich darf diese Funktion kein Speicherplatz belegen da der Code mit der Zeile #ifndef SENSOR_ONLY ausgeblendet wird.

#include "PhaseCut.h"
namespace as {

#ifndef SENSOR_ONLY

#if defined(ARDUINO_ARCH_AVR) && ! (defined(ARDUINO_AVR_ATmega32) ||defined(__AVR_ATmega128__))
PhaseCut phaseCut;

PhaseCut::PhaseCut()
{
isInit = false;
}

void PhaseCut::init(uint8_t output_pin)

Irgendwie kam ich auf die Idee,die Datei in PhaseCut.__cpp umzubenennen.
Danach war der Sketch kleiner:

Der Sketch verwendet 15954 Bytes (97%) des Programmspeicherplatzes. Das Maximum sind 16384 Bytes.
Globale Variablen verwenden 635 Bytes (62%) des dynamischen Speichers, 389 Bytes für lokale Variablen verbleiben. Das Maximum sind 1024 Bytes.

Das ist die Ausgabe mit der original Datei PhaseCut.cpp:

Der Sketch verwendet 16246 Bytes (99%) des Programmspeicherplatzes. Das Maximum sind 16384 Bytes.
Globale Variablen verwenden 644 Bytes (62%) des dynamischen Speichers, 380 Bytes für lokale Variablen verbleiben. Das Maximum sind 1024 Bytes.

Der Sketch würde zwar auch in den 168er passen, aber es fehlt noch die Abschaltung des TRX Moduls, da benötige ich noch ein paar Bytes..

Ich habe den Code der gesamten der Funktion PhaseCut.cpp mit /* .... */ auskommentiert, dann wir der Sketch genau so klein ....

Irgendwo geht das
#define SENSOR_ONLY aus der ersten Zeile im Sketch HM-SEC-WDS.INO unterwegs verloren...

//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2017-10-19 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
// ci-test=yes board=328p 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

#define EI_NOTEXTERNAL

Hast du da eine Idee?

LG
Michael
- Asus PN 41- mapleCul V1.24.01 - FHEMDuino - FHEM 6.2 - HUE Bridge - ESPEasy Bridge -  Milight HUB - smartVISU 3.40 -

papa

Was für eine IDE benutzt Du denn ? Das Define muss für den kompletten Übersetzungsvorgang aktiv sein, damit der Code im PhaseCut deaktiviert wird. Es reicht nicht, diesen nur im Sketch zu setzen.

Im Sloeber / Eclipse kann für das Projekt extra Build Flags gesetzt werden. Dann werden alle Files, mit diesen Falgs übersetzt. Ob und wie das in der ArduinoIDE geht - weiss ich auch nicht genau.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Funsailor

#1623
Hi Papa,
die Arduino IDE... so ziemlich das b..... was man nutzen kann.

Ich habe jetzt versucht die extra build flags einzusetzen, erfolglos..

Hat da jemand Ahnung davon? ich käpmfe schon den ganzen morgen mit den verschiedensten Variationen.
Hier nochmals der Auszug aus der Boards.txt:
homematic.menu.cpu.8MHzatmega168p_NB=ATmega168p_NoBootload (3.3V, 8 MHz)

homematic.menu.cpu.8MHzatmega168p_NB.upload.maximum_size=14336    
homematic.menu.cpu.8MHzatmega168p_NB.upload.maximum_data_size=1024
homematic.menu.cpu.8MHzatmega168p_NB.upload.speed=19200

homematic.menu.cpu.8MHzatmega168p_NB.bootloader.low_fuses=0xEC
homematic.menu.cpu.8MHzatmega168p_NB.bootloader.high_fuses=0xD6
homematic.menu.cpu.8MHzatmega168p_NB.bootloader.extended_fuses=0xFF

homematic.menu.cpu.8MHzatmega168p_NB.bootloader.file=atmega/ATmegaBOOT_168_pro_8MHz.hex

homematic.menu.cpu.8MHzatmega168p_NB.build.mcu=atmega168
homematic.menu.cpu.8MHzatmega168p_NB.build.f_cpu=8000000L

#homematic.build.extra_flags=-{D SENSOR_ONLY}
#homematic.build.extra_flags={SENSOR_ONLY}
#homematic.build.extra_flags=-{SENSOR_ONLY}
#homematic.build.extra_flags={#define SENSOR_ONLY}
#homematic.build.extra_flags=#define SENSOR_ONLY
#homematic.compiler.cpp.extra_flags= #define SENSOR_ONLY=1

#"--build-property build.extra_flags=-SENSOR_ONLY"

####################################################

Die auskommentierten Zeilen sind nur einige Versuche.. ich finde dazu auch keine genaue Beschreibung im Netz.... und zuwenig Ahnung ::)  von der Arduino IDE. Bei der Arbeit nutzten wir die Keil-IDE, da war so etwas kein Problem  O:-)

Hat vieleicht jemand dazu eine Idee???

Danke
Michael

Edit: Okay, ich bin etwas weiter gekommen.
Ich habe im Verzeichniss der "Board.txt" und "platform.txt" eine neue Datei "platform.local.txt" mit folgendem Inhalt angelegt:

compiler.cpp.extra_flags= -DSENSOR_ONLY
compiler.c.extra_flags= -DSENSOR_ONLY
Dann funktioniert das zwar für das aktuelle Projekt, aber ich hätte das gerne auf die aktuelle Controller Auswahl  (homematic.menu.cpu.8MHzatmega168p_NB=ATmega168p_NoBootload (3.3V, 8 MHz)) beschränkt. Ich gehe davon aus, das nun alle Projekte mit der Option "SENSOR_ONLY" erzeugt werden  :-\

Wenn man diese Datei in den Projekt Ordner verschiebt wird diese ignoriert   :-X
- Asus PN 41- mapleCul V1.24.01 - FHEMDuino - FHEM 6.2 - HUE Bridge - ESPEasy Bridge -  Milight HUB - smartVISU 3.40 -

papa

#1624
Schau mal hier - https://forum.arduino.cc/t/how-to-specify-unique-compiling-options-for-multiple-sketches/679370/2

Müsste also so gehen:
homematic.build.extra_flags=-DSENSOR_ONLY
Und das habe ich auch noch gefunden - https://forum.arduino.cc/t/arduino-ide-where-can-i-pass-defines-to-the-compiler/680845/2
arduino --pref compiler.cpp.extra_flags=-DSENSOR_ONLY
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Funsailor

Hi Papa,
jeep, da war die einzige Option die ich nicht getestet habe und die war's. Vielen Dank für die Unterstützung  :)

- Asus PN 41- mapleCul V1.24.01 - FHEMDuino - FHEM 6.2 - HUE Bridge - ESPEasy Bridge -  Milight HUB - smartVISU 3.40 -