Homematic Wired - Homebrew Devices

Begonnen von Thorsten Pferdekaemper, 27 April 2014, 00:13:17

Vorheriges Thema - Nächstes Thema

loetmeister

Hi,

sorry, sehe grad das ich weiter oben geschrieben hatte die Raute zu löschen.... ist natürlich quatsch....  :) War da wohl versehentlich in Bash/Shell Syntax, statt C.  ::)
Es muss
#define Support_HBWLink_InfoEvent
statt
// #define Support_HBWLink_InfoEvent
in HBWired.h stehen.

Gruß,
Thomas

MarkusHiba

Habe ich auch gemacht da kommen auch Fehlermeldungen in einer anderen Datei von lcd.h
Mit freundlichen Grüßen

MarkusHiba

loetmeister

Was für Fehler kommen denn?
Eine "lcd.h" habe ich eigentlich nicht eingebunden. Ich nutze "LiquidCrystal.h". Nutzt du eine andere LCD Bibliothek?

Gruß,
Thomas

MarkusHiba

sorry falschen Dateinamen.
Im Auszug die Fehlermeldung von der Arduino IDE.


Arduino: 1.8.19 (Windows 10), Board: "Arduino Nano, ATmega328P"





















HBWDisplayLCD.cpp:1:1: error: stray '\357' in program

/*

^

HBWDisplayLCD.cpp:1:2: error: stray '\273' in program

/*

  ^

HBWDisplayLCD.cpp:1:3: error: stray '\277' in program

/*

   ^

In file included from C:\Users\marku\Downloads\HBWired-master\HBWired-master\HBW-DIS-Key-4\HBWDisplayLCD.cpp:9:0:

HBWDisplayLCD.h:1:1: error: stray '\357' in program

/*

^

HBWDisplayLCD.h:1:2: error: stray '\273' in program

/*

  ^

HBWDisplayLCD.h:1:3: error: stray '\277' in program

/*

   ^

In file included from C:\Users\marku\Downloads\HBWired-master\HBWired-master\HBW-DIS-Key-4\HBW-DIS-Key-4.ino:51:0:

HBWDisplayLCD.h:1:1: error: stray '\357' in program

/*

^

HBWDisplayLCD.h:1:2: error: stray '\273' in program

/*

  ^

HBWDisplayLCD.h:1:3: error: stray '\277' in program

/*

   ^

exit status 1

stray '\357' in program



Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Mit freundlichen Grüßen

MarkusHiba

loetmeister

Ok, mit der aktuellen Arduino IDE kann ich das reproduzieren... keine Ahnung was da für ein Zeichen am Dateianfang steht und warum das jetzt ein Problem ist, kann ich nicht nachvollziehen. :)
Lösche mal das erste Zeichen in der ersten Zeile... (vor /*) oder den ganzen Kommentarblock in HBWDisplayLCD.h und HBWDisplayLCD.cpp
Hab eine Änderung eingecheckt, so klappt es auch mit Arduino 1.8.19
https://github.com/loetmeister/HBWired/tree/master/HBW-DIS-Key-4

Gruß,
Thomas

MarkusHiba

super vielen Dank für die Hilfe.
Jetzt geht es.
Mit freundlichen Grüßen

MarkusHiba

loetmeister

#711
Hallo,

durch die, zuletzt etwas schwierige Liefersituation von elektronischen Bauteilen, wie z.B. Mikrocontroller, habe ich die Homebrew Lib etwas angepasst, um den ATMEGA 328PB nutzen zu können.
https://github.com/ThorstenPferdekaemper/HBWired
Arduino IDE Boards sind z.B. https://github.com/watterott/Arduino-Boards / https://github.com/MCUdude/MiniCore
Es gibt auch einige Clone mit ATMEGA 328PB welche als Entwicklungsboard genutzt werden können. Bei eigenen Platinen muss das Layout angepasst werden, da der 328PB Zwei zusätzliche IO ports hat.

Edit: Der 328PB scheint auch durch eine Änderung bei den Oszillator Optionen nicht mehr so einfach mit Quarzoszillatoren betreibar zu sein. Die 16 MHz Quarze die am 328P funktioniert haben, waren beim 328PB instabil. Mit 12 MHz Quarzen laufen sie nun bisher ohne reset. Eine neue Funktion CFD - Clock Failure Detection sollte für weitere Sicherheit sorgen... (1 MHz Notfallfrequenz, auch wenn dann der Code zu langsam läuft  ;D )

Gruß,
Thomas

Ralf9

Den Mega 2560pro finde ich interessanter, der hat genügend IOs und Speicher.
Ich bau mir damit z.Zt. ein Modul mit 16 key und 8 switch.

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

loetmeister

#713
Hallo and alle (besonders die, die diesen Thread auch nach dem Umzug noch abonniert haben ;-))

habe die HBWired library für den Raspberry Pi Pico angepasst, um weitere Geräte zu ermöglichen. Ich denke der Raspberry Pi Pico ist gut geeignet wenn viel Speicher (2Mb flash + 262Kb bytes! RAM & 133Mhz 2 Kerne!) gebraucht wird. IOs und UART/I2C sind auch mehrfach vorhanden...  8)  ADC Eingänge leider nur 3 nutzbar, und leider gibt es auch kein internes EEPROM. Zwei Pins für ein i2c EEPROM zu opfern ist aber denke ich auch ok.

Letzteres ist auch die größte Änderung, um statt der avr eigene EEPROM Klasse anderen Klassen für i2c EEPROMs zu ermöglichen. Dazu ist ein globaler pointer auf das aktuelle eeprom Objekt eingeführt, und ersetzt die bisherigen EEPROM.read / EEPROM.write
Aus:
EEPROM.read();
wird:
EepromPtr->read();

https://github.com/ThorstenPferdekaemper/HBWired/compare/master...loetmeister:HBWired:dev#diff-eecac3eeb0692bab930aad8a0d9d60c1f9a90c35ddca95f57803227018357767L14

Das bedingt dann leider in jedem bestehenden AVR Sketch die neue "<HBW_eeprom.h>" einzubinden und ein EEPROMClass* EepromPtr = &EEPROM; einzufügen.
Wenn man das eleganter lösen kann, lasst es mich wissen!


Die zweite Änderung ist denke ich weniger "problematisch", da es keine Anpassung an bestehenden Devices/Sketch erfordert. Es war aber nötig die Methoden HBWDevice::readConfig() und HBWDevice::getCentralAddress() überschreibbar zu machen.
Der in den AVR/Arduino Nano funktionierende hbw_config struct kann auf dem Pi Pico so nicht verwendet werden und führt zum Absturz des Prozessors.

EDIT:
Ergänzung zur EEPROM Änderung... eigentlich wollte ich eine einfache (aber kompatible) i2c EEPROM lib in die HBW lib aufnehmen, da aber leider alle Dateien im Lib-Verzeichnis Kompiliert werden, würde rel. viel unnützer i2c Code (TWI Lib) mit eingebunden, was natürlich nicht erwünscht ist. Daher muss eine i2c EEPROM Lib separat installiert, bzw. in das Arduino lib Verzeichnis kopiert werden.

Was mir auch beim Vergleich des ATmega / AVR Code aufgefallen ist: Es macht keinen unterschied ob EEPROMClass* EepromPtr = &EEPROM; im Sketch steht oder nicht... irgendwie scheint der Pointer EepromPtr dereferenziert zu werden... die hbw_config lädt wie erwartet die Werte...
Bin aber noch dabei zu testen.


Gruß,
Thomas