Autor Thema: AVR Attiny44A als 1Wire Slave konfiguierbar DS2423/DS18BS20/DS2408/DS2413  (Gelesen 14802 mal)

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Zusammen,

ich habe den Quellcode von Tobias Mueller als Basis für eine erweiterte Version des 1wire Slave verwendet.
Hierbei habe ich den Quellcode überarbeitet und die beiden Version von Tobias DS2423/DS18BS20 in einen Quellcode eingepflegt.

Zusätzlich habe ich eine Emulation eine DS2408 und DS2413 eingebaut. Hierbei habe ich auch die EEPROM Routinen
zum Speichern der Daten im EEPORM bei Powerfail eingefügt. Jedoch habe ich in meinem Quellcode derzeit nur einen ATTINY44A unterstützt,
da mein Ziel ein DS2408 war und hier der Speicher bei den anderen Chips mir zu klein war. Und wegen ein paar Cent
mir die "Birne" nicht verbiegen wollte.

Zudem habe ich noch eine Optimierung des Stromverbrauchs durchgeführt. Derzeit unterstützt der Code jedoch nur den
Idle Mode der CPU, was aber immerhin 2-3mA Strom einspart, wenn der CHIP nicht arbeitet.

Der Quellcode wurde ausführlicher dokumentiert, damit andere die ganze Sache besser verstehen können

Die DS2408 Software und die DS2413 Software habe ich mit Signalspeicherung bis zur nächsten Abfrage ausgestattet, was ich noch genau testen muss. Auf dem Schreibtisch arbeitet es recht gut. Hierbei werden kurze Impulse, welche zwischen dem Abtasten der Chips von der CPU erzeugt wurden, zwischengespeichert.

Der Code steht unter GNU (wie auch im Quellcode erklärt) und ich bitte darum alle Autoren im Code stehen zu lassen, selbst wenn man den Code aus diesem Modul rauskopiert. Hier sollte immer ein Hinweis auf die ursprunglichen Autoren vorhanden sein.

Bitte auch die Wiki Betrag lesen: http://www.fhemwiki.de/wiki/1-Wire_Emulation_per_ATTiny

Viele Grüße

R.


P.S.: Anbei der Quellcode und der verwendete Schaltplan.
Edit: Schaltplan angepasst. Hier arbeite ich jetzt mit einem Fotowiderstand, welcher besser LED's erkennt (verschiedene Farben)
Der Quellcode wurde leicht überarbeitet. Fehler beseitigt. Stromverbrauch gesenkt (ca. 7mA, Neue Werte, wie im Schaltplan noch nicht gemessen)

Edit 10.10.2015
- Schaltplan aktualisiert (Fehler für Gold-Cap Ladung, Powerfailerkennung)
- Software Version 2.01 überarbeitet, Fehler EEPROM Sichern bei Powerfail behoben (Spannungsteiler entscheidend)
  (Dauerbetrieb folgt noch, da hier Spannungseinbrüche zum Stop des Slaves führen können)
- Fusebits als Bild beigefügt.
- Interrupt-Handling für Powerfail geändert.
Edit: 04.12.2015
- Erweiterung des DS2423 um den Memorypage Support 14 & 15
- Kleine Fehler im DS2408 (siehe Thread)
- Powerfail Tests  stehen noch aus, diese sollten aber nur eine Hardware oder Fusebits sein (BODLEVEL)
- Counter für Schreibbefehlen in Memorypage und Powerfail eingeführt.
Die Portierung der Memoryfunktion in benötigt viel Programmspeicher und kann nur noch in größere Version des ATTINY portiert werden


define DS2408_A20000000001 OWDevice 29.A20000000001 2
attr DS2408_A20000000001 model DS2408
attr DS2408_A20000000001 room OWDevice

« Letzte Änderung: 04 Dezember 2015, 20:39:46 von ritchie »
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 701
  • No support over PM! Please use the thread ...
Hallo ritchie,
ich habe versucht das C-File zu kompilieren:

avr-gcc -g -Os -mmcu=attiny44a -c owslave.c
owslave.c: In function â__vector_2â:
owslave.c:1310:1: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
owslave.c: In function âmainâ:
owslave.c:1358:39: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]

wie man sieht, ohne Erfolg. Compiler Version 4.7.2. Irgendeine Idee?

Ach übrigens, der C101 kann nicht aufgeladen werden. Durch die D100 kann der Gold-Cap nur entladen werden.
Produktivsystem: Raspberry Pi 3, Add-On Board mit 1.8" TFT LCD, FHEM V5.7, CULFW V1.66, FS20, ESA2000, JeeLink Clone RFM69CW, LaCrosse, EMT7110, 1-Wire, WiFi LED Controller, Yamaha AVR
Testumgebung: Raspberry Pi 3, FHEM trunk, FHEM Tablet UI, ESP8266, miniCUL-WLAN mit a-culfw, LaCrosseGateway

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hi,

ich habe den Quellcode mit dem AVR Studio in einer Windows VM übersetzt.

Heute morgen nochmals extra für Dich, um diese Ausgabe zu bekommen.
------ Build started: Project: owslave, Configuration: Debug AVR ------
Build started.
Project "owslave.cproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "E:\Atmel Studio 6.0\Vs\Compiler.targets" from project "S:\owslave\owslave.cproj" (target "Build" depends on it):
Task "RunCompilerTask"
E:\Atmel Studio 6.0\make\make.exe all
Building file: .././owslave.c
Invoking: AVR/GNU C Compiler : (AVR_8_bit_GNU_Toolchain_3.4.0_663) 4.6.2
"E:\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-gcc.exe" -funsigned-char -funsigned-bitfields -I"S:\owslave-master\DS2423A\DS2423A"  -O1 -fpack-struct -fshort-enums -g2 -Wall -c -std=gnu99 -MD -MP -MF "owslave.d" -MT"owslave.d" -MT"owslave.o"  -mmcu=attiny44a   -o"owslave.o" ".././owslave.c"
In file included from .././owslave.c:37:0:
e:\atmel studio 6.0\extensions\atmel\avrgcc\3.4.0.65\avrtoolchain\bin\../lib/gcc/avr/4.6.2/../../../../avr/include/avr/crc16.h(36,2): #warning "This file has been moved to <util/crc16.h>." [-Wcpp]
S:\owslave\owslave.c(108,9): backslash and newline separated by space [enabled by default]
S:\owslave\owslave.c(134,1): multi-line comment [-Wcomment]
S:\owslave\owslave.c(140,54): backslash and newline separated by space [enabled by default]
S:\owslave\owslave.c(141,40): backslash and newline separated by space [enabled by default]
S:\owslave\owslave.c(279,5): backslash and newline separated by space [enabled by default]
S:\owslave\owslave.c(322,5): backslash and newline separated by space [enabled by default]
.././owslave.c: In function '__vector_2':
S:\owslave\owslave.c(1311,1): cast to pointer from integer of different size [-Wint-to-pointer-cast]
.././owslave.c: In function 'main':
S:\owslave\owslave.c(1359,39): cast to pointer from integer of different size [-Wint-to-pointer-cast]
Finished building: .././owslave.c
Building target: owslave.elf
Invoking: AVR/GNU Linker : (AVR_8_bit_GNU_Toolchain_3.4.0_663) 4.6.2
"E:\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-gcc.exe" -o owslave.elf  owslave.o   -Wl,-Map="owslave.map" -Wl,--start-group -Wl,-lm  -Wl,--end-group  -mmcu=attiny44a 
Finished building target: owslave.elf
"E:\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature  "owslave.elf" "owslave.hex"
"E:\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-objcopy.exe" -j .eeprom  --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0  --no-change-warnings -O ihex "owslave.elf" "owslave.eep" || exit 0
"E:\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-objdump.exe" -h -S "owslave.elf" > "owslave.lss"
"E:\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-size.exe" "owslave.elf"
   text    data     bss     dec     hex filename
   2650       8      24    2682     a7a owslave.elf
Done executing task "RunCompilerTask".
Using "RunOutputFileVerifyTask" task from assembly "E:\Atmel Studio 6.0\Vs\Compiler.Task.dll".
Task "RunOutputFileVerifyTask"
Program Memory Usage : 2658 bytes   64,9 % Full
Data Memory Usage : 32 bytes   12,5 % Full
Done executing task "RunOutputFileVerifyTask".
Done building target "CoreBuild" in project "owslave.cproj".
Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "E:\Atmel Studio 6.0\Vs\Avr.common.targets" from project "S:\owslave\owslave.cproj" (entry point):
Done building target "Build" in project "owslave.cproj".
Done building project "owslave.cproj".

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

Generell sehe ich hier nur "warnings" von Casting Problemen. Hatte ich wohl übersehen.

Da musst Du dann wohl Hand anlegen, um diese Warnung zu beseitigen.

Generell wird aber ein Hex-File angelegt, wenn man es mit diesem Befehl verwendet.
avr-gcc -std=c99 -Wall -Os -mmcu=attiny44a -o owslave.hex owslave.c


Viele Grüße

Gruss R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3164
Ich versuch den Schaltplan gerade zu verstehen...
1. Wozu ist der Taster da?
2. Bei 4 Eingängen, welche 2 sind belegt für einen DS2423/DS2413?
3. Ist für den DS2406 auch die Speicherbefehle implementiert? OWSWITCH speichert Kum-Werte um 0Uhr direkt im Chip
4. Was genau kann man mit dem 100k Potis an den Eingängen regeln? Eine Eingangsschwelle? Ich sehe auch keine Kondensatoren zum Entprellen
5. Warum nur 4 Eingänge für einen DS2408?
6. Die LED´s blinken auf wenn Kontakt am jeweiligen Eingang anliegt? Im Ruhezustand sind sie aus?

Ich habe zwischenzeitlich Dougies Layout des DS2423 auf 1TE Hutschiene layoutet (incl Punkt6 und eeprom Speicherung), aber noch keine Zeit gehabt länger zu testen...

Grüsse
FHEM auf Cubitruck mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, SprinkleControl, Sprinkle, TrashCal, MediaList

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Tobias,

hier meine Antworten ...

Zitat
1. Wozu ist der Taster da?
Ich verwende Ihn um den Status der Eingänge an den LED's anzeigen zu lassen.
Zitat
2. Bei 4 Eingängen, welche 2 sind belegt für einen DS2423/DS2413?
PIN A1 / A2 Siehe auch Source Code
Zitat
3. Ist für den DS2406 auch die Speicherbefehle implementiert? OWSWITCH speichert Kum-Werte um 0Uhr direkt im Chip
Derzeit nicht. Feel free to add
Zitat
4. Was genau kann man mit dem 100k Potis an den Eingängen regeln? Eine Eingangsschwelle? Ich sehe auch keine Kondensatoren zum Entprellen
Da ich hier mit der Abfrage von LED's arbeite und keine Schalter verwende, Sah ich keinen Grund hierfür.
Zitat
5. Warum nur 4 Eingänge für einen DS2408?
Da ich Status der Eingänge direkt am zu überwachenden Geräte auch ohne FHEM sehen will und hier verwende ich
die Ausgänge für die LED's.
Zitat
6. Die LED´s blinken auf wenn Kontakt am jeweiligen Eingang anliegt? Im Ruhezustand sind sie aus?
Nein, Sie zeigen nur den Status der Eingänge an, wenn man den Taster drückt. (Um Strom zu sparen.)
Man kann natürlich auch einen Jumper setzen und sieht den Status immer direkt an den LED's.

Wie gesagt, dies ist eine Schaltung, welche ich für mich erstellt habe und daher sollte diese Schaltung auch meine
Bedürfnisse erfüllen. Dies kann ja jeder ändern wie er will, da ich ja beides bereitgestellt habe.

Viele Grüße

R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline Fux

  • New Member
  • *
  • Beiträge: 5
Hallo ritchie,

mit dem AVR als 1wire Slave ergeben sich ganz neue Möglichkeiten:
als sehr interessant finde ich es, etwas nicht nur über 1wire sondern parallel dazu auch manuell über Taster zu schalten.

Als Einsatzzweck denke ich hierbei z.B. an ein Licht im Aussenbereich/Garten:
- ein-/ausschalten zentral über 1wire
- aktuellen Status (ein/aus) über 1wire abfragen
- manuell ein-/ausschalten vor Ort über einen Taster

Perfekt wäre noch die Ergänzung für automatisches ein-/ausschalten durch einen angeschlossen Bewegungsmelder an einem AVR-Eingang.

Das ist natürlich nur ein Einsatzgebiet und es gibt hier sicher etliche andere. Interessant vor allem auch bei einem 1wire-Ausfall, dass man immer noch vor Ort manuell schalten kann.


Ich habe mir den Quellcode schon mal angeschaut und habe hierzu ein paar Fragen:
- statt 4 Eingänge -> 2 Ausgänge und 2 Taster-Eingänge. Ist es ausreichend für die Ausgänge nur die DDRx Maske neu zu setzen?
- wo sollten die Taster implementiert werden, in der Hauptschleife oder in der 1wire-Schleife?
- der durch den Taster neue gesetzte Ausgang soll gleich ins Eeprom geschreiben werden, wie könnte man das lösen?


Viele Grüße
Fux
« Letzte Änderung: 14 September 2014, 12:35:13 von Fux »

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hi,
ich bin gerade "offline", schaue mir aber Deine Sachen nach meiner Rückkehr an.
Generell kannst Du alle Ein-/Ausgänge nach Deinen Wünschen anpassen, nur die 1wire
Schnittstelle solltest Du so lassen. In der Interrupt Routine so wenig wie möglich machen,
da sonst das Timing des 1wire gefährtet ist.

Am besten ein Flag in der Interruptroutine setzen und in der Mainloop dann abarbeiten.

Gruss aus den Staaten
R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Fux,

Zitat
- statt 4 Eingänge -> 2 Ausgänge und 2 Taster-Eingänge. Ist es ausreichend für die Ausgänge nur die DDRx Maske neu zu setzen?
Hier muss Du für die Software nur die Zeile "DDRA &~" entsprechend anpassen. Natürlich muss die Hardware auch entsprechend sein.

#define INIT_COUNTER_PINS /* Counter Interrupt */ \
GIMSK|=  (1<<PCIE0);\
PCMSK0=  (1<<PCINT3)|(1<<PCINT4)|(1<<PCINT0); \
DDRA &=~ (1<<PINA1) | (1<<PINA2); \
istat=PINB;
#endif

Zitat
- wo sollten die Taster implementiert werden, in der Hauptschleife oder in der 1wire-Schleife?

Wie bereits gesagt, sollten diese Funktionen nicht in der 1wire Routine sein.

Je nach verwendete CPU kannst Du natürlich kleine Funktionen in der Interrupt Routine (Falls dieser PIN Change on Interrupt unterstützt, geht nicht bei jedem PIN) programmieren. Nur ist für diesen Zeitraum, eine evtl. 1wire Komunikation nicht möglich. Daher hier nur ein Flag setzen und die Bearbeitung in der Hauptloop durchführen.

Eine reine Abfrage des Schalters, sollte auch in der Hauptroutine möglich sein, je nach Impulslänge. (sehr kurze Signale -> Interruptroutine).
Das menschliche Betätigen eines Tasters -> Mainloop.
Drehzahlmessung -> Interrupt

Zitat
- der durch den Taster neue gesetzte Ausgang soll gleich ins Eeprom geschreiben werden, wie könnte man das lösen?

Diese Quellcodezeile sind für das Schreiben in das EEProm zuständig.

#include <avr/eeprom.h>
...

// für eine Schreiboperation...
eeprom_write_byte((uint8_t *)0,0x55);\
eeprom_write_byte((uint8_t *)1,latch_piostate);\

// für Leseoperationen
state=eeprom_read_byte((uint8_t *)0); // read the magic code, if the eeprom is valid
if( state == 0x55)
{
    Counter[0]=eeprom_read_dword((uint32_t *)1); // EEprom Values are valid
    Counter[1]=eeprom_read_dword((uint32_t *)5);
}

Aber vorsichtig, diese Funktionen laufen "Atomic", das heisst, sie werden nicht durch einen Interrupt unterbrochen.
Daher werden die entsprechenden Funktionen nur beim Ein-/Ausschalten des Controllers aufgerufen.

Der von mir erstellte Code ist für einen Atmel At Tiny 44A vorgesehen. Durch eine entsprechende Erweiterungen der entsprechenden
Macrodefinitionen kann jeder andere Controller verwendet werden. Also auch ein Atmega 32/64/...


Zitat
Als Einsatzzweck denke ich hierbei z.B. an ein Licht im Aussenbereich/Garten:
- ein-/ausschalten zentral über 1wire
- aktuellen Status (ein/aus) über 1wire abfragen
Dies kann man auch mit den Standardbausteinen des 1wire machen, dafür ist der Software-Slave nicht notwendig.

Seine Stärken sind hier evtl. Sicherheitsfunktionen zusätzlich einbinden. Motoren nur einschalten, wenn evtl. Rückmelden vorhanden sind oder
noch nicht. Diese eigenständig ausschalten (kein Wasser mehr da, Pumpe ausschalten, da Trockenlauf die Pumpe beschädigt...)
Da geht natürlich auch mit  zusätzlichen Standard 1wire Bausteinen, kostet aber mehr und die Verwaltung macht hierbei FHEM. Nicht wirklich sicher, da bei Ausfall des Systems die Pumpe immer noch läuft.

Und natürlich der "Manuelle Betrieb" ohne FHEM, meine Anwendung.

Viele Grüße

R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline Fux

  • New Member
  • *
  • Beiträge: 5
Hallo ritchie,

Danke für Deine ausführliche Antwort! Hoffe ich habe demnächst mal Zeit um das Ganze anzuschauen.

Grüße
Fux

jaripetteri

  • Gast
Hi and sorry about English,

I manage to compile your code for Attiny84 but could you tell the fuse bits you are using? My understanding is that those should be same for tiny84 as on tiny44A.

Also would it be possible to add more counters than two?

jaripetteri

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4106
In principle you may add as many counters as you like - but then would create a non-standard 1-Wire device that has no software support (so far).

Regards

pah

jaripetteri

  • Gast
That is true. Maybe make device look like two devices on same package for 1wire bus. Two address and two dual counter. Adding another MCU is sure more simple solution.

But anyway now I'm more concern about making just one to work. I have pretty simple hardware, basically just MCU connected to LinkUSB,  powered by USB. I'm able to communicate other devices (DS1820) on bus with OWFS on RPi but when I power MCU it blocks all communication on bus. I have compared my hardware with Ritchie's and it should be fine. Fuse settings I'm using are High = 0xDD, Low = 0XE2 & Extended = 0xFF and those i'm not sure are those right. Also tried to make DS2408 device but same result. I'm missing something here but can't figure it out what it is.

Is there tools to sniff 1wire bus somehow?

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hi Jaripetteri,

I used a logic analyser to check, if the transmission work.
But my Analyser is a only for hobbyist and not that good.

But it shows the transmission very well for about 20 ms.
Google will tell you alot of choices, depending on the prize.

I just used the standard fuses for the chip. I can check this at the weekend,
if you still need the setting. How about your skills in atmega programming ?

The software is able to create almost every combination of information
for the 1-wire bus. But keep in mind, that such chips will run only  in your envirement.
If you have special requests, you can change this, but it is not supported by owserver or
 OWSWITCH,.... . You have to modify such code as well, by your self.
I would not recomment to do this. Use better more that one of such chips to fullfil your requirement.

Hope this helps

R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3164
Bekommt man das eigentlich leicht in die arduino IDE mit einem 328p übertragen?

Gesendet von meinem ALCATEL ONE TOUCH 997D mit Tapatalk

FHEM auf Cubitruck mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, SprinkleControl, Sprinkle, TrashCal, MediaList

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hi Tobias,

ich vermute mal, das man sich schon etwas mit dem chip beschäftigen muss. Der größte Aufwand
ist immer bei der Anpassung der entsprechenden Register Definitionen (Header MACROS).

Leicht würde ich also nicht sagen, aber machbar.

Gruss R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline doubh

  • New Member
  • *
  • Beiträge: 20
Ich habe die Firmware für den ATTiny44a 1-Wire Slave (owslave.c) etwas angepasst.

Das Speichern der Werte im EEprom was zu unsicher und hat bei mir auch mal Probleme bereitet.
Ich verwende die ESP8266-07 <-> DS2480 <-> ATtiny44a Hardware, wie hier beschrieben:
http://forum.fhem.de/index.php/topic,38024.0.html

Achtung, das Pinout ist unterschiedlich.

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3164
Super Arbeit!!!
Steht irgendwo was an welchem Pin des ATTiny44a anzuschließen ist? Ist die FW auch auf dem ursprünglichen ATTiny25 nutzbar bzw an dem ursprünglichen Schaltbild des DS2423?
FHEM auf Cubitruck mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, SprinkleControl, Sprinkle, TrashCal, MediaList

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 701
  • No support over PM! Please use the thread ...
Siehe bitte Schaltplan:
http://forum.fhem.de/index.php?action=dlattach;topic=38024.0;attach=33258

Ich nehme an, Du meinst diesen DS2423 hier:
http://m1n1.de/html/1wire.html
In der aktuellen Konfiguration wird die FW auf dem ATtiny25 nicht laufen – die Portbelegung stimmt nicht mit dem ATtiny44A überein.

Produktivsystem: Raspberry Pi 3, Add-On Board mit 1.8" TFT LCD, FHEM V5.7, CULFW V1.66, FS20, ESA2000, JeeLink Clone RFM69CW, LaCrosse, EMT7110, 1-Wire, WiFi LED Controller, Yamaha AVR
Testumgebung: Raspberry Pi 3, FHEM trunk, FHEM Tablet UI, ESP8266, miniCUL-WLAN mit a-culfw, LaCrosseGateway

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3164
ok, hätte ja sein können das man über ein Define auswählen kann ob die 44er oder die 25er Variante läuft... Hab jetzt nicht groß in den code geschaut...
Ich finde es aber großartig das man einen Code hat den man nur noch über die defines customizen muss :)
FHEM auf Cubitruck mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, SprinkleControl, Sprinkle, TrashCal, MediaList

Offline doubh

  • New Member
  • *
  • Beiträge: 20
Ich bin ursprünglich über diese Seite
https://www.tobynet.de/index.php/1-wire-device-mit-avr/12-avr-owdevice-v12
auf die Idee gekommen, einen ATTiny zu verwenden.

Ein größeres Projekt dazu findet sich hier:
https://github.com/smurfix/owslave


Leider ist nicht alles über Defines anpassbar.
Es gibt z.B. zwar OW_PORT & OW_PIN, aber in INIT_TEMP() wird wieder direkt PB2 verwendet...
Vielleicht stricke ich das mal um - wenn viel Zeit ist  :)

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hi,
Ich kann mir das ganze gerne mal ansehen.
Derzeit habe ich aber eingeschränkte Moeglichkeiten.
Es wird also was dauern, bis ich dazu komme.
Ich wollte sowieso noch einige Funktionen einbauen,
Da kann ich das gleich mit machen (alle Defines anlegen).
Gruß aus USA

siehe auch wiki für weitere Infos.
R.
« Letzte Änderung: 13 Juni 2015, 21:57:30 von ritchie »
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4106
Zitat
Derzeit habe ich aber eingeschränkte Moeglichkeiten.

Ich dachte, die USA seien das Land der unbegrenzen Möglichkeiten ?

LG

pah


Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Dachte ich auch immer, ;)
aber in einem Motel und auf einem Tablet/Handy ist man schon was eingeschrankt.
Ausserdem wuerde meine Frau mich einen Kopf kleiner machen.
Viele Gruesse aus Franklin / North Carolina
R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Zusammen,

ich bin derzeitig an der Überarbeitung und Tests der  von mir hier abgelegten Software am arbeiten.
Hierbei habe ich bis jetzt folgende Erweiterungen eingefügt.

//VERSION 2.01          Correct some warnings during use of eeprom Functions Type cast
//                      Add Software_reset after eeprom_write to avoid Problems of
//                      prevent unknown executing code during power fail (add watchdog function)
//                  Add function of failure diagnosis on LEDs for communication check

Sind noch weitere Sachen/Fehler bis heute aufgefallen ? Vielleicht kann ich sie ja berücksichtigen.
In der Wiki (http://www.fhemwiki.de/wiki/1-Wire_Emulation_per_ATTiny) will ich dann auch die vewendeten Fuse Bits ablegen und einige Infos zur Erstellung.


Edit 1:  Es befinden sich zwei Schaltungsfehler in der Schaltung, welche eine korrekte Funktion der Powerfail Erkennung verhindern.
D100 muss durch eine Drahtbrücke ersetzt werden. Sie verhindert das Laden des Kondensator  C101 :o
Der Widerstand R2 muss auch 100K geändert werden, damit die Spannung näher an dem Umschaltpunkt von High auf low liegt, damit
der Prozessor mehr Zeit zum Sichern der Daten hat.

Ebenso scheint die Software noch nicht ganz rund in diesem Bereich zu arbeiten. Wenn ich fertig bin, werden die Dokument aktualisiert.
Zudem wird hiernach noch BOR notwendig, damit der Prozessor keinen Blödsinn mehr macht.

Viele Grüße

R.
« Letzte Änderung: 08 Oktober 2015, 17:41:35 von ritchie »
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Zusammen,

neue Version der Software abgelegt.
Ich habe hier Fehler in der Behandlung des EEPROM Sicherung bearbeitet. Ebenso einige Sachen noch parameterierbar  gemacht.
Auch habe ich zwei Fehler in der Schaltung behoben. (Eine Diode entfernt und die Widerstandswerte für R1&R2 geändert.

Viele Grüße
R.

APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4106
Ok, ist in der Software auch die Nutzung der internen memory pages drin ? Die hatte ich mal eingebaut, weil das ganz nützlich zum Ablegen der Zwischenwerte ist.

LG

pah

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Pah,

das habe ich nicht eingebaut.

Wenn Du mir aber diese Version zur Verfügung stellen würdest, würde ich es noch einbauen.

Viele Grüße

R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4106
Bitte e-Mail-Adresse per PN, dann schicke ich die Datei.

LG

pah

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3164
Hi,
super arbeit... Insbesondere da mein Initial-Wiki Beitrag jetzt endlich mit Leben gefüllt wurde wozu ich bis dato noch keine Zeit gefunden hatte :) :)

Hast du für den ATTiny25 auch einen aktualisierten Schaltplan parat? Würde super in den Artikel passen. Von diesen Dingern hab ich noch 50 Stück bei mir rumliegen ;)

Ist in der Schaltung auch die Änderung zur besseren Erkennung von langsamen Spannungsabfällen eingebaut? Siehe Bild. War mal hier im Forum in einem Thread dabei gewesen...
« Letzte Änderung: 13 Oktober 2015, 08:16:51 von Tobias »
FHEM auf Cubitruck mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, SprinkleControl, Sprinkle, TrashCal, MediaList

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4106
Abbildung 5 in Kapitel 3 des in Arbeit befindlichen Buches.
(http://SH_0305.png)
Allerdings nur mit der "einfachen" Erkennung des Spannunsabfalls, und auch nur als Option

LG

pah

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Zusammen,

@Tobias
Zitat
Hast du für den ATTiny25 auch einen aktualisierten Schaltplan parat? Würde super in den Artikel passen. Von diesen Dingern hab ich noch 50 Stück bei mir rumliegen
Na, wenn Du 50 Stück davon noch auf Lager hast, ist das doch eine entsprechende Motivation, die Anpassung selber zu machen.

Ich selber habe nur den Counter von "dougie" im Einsatz. Für meine eigenen Schaltungen verwende ich den Attiny 44a und andere. Daher liegt diese Schaltung nicht ganz in meinem Focus.

Derzeit bin ich an in der Erweiterung der Software um das Schreiben/Lesen ins "EEPROM" des DS2423 zu emulieren.

Da ich die Erweiterung für das EEPROM gestern eingebaut habe (hier nochmals vielen Dank an pah für den Quellcode), muss ich auch das zeitliche Verhalten "meiner" Schaltungs-Version prüfen, da ich jetzt 128 bytes mehr zu sichern habe (ich will memorypage12..15 unterstützen). Hier benötigt der Prozessor ca. 70 ms für das Sichern der Wert, bevor BOD zuschlägt.

Zitat
super arbeit... Insbesondere da mein Initial-Wiki Beitrag jetzt endlich mit Leben gefüllt wurde wozu ich bis dato noch keine Zeit gefunden hatte
Das hatte ich vor ein paar Monaten (Mai) mal gemacht. Jedoch alles auf den Attiny 44a gemünzt.
Vielleicht erweitere ich den Code irgendwann mal um den Attiny25. (Define Bereich). Da dieser jedoch  deutlich weniger Funktionen hat, ist meine Motivation derzeit nicht sehr gross hierfür.

@pah
Nicht schlecht der Specht.

Viele Grüße

R.


APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline drv103

  • Newbie
  • Beiträge: 2
Hallo zusammen,

danke zunächst einmal für die Bereitstellung der Sourcen.
Ich habe mich die letzten Tage mit den Sourcen auseinandergesetz und versucht, die Output-Funktion des DS2408 in Betrieb zu nehmen.
Dies scheiterte zunächst... Mir sind dabei folgende Punkte aufgefallen, die Probleme bereiten:

Registerdefinition
Zunächst ist das #define des ChannelAccess-Registers verdreht. In Version 2.2 steht hier:
#define OW_WRITE_CHANNELACCESS_REGISTER 0xA5
Allerdings ist 0xA5 der OW_Resume Befehl. Damit dürfte dann jeder OW_Resume Befehl in der Schreib Routine landen...
Hier müsste stattdessen "0x5A" stehen, wie es beim DS2413 der Fall ist:
#define OW_WRITE_CHANNELACCESS_REGISTER 0x5A

Die Output-Routine
Die zu setzenden Outputs werden als zwei Bytes übergeben. Das erste stellt binär die Zustände der 8 IOs dar, das zweite ist invertiert.
Bei der Addition der beiden uint8 ist in den Sourcen der Vergleich schief:
case OW_WRITE_CHANNELACCESS_REGISTER: // write to the Channel Access register
if ((ow_iobuffer[1] + ow_iobuffer[2]) == 0 ) // The sum must be zero for the correct transmission
{
Der Vergleich gegen "0" ist nie wahr. Wenn man sich die beiden Extremwerte anschaut, dann kann der IO-Zustand 0x00 (alles low) oder 0xFF (alles high) sein.
Invertieren ergibt dementsprechend 0xFF und 0x00. Allerdings ist 0x00 + 0xFF == 0xFF! Damit also der Vergleich wahr werden kann muss hier stehen:
case OW_WRITE_CHANNELACCESS_REGISTER: // write to the Channel Access register
if ((ow_iobuffer[1] + ow_iobuffer[2]) == 0xFF ) // The sum must be 0xFF for the correct transmission
{

Macht man diese Anpassungen, dann werden die Befehle zum Setzen (SET_PIO_[A..G] / CLEAR_PIO_[A..G]) ausgeführt.
Für meine Applikation benötige ich 4 Inputs & 4 Outputs. Daher habe ich die Makros für E bis G durch die "LED" -Makros ersetzt.
#define SET_PIO_A SET_BIT(PORTA,1) // Port definitions for the real used hardware
#define CLEAR_PIO_A CLEAR_BIT(PORTA,1)
#define SET_PIO_B SET_BIT(PORTA,2)
#define CLEAR_PIO_B CLEAR_BIT(PORTA,2)
#define SET_PIO_C SET_BIT(PORTA,2)
#define CLEAR_PIO_C CLEAR_BIT(PORTA,2)
#define SET_PIO_D SET_BIT(PORTA,2)
#define CLEAR_PIO_D CLEAR_BIT(PORTA,2)
#define SET_PIO_E SET_BIT(PORTA,7)
#define CLEAR_PIO_E CLEAR_BIT(PORTA,7)
#define SET_PIO_F SET_BIT(PORTB,1)
#define CLEAR_PIO_F CLEAR_BIT(PORTB,1)
#define SET_PIO_G SET_BIT(PORTB,0)
#define CLEAR_PIO_G CLEAR_BIT(PORTB,0)
#define SET_PIO_H SET_BIT(PORTA,5)
#define CLEAR_PIO_H CLEAR_BIT(PORTA,5)
Weiterhin habe ich die LED Defines (SHOW_IOSTATE_ON_LED & SHOW_ERROR_ON_LED) auskommentiert.
Es wäre schön, wenn wir diese Änderungen in eine nächste Version einpflegen könnten.

MfG.

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hi,

vielen Dank für Deine Hinweise.

Derzeit bin ich noch an der Bearbeitung des DS2423 (RAM Emu). Irgendwie will meine
Checksummenberechnung nicht so wie ist (Vermutung).

Deine Änderungen kommen dann in diese Version auch mit rein. Habe aber derzeit (schon seit längerem
viel um die Ohren), kann also noch was dauern.

Gruss R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Zusammen,

ich habe die Version 2.02 des AVR 1Wire-Slave Moduls im ersten Thread abgelegt.
Es stehen jetzt noch Powerfail Tests aus.

Viele Grüße

R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 701
  • No support over PM! Please use the thread ...
Passend zum Beitrag biete ich im Marktplatz ein kleines Kontingent an bestückten Platinen zum Kauf an.
Produktivsystem: Raspberry Pi 3, Add-On Board mit 1.8" TFT LCD, FHEM V5.7, CULFW V1.66, FS20, ESA2000, JeeLink Clone RFM69CW, LaCrosse, EMT7110, 1-Wire, WiFi LED Controller, Yamaha AVR
Testumgebung: Raspberry Pi 3, FHEM trunk, FHEM Tablet UI, ESP8266, miniCUL-WLAN mit a-culfw, LaCrosseGateway

Offline ak323

  • Full Member
  • ***
  • Beiträge: 109
Hi zusammen,
hat vielleicht irgendjemand zu diesem Projekt eine Platine erstellt ?
Ich würde mir gerne ein paar Platinen ätzen und würde mir gerne die Arbeit ersparen, daß in Eagle zu machen, wenn schon mal jemand etwas gemacht hat ... wenn nicht, muß ich halt wohl mal ran  ..

VG ak323
neu: RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, smartVISU GUI, diverse HomeMatic devices über HMLAN, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401) über DS9490R#, Waterkotte Ai1QE (WWPR) Sole-Wasser Wärmepumpe über Modbus, 433 MHz Funksteckdosen, WiFi Light, WiFi RGB, WiFi RGBWW ...

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 701
  • No support over PM! Please use the thread ...
Gerberdaten und Warenkorb für alle Interessierten, die die Platine nachbauen möchten.

Unbestückte Leiterplatten: ITEAD Studio
Bauteile: Reichelt Elektronik

Die Verwendung der Daten für kommerzielle Zwecke, Herstellung oder gewerblichen Vertrieb ist untersagt.

« Letzte Änderung: 22 März 2017, 21:47:15 von locutus »
Produktivsystem: Raspberry Pi 3, Add-On Board mit 1.8" TFT LCD, FHEM V5.7, CULFW V1.66, FS20, ESA2000, JeeLink Clone RFM69CW, LaCrosse, EMT7110, 1-Wire, WiFi LED Controller, Yamaha AVR
Testumgebung: Raspberry Pi 3, FHEM trunk, FHEM Tablet UI, ESP8266, miniCUL-WLAN mit a-culfw, LaCrosseGateway

Offline ak323

  • Full Member
  • ***
  • Beiträge: 109
 :) :) :)
Supi ... Danke !
ak323
neu: RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, smartVISU GUI, diverse HomeMatic devices über HMLAN, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401) über DS9490R#, Waterkotte Ai1QE (WWPR) Sole-Wasser Wärmepumpe über Modbus, 433 MHz Funksteckdosen, WiFi Light, WiFi RGB, WiFi RGBWW ...

Offline Inputsammler

  • Full Member
  • ***
  • Beiträge: 127
Hey,

Cool Danke Dir

@locutus mit was machst du deine Layouts mit Eagle oder was anderem.
Ich versuche mir gerade einzuarbeiten in Layout Programme.
Sprint, Eagle

Gruß und Danke  Gerd
FHEM TREFFEN war wieder SUPER
Rpi's und Bpi's und Hw von Dirk und locutus
CCU2,F20,Ks300,1-Wire,Homematic usw ... wird immer mehr :-)
vitodens 300 & IstrkrM372 auslesen über USB und FHEM
RUHE IN FRIEDEN AHA1805 RIP:29.08.16

Offline ak323

  • Full Member
  • ***
  • Beiträge: 109
Hi drv103, locutus,
ich brauche auch Outputs für meine Anwendung.

Habt ihr die Änderungen schon in den Code eingepflegt ?
neu: RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, smartVISU GUI, diverse HomeMatic devices über HMLAN, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401) über DS9490R#, Waterkotte Ai1QE (WWPR) Sole-Wasser Wärmepumpe über Modbus, 433 MHz Funksteckdosen, WiFi Light, WiFi RGB, WiFi RGBWW ...

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 701
  • No support over PM! Please use the thread ...
@locutus mit was machst du deine Layouts mit Eagle oder was anderem.
Ich versuche mir gerade einzuarbeiten in Layout Programme.
Sprint, Eagle
CadSoft Eagle

Hi drv103, locutus,
ich brauche auch Outputs für meine Anwendung.

Habt ihr die Änderungen schon in den Code eingepflegt ?
Und mit Outputs ist ein DS2408 gemeint?
Produktivsystem: Raspberry Pi 3, Add-On Board mit 1.8" TFT LCD, FHEM V5.7, CULFW V1.66, FS20, ESA2000, JeeLink Clone RFM69CW, LaCrosse, EMT7110, 1-Wire, WiFi LED Controller, Yamaha AVR
Testumgebung: Raspberry Pi 3, FHEM trunk, FHEM Tablet UI, ESP8266, miniCUL-WLAN mit a-culfw, LaCrosseGateway

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Zusammen,

Zitat
ich brauche auch Outputs für meine Anwendung.
Habt ihr die Änderungen schon in den Code eingepflegt ?

Das wird bereits vom Quellcode unterstützt, nur halt nicht für alle Kombinationen von Ausgängen.
Hier muss man seine Ausgangskonfiguration selber anpassen und das Projekt neu kompilieren.

Hierbei darf man aber nie vergessen, das im Normalfall ein DS2408 oder DS2413 vollkommen ausreicht
(Ich habe selber 4 DS2408 mit jeweils 8 Relais und einige (5 oder 6) DS2413 mit einem Relais und einem Eingang im Einsatz.)

Wer nicht in der Lage ist den Quellcode eigenständig an seine Schaltung anzupassen, sollte die Finger davon lassen.
Nicht zu vergessen, wenn man zwei von den Teilen im Netz hat, muss man für jeden einen  HEX File erstellen.

Hier muss man/frau die Programmierumgebung für das Flashen haben.

Das ganze ist eigentlich für Schaltungen mit Wandelfunktionen gedacht. Hier habe ich für mich eine Überwachung von
externen Geräten realisiert, wo ich mittels Fotodiode den LED-Status abfrage. Danach aus sportlicher Sicht noch
weitere Funktionen eingebaut und weitere Module von Tobias in den Quellcode eingebaut, damit er einheitlich für alle Chips zu verwenden ist.

Andere Schaltungen wären mit diesem Quellcode auch möglich, können aber nicht derart verallgemeinert werden, das sie für jeden passen.

Der Quellcode, die dazugehörige Wiki und verlinkte Webseiten sollten aber jedem einen entsprechenden Einstieg
geben. Derzeit sind von mir keine weiteren Erweiterungen geplant.

Viele Grüße

R.
« Letzte Änderung: 13 März 2016, 19:40:01 von ritchie »
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline drv103

  • Newbie
  • Beiträge: 2
Hallo ak323,

bei mir nutze ich die I/O-ports auch als Ausgänge um über einen ULN-Baustein Relais zu betätigen.
Ich habe den Baustein in 4 Inputs (wie im Original) und 4 Outputs getrennt.
Dazu muss der Quelltext allerdings angepasst werden. Ich könnte dir meinen angepassten Quellcode zur Verfügung stellen.
Allerdings stimmt ritchie's Aussage... wenn man nicht mit der Materie vertraut ist, hilft es einem nicht weiter.  :(
Wenn ich die Tage etwas Luft habe, beschreibe ich mal die Stellen, an denen die Änderungen stattfinden müssen.

Hinzu kommt, dass man bei der Einbindung in FHEM etwas mehr Aufwand benötigt. Derzeit muss ich die Ausgänge byteweise setzen.
Deshalb muss man zunächst die Status aller Ausgänge auslesen und nach Anwendung der gewollten Änderung wieder zurück schreiben.

Edit:
Notwendige Änderungen
Zunächst habe ich ganz oben im Quelltext die notwendigen Defines für den DS2408 einkommentiert, alle anderen Auskommentiert (auch SHOW_IOSTATE_ON_LED / SHOW_ERROR_ON_LED). In der Definition von INIT_PORTS (DS2408) habe ich die Richtungsregister der Ports angepasst, zusätzlich auch den "default"-Wert der Ausgänge (PortX=0). Anschließend habe ich PIO_E bis PIO_H definiert - dort liegen bei mir die Ausgänge. Genauso für die "SET_PIO_" und "CLEAR_PIO_" Makros. Bei der Interruptbehandlung habe ich auch eine Erweiterung vorgenommen. Auch die Schreib- und Leseroutine habe ich erweitert.

Da eine Aufzählung aller einzelnen Änderungen etwas zu umfangreich scheint, hänge ich mein .c File mal an. Es kompiliert sauber im AtmelStudio 7 durch. Allerdings ist bei mir die Zuordnung der PINs geändert(!). PA1-PA4 sind Eingänge. PA5,PA7, PB0 und PB1 Ausgänge.


Gruß
drv103
« Letzte Änderung: 29 März 2016, 16:19:02 von drv103 »

Offline th1984

  • New Member
  • *
  • Beiträge: 36
Ich habe dank der Gerber Daten von locutus die Mindestmenge an Platinen in China bestellt. Wer eine unbestückte Platine braucht kann sich einfach per PN bei mir melden. Preis 4 Euro pro Stück + 3,60 Euro Versand aus Österreich. Es sind noch 2 Stück verfügbar. 
« Letzte Änderung: 20 September 2016, 10:49:42 von th1984 »

Offline Achim

  • Full Member
  • ***
  • Beiträge: 230
Hallo,

die Platine von Damian enthält einen ISP Stecker. Leider lässt sich der ATTiny darüber nicht programmieren. Wenn ich ihn aus der Fassung nehme und separat mit dem Programmer (USBTinyISP) verbinde, funktioniert das Programmieren. Gibt es einen "Trick" damit dies auch auf der Platine funktioniert oder mache ich da noch irgendwo einen Fehler?

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 701
  • No support over PM! Please use the thread ...
Gibt es einen "Trick" ...
Potis auf Rechtsanschlag.
Produktivsystem: Raspberry Pi 3, Add-On Board mit 1.8" TFT LCD, FHEM V5.7, CULFW V1.66, FS20, ESA2000, JeeLink Clone RFM69CW, LaCrosse, EMT7110, 1-Wire, WiFi LED Controller, Yamaha AVR
Testumgebung: Raspberry Pi 3, FHEM trunk, FHEM Tablet UI, ESP8266, miniCUL-WLAN mit a-culfw, LaCrosseGateway

Offline Inputsammler

  • Full Member
  • ***
  • Beiträge: 127
Hey

Nein da gibt es keinen Trick nur richtig anschließen.
Wenn ich zuhause bin suche ich die richtige Bezeichnung.
Gruß Gerd
FHEM TREFFEN war wieder SUPER
Rpi's und Bpi's und Hw von Dirk und locutus
CCU2,F20,Ks300,1-Wire,Homematic usw ... wird immer mehr :-)
vitodens 300 & IstrkrM372 auslesen über USB und FHEM
RUHE IN FRIEDEN AHA1805 RIP:29.08.16

Offline Achim

  • Full Member
  • ***
  • Beiträge: 230
Hallo Damian,

Zitat
Potis auf Rechtsanschlag.
geht nicht, auch nicht Linksanschlag. Ich habe ihn jetzt "extern" programmiert.

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 701
  • No support over PM! Please use the thread ...
Mein 3 € USBasp aus Fernost erkennt den TINY ausschließlich in der Rechtsstellung der Potentiometer.
Im Schaltbild ist die SCK Leitung direkt mit dem LM358 verbunden. Dies könnte die Ursache sein, weshalb der Programmer scheitert.
Produktivsystem: Raspberry Pi 3, Add-On Board mit 1.8" TFT LCD, FHEM V5.7, CULFW V1.66, FS20, ESA2000, JeeLink Clone RFM69CW, LaCrosse, EMT7110, 1-Wire, WiFi LED Controller, Yamaha AVR
Testumgebung: Raspberry Pi 3, FHEM trunk, FHEM Tablet UI, ESP8266, miniCUL-WLAN mit a-culfw, LaCrosseGateway

Offline Inputsammler

  • Full Member
  • ***
  • Beiträge: 127
Hey

Das Stk500 und meine anderen China Programmer haben keine Probleme.
Hatte Anfangs nur das Problem von 10 poligen Apdapter auf 6 poligen Stecker.
http://www.mikrocontroller.net/articles/AVR_In_System_Programmer

Ich habe nur bei den Chip die Fuse geändert, da dieser nicht immer gut startete.

Bei mir ist kein Unterschied ob Poti links oder rechts ist. Kann ihn immer auslesen.
FHEM TREFFEN war wieder SUPER
Rpi's und Bpi's und Hw von Dirk und locutus
CCU2,F20,Ks300,1-Wire,Homematic usw ... wird immer mehr :-)
vitodens 300 & IstrkrM372 auslesen über USB und FHEM
RUHE IN FRIEDEN AHA1805 RIP:29.08.16

Offline Achim

  • Full Member
  • ***
  • Beiträge: 230
Hallo,

ich habe einen USBtinyISP aus Fernost. Wahrscheinlich kommt er mit dem angeschlossenen LM358 nicht zurecht. Kabel schließe ich aus. Ist ein Flachkabel, das ich auch für die "externe" Programmierung verwendet habe.

[Update]
Ich habe die beiden LM358 ausgelötet und auf Sockel gesetzt (ja, ich weiß, einer hätte zu Test ausgereicht..). Ohne den LM358 funktioniert das Programmieren auch mit meinem USBTinyISP V3.0.

Viele Grüße
Achim
« Letzte Änderung: 16 April 2016, 17:46:26 von Achim »
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

Offline Inputsammler

  • Full Member
  • ***
  • Beiträge: 127
Hey Achim

Danke für die RM.
 Sind die Programmer doch so unterschiedlich.

Gut zu wissen für andere Projekte.

Gruß Gerd
FHEM TREFFEN war wieder SUPER
Rpi's und Bpi's und Hw von Dirk und locutus
CCU2,F20,Ks300,1-Wire,Homematic usw ... wird immer mehr :-)
vitodens 300 & IstrkrM372 auslesen über USB und FHEM
RUHE IN FRIEDEN AHA1805 RIP:29.08.16

Offline doubh

  • New Member
  • *
  • Beiträge: 20
Hab einen Bug in der Firmware gefixt, durch den Counts verloren gingen:
Hier ists beschrieben:
https://forum.fhem.de/index.php/topic,10962.msg454396.html#msg454396

Offline ak323

  • Full Member
  • ***
  • Beiträge: 109
Hi zusammen,
ich habe jetzt dankenswerterweise ein paar Plantinen bekommen.
Nun ist alles zusammengelötet und ich scheitere am Programieren des ATtiny !

Kann mir einer von Euch erfahrenen Progrmmierern einen Tip geben, wie ich das hex-File über einen Ardunio als ISP in den ATtiny bekommen kann ... ?

Danke für Eure Hilfe !
ak323
neu: RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, smartVISU GUI, diverse HomeMatic devices über HMLAN, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401) über DS9490R#, Waterkotte Ai1QE (WWPR) Sole-Wasser Wärmepumpe über Modbus, 433 MHz Funksteckdosen, WiFi Light, WiFi RGB, WiFi RGBWW ...

Offline co010

  • New Member
  • *
  • Beiträge: 23
Hallo zusammen,
ich habe nun mal die Platine von Locus an meinen 1wire-Bus (USBLink-Adapter fuchs-Shop_OWX definiert) angeschlossen,
nach einen shutdown restart wird die Platine als OWCOUNT - DS2423 A20000000001 korrekt erkannt.
Nun meine Fragen:
1. gibt es eine Funktionsbeschreibung für diese Platine ?
1. am IOA habe ich einen Reedkontakt angeschlossen der Kanal A: wird gezählt aber nach kurzer Zeit ist der Kanal A: wieder auf 0 und wird nicht gespeichert ?
2. was kann man mit den Potis am IOA bis IOD genau einstellen ?
3. die LEDs haben bei mir keine Funktion trotz gesetzten Jumper ?
4. nach einen Neustart des FHEM-Servers (trennen vom Strom) ist Kanal A: und B: auch wieder auf 0 ?

was mache ich da falsch ?

danke
Roberto

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 701
  • No support over PM! Please use the thread ...
1. gibt es eine Funktionsbeschreibung für diese Platine ?
2. was kann man mit den Potis am IOA bis IOD genau einstellen ?
Siehe Antwort #4

3. die LEDs haben bei mir keine Funktion trotz gesetzten Jumper ?
Nur DS2408 und DS2413, siehe Quellcode owslave.c

1. am IOA habe ich einen Reedkontakt angeschlossen der Kanal A: wird gezählt aber nach kurzer Zeit ist der Kanal A: wieder auf 0 und wird nicht gespeichert ?
Eventuell schrittweise am Poti drehen.

4. nach einen Neustart des FHEM-Servers (trennen vom Strom) ist Kanal A: und B: auch wieder auf 0 ?
Siehe OWCOUNT-FHEMWiki
attr <name> nomemory = 1|0 (when set to 1, disabels use of internal memory)
Produktivsystem: Raspberry Pi 3, Add-On Board mit 1.8" TFT LCD, FHEM V5.7, CULFW V1.66, FS20, ESA2000, JeeLink Clone RFM69CW, LaCrosse, EMT7110, 1-Wire, WiFi LED Controller, Yamaha AVR
Testumgebung: Raspberry Pi 3, FHEM trunk, FHEM Tablet UI, ESP8266, miniCUL-WLAN mit a-culfw, LaCrosseGateway
Andere Meinung Andere Meinung x 1 Liste anzeigen

Offline co010

  • New Member
  • *
  • Beiträge: 23
Okay danke locutus für die Antworten;

ich werde das nochmal testen mit dem Speichern der Zähler mit ,attr <name> nomemory = 1|0 (when set to 1, disabels use of internal memory)
mit attr <name> nomemory = 0 in der config müssten dann die Zählerstände gespeichert bleiben.

Eine Frage noch, da beim trennen der Stromversorgung am pi auch der 1-wire USB-Busmaster stromlos wird und da evt.die Counter Platine mit ext.+5V versorgen
um das Zählen der Impulse weiter zu garantieren,wäre das möglich ?

mfg Roberto

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Zusammen,

hat sich von Euch schon mal jemand mit der Emulation des DS2450 in diese Software beschäftigt.

Gruss R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 701
  • No support over PM! Please use the thread ...
Antw:AVR Attiny44A als 1Wire Slave konfiguierbar DS2423/DS18BS20/DS2408/DS2413
« Antwort #58 am: 17 September 2016, 23:35:53 »
Hallo zusammen,

ich habe die Platine ein wenig kompakter gestaltet. Da die meisten Interessenten ausschließlich den DS2423-1W-Counter benötigen, sind die Leuchtdioden, LED-Vorwiderstände, der zweite OP AMP samt externer Beschaltung und der Taster entfernt worden.
Die Gerberdaten sind für ITEAD, Warenkorb für Reichelt Elektronik.

Die Verwendung der Daten für kommerzielle Zwecke, Herstellung oder gewerblichen Vertrieb ist untersagt.
« Letzte Änderung: 12 Februar 2017, 22:30:51 von locutus »
Produktivsystem: Raspberry Pi 3, Add-On Board mit 1.8" TFT LCD, FHEM V5.7, CULFW V1.66, FS20, ESA2000, JeeLink Clone RFM69CW, LaCrosse, EMT7110, 1-Wire, WiFi LED Controller, Yamaha AVR
Testumgebung: Raspberry Pi 3, FHEM trunk, FHEM Tablet UI, ESP8266, miniCUL-WLAN mit a-culfw, LaCrosseGateway

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Zusammen,

ich plane derzeit den Chip  "DS2450" in die Simulation mit aufzunehmen und eine Hutschienenversion für das Einlesen
von Analogeingängen zur erstellen. Hierbei würde ich gerne PT1000 (optional) verwenden, damit man diese für den Heizungsbau
verwenden kann.  Hat hier jemand bereits eine leere Platine für das Hutschienengehäuse unter Eagle als Download zur Verfügung ?

Da hier aber meine Heizungssteuerung mit arbeitet, muss ich wohl oder übel in den saueren Apfel beissen und das Teil selber
entwickeln. Leider ist die e-Service Lösung (Fertigmodul und Bausatz der Analog Eingangsplatine) für mich nicht zu gebrauchen (OW Server).
Ich habe sie hier liegen (3 Kanal Fertigmodul / 4 Kanal Fertigmodul und Bausatz-Leerplatinen), teuerer Spass ohne Nutzfaktor. :-[

Da der DS2450 in der Zukunft abgekündigt wird, scheint es auch eine Arbeit zu sein, welches bald von anderen benötigt wird.
Derzeit schaue ich mir die einzelen Prozessoren von Atmel an, um die geforderten Funktionen zu realisieren.

Leider wird das etwas dauern, aber derzeit gibt es nicht vernüftiges was man sonst kaufen könnte oder ?

Edit: Hardware steht und der erste Schaltplan auch.
Es wird der ATTINY44A verwendet und ein ADS1115 für die Analog-Wandlung (16Bit).
Die Software wird im Hauptcode eingefügt, jedoch wird eine andere Hardware vorausgesetzt, da mir die 10Bit Wandlung des ATTiny zu gering ist und ich auf eine zusätzlichen Chip zurückgreifen will.

Viele Grüße
R.
« Letzte Änderung: 30 Oktober 2016, 10:14:55 von ritchie »
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 701
  • No support over PM! Please use the thread ...
Hat hier jemand bereits eine leere Platine für das Hutschienengehäuse unter Eagle als Download zur Verfügung ?
Welcher Gehäusetyp? Ich habe ein Eagle Projekt für Pollins bzw. Reichelts 2-C Hutschienengehäuse.
Produktivsystem: Raspberry Pi 3, Add-On Board mit 1.8" TFT LCD, FHEM V5.7, CULFW V1.66, FS20, ESA2000, JeeLink Clone RFM69CW, LaCrosse, EMT7110, 1-Wire, WiFi LED Controller, Yamaha AVR
Testumgebung: Raspberry Pi 3, FHEM trunk, FHEM Tablet UI, ESP8266, miniCUL-WLAN mit a-culfw, LaCrosseGateway

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo locutus,

das 2C Gehäuse dürfte wohl zu schmal sein, würde aber als Basis auch gehen. Schliesslich
müsste ich es ja nur was breiter gestalten.

Anbei die erste Version des Schaltplans. Ich muss noch die Datenverbindung via I2C zu dem Baustein einwenig
vordenken, bevor ich mich an die Realisierung gebe.

Derzeit schwanke ich noch mit den 16 Bit des ADS1115 gegenüber den 10Bit ADC des ATTINY. Ob sich der Unterschied für den Hausgebrauch bemerkbar macht, da der Chip lange Lieferzeiten hat.

Viele Grüße
R.
Edit: Zenerdiode in Schaltplan eingebracht (hatte ich vergessen)
Edit1:  Schaltplan nochmals überarbeitet um das Programm einfacher zu gestalten und Powerfail Funktionen entfernt, da nicht benötigt.
Edit2: Schaltplan nochmals überarbeitet, Verwendung der USI I2C (TWI) Pins für das Interface zum ADS1115 verwendet.
Edit3: Erstes Layout fertig gerootet und als Bild angefügt. Software DS2450 Module codiert (ungetestet) IDS1115 Ansteuerung fehlt noch, I2C Routinen vorhanden.
Edit4: So, das sollte es jetzt sein.
« Letzte Änderung: 29 November 2016, 19:10:27 von ritchie »
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline th1984

  • New Member
  • *
  • Beiträge: 36
Hallo,

ich bin nun auch dazu gekommen die Platine von locutus zu bestücken und auszuprobieren. Leider bekomm ich das Teil jedoch nicht zu laufen. Programmiert, Fuses gesetzt und kontrolliert, jedoch will sich das gute Stück nicht am Bus zu erkennen geben. Um Fehler am Bus auszuschließen, habe ich es schon an zwei unterschiedlichen probiert: Einmal am RPi, und einmal am Arduino, jeweils mit 5V Busspannung. Die Dallas Temperatursensoren laufen jedenfalls einwandfrei. Am Arduino gibt sich die Platine manchmal (sehr selten und auch nur bei Fuse Setting SUT_CKSEL: int. RC Osc. 8MHZ, Start-up time PWRDWN/RESET: 6 CK/14 CK + 0 ms) zu erkennen, sprich man kann sie manchmal als Device in FHEM sehen. Werte abfragen geht dann aber wieder nicht. Versucht habe ich auch verschiedene Typen (DS2423, DS18BS20 etc...) mit der Platine durchzuspielen, das Ergebnis ist aber für alle das Gleiche. Ich bin mit meinem Latein leider am Ende, vielleicht hat aber jemand einen Denkanstoß was ich da falsch mache.

Danke und viele Grüße

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo th1984,

ändere diese Zeilen mal
#define OWT_READLINE 3 // 3 for fast master, 4 for slow master and long lines
#define OWT_LOWTIME  3 // 3 for fast master, 4 for slow master and long lines

auf diesen Wert
#define OWT_READLINE 4 // 3 for fast master, 4 for slow master and long lines
#define OWT_LOWTIME  4 // 3 for fast master, 4 for slow master and long lines

Gruss R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline locutus

  • Sr. Member
  • ****
  • Beiträge: 701
  • No support over PM! Please use the thread ...
Der ATtiny macht bei (BODLEVEL) 4,3V dicht. Der Spannungsabfall an der BAT43 beträgt ca. 0,3V. Die 1W-Busspannung darf nicht unter 4,6V fallen!
Produktivsystem: Raspberry Pi 3, Add-On Board mit 1.8" TFT LCD, FHEM V5.7, CULFW V1.66, FS20, ESA2000, JeeLink Clone RFM69CW, LaCrosse, EMT7110, 1-Wire, WiFi LED Controller, Yamaha AVR
Testumgebung: Raspberry Pi 3, FHEM trunk, FHEM Tablet UI, ESP8266, miniCUL-WLAN mit a-culfw, LaCrosseGateway

Offline th1984

  • New Member
  • *
  • Beiträge: 36
Hallo,

die Zeilen hatte ich nach meinem Post auch noch ausprobiert, mit keinem Erfolg. Ich werde mir aber heute Abend nochmal die Busspannung genau anschauen, evtl liegt diese tatsächlich bei ca. 4,6 V was ja dann knapp zu wenig wäre. Dann ist die Lösung hoffentlich denkbar einfach. Danke schonmal für die beiden Inputs!

Thomas

Offline Schneehase

  • Newbie
  • Beiträge: 2
Hallo Thomas,

bist Du mit dem Problem weitergekommen? Bei mir sieht es leider genauso aus, den Aufbau der Schaltung habe ich geprüft und keinen Fehler gefunden.
Bei 2 verwendeten Attinys zeigt sich das gleiche Bild: Der Testmode über Taster/Jumper funktioniert nicht, das Melden am OneWire-Bus erfolgt nur sporadisch (selten). Wenn der Attiny erkannt werden sind alle anderen Abfragen ungültig.
Das Setzen der Timing-Parameter auf "4" hat nichts gebracht, ebenso die Verwendung einer externen (stärkeren) Spannungsversorgung mit 5V. Am Controller liegen (nachgemessen) auch etwas mehr als 4,6V an.

Gruß

Klaus

Offline Schneehase

  • Newbie
  • Beiträge: 2
Hallo zusammen,

das Problem in meinem Fall saß vor der Tastatur. Mit dem als Standard angelegten synchronen OneWire (OWX) funktioniert es nicht, mit dem asynchronen (OWX_ASYNC) dann schon - auch oder gerade mit Firmata auf dem Arduino.

Gruß

Klaus

Offline Rudi352

  • New Member
  • *
  • Beiträge: 17
Hallo,

ich komme mit dem DS2423-ATTINY, die kompakte Version von locutus , nicht weiter.

Erkennen als OWCOUNT und Zählen kein Problem.
Bei Spannungsausfall ist alles wieder auf 0.
Wo werden die Zählerstände gespeichert und wie kommt man da wieder dran?

Danke für Infos

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4106
Gar nicht. Das ist aber auch beim originalen DS2423 so.

LG

pah

Offline Rudi352

  • New Member
  • *
  • Beiträge: 17
Beim originalen DS2423 ist das klar.

Aber wozu ist dann der Aufwand mit dem Goldcap und

"PIN Interrupt Routine / EEPROM sichern

Ebenso wird die Routine auch aufgerufen, wenn die Spannung an dem Spannungsteiler R1/R2 auf Low Level geht. Hierdurch wird der folgende Programmteil durchlaufen und die entsprechenden Werte des jeweiligen Chip ins EEPROM geschrieben. "
(fhem Wiki)

welche Werte werden abgespeichert?

Offline Rudi352

  • New Member
  • *
  • Beiträge: 17
Könnte vielleicht freundlicher Weise ein Entwickler die Funktion und Anwendung des Powerfail-feature erläutern?

Vielen Dank

Offline argo

  • Newbie
  • Beiträge: 2
Hallo zusammen,
ich habe die kompakte Platine von Locutus an meinem 1 wire Bus (I2C host interface DS2482-100 ABElectronics) angeschlossen
und er wurde als DS2423 erkannt.
Leider bekomme ich das Teil nicht stabil zum laufen, nach booten des Raspis (Stromversorgung unterbrochen) oder einer
kurzzeitigen Unterbrechung der Busspannung (5.02 V) wird dasTeil nicht mehr erkannt.
Am Controller liegen 4,7 V an.
Meine DS18S20 Sensoren funktionieren am Bus ohne Probleme.

Hat jemand einen Denkanstoß, was mache ich falsch?

Danke und Gruß
Klaus
Prod: RPi2, FHEM V5.7, MAX, Jeelink, LaCrosse, EC3000, 1-Wire, IT-Devices
Test: RPi2, FHEM Tablet UI, 1-wire

Offline Rudi352

  • New Member
  • *
  • Beiträge: 17
Mit diesem und anderen Problemen schlage ich mich seit Wochen herum.
Der Attiny hängt sich bei Spannungsausfall öfter mal auf.
Wiederbeleben geht mit längerer Spannungslosigkeit, entladen des C1 oder verbinden Pin 5 und 6 des ISP-Steckers. Also Hardware-reset.
Das Modul ist zwar eine sehr gute Idee, scheint aber noch viele Macken zu haben.
Von den Entwicklern bekommt man leider auch keine Hilfe.

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Zusammen,
Generell habe ich die Software mit dem Hintergrund entwickelt
meine Steuerungsprobleme zu lösen.
Wer C kann und das ist Vorausetzung hierfür, kann das Modul
nach seinen Wünschen anpassen. Open Source.

Aus dem Gedächtnis heraus werden Zählerstand und der Speicherinhalt
des emulierten EEProm in das richtige EEPROM geschrieben.

Derzeit arbeite ich an der Emulation eines DS2450, komme aber auch hier
Nur schleppten voran, da es keine genaue Dokumentation hierzu gibt.
Dies erfolgt alles im reverse engineering.

Beruflich bin ich zudem stark eingespannt und tippe das gerade
Im Hotelzimmer im Ausland in mein Handy.

Meist ist es ein Hardware Problem in Verbindung mit Software und kann
nur im Einzelfall geklärt werden.

Viele Grüsse
R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline Rudi352

  • New Member
  • *
  • Beiträge: 17
Hallo,

an dem DS2423-Emulator haben ja schon mehrere Leute mitentwickelt.
Meine C-Kenntnisse, und wahrscheinlich die von vielen anderen, sind nicht so umfangreich um die Programmierung bis ins Detail zu verstehen. Ich möchte aber auch nichts verändern oder anpassen. Ich möchte einfach nur verstehen, wie die Schaltung gedacht ist und funktionieren soll, damit man weiß, wo man mit der Fehlersuche beginnen soll.
Nach einer Funktionsbeschreibung wurde schon mehrfach gefragt. Das sollte doch kein Problem sein, anstatt immer neue Baustellen zu beginnen.

Vielleicht hat jemand das Modul erfolgreich im Einsatz und ist bereit über seine Erfahrungen zu berichten? Oder haben das alle nur gefrustet beiseitegelegt?

Vielen Dank

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo,

eine kurze Beschreibung. Genaue Informationen gibt das Datenblatt des verwendeten MC her.

- Der Goldcap soll die Spannung bei Spannungsverlust so weit erhalten, das der MC noch die Möglichkeit hat,
  seinen Programmcode sicher zu durchlaufen (Hier kann einem der Brown-Out Interrupt evtl. einen Strich durch
  die Rechnung machen.

- Über den Spannungspegel zwischen R1 und R2 soll ein Wechsel von High nach Low erkannt werden, welcher
  dann den entsprechenden Interrupt auslöst. (Level Definitionen High/Low nachlesen).
   Je nach Toleranzen der Widerstandkombination kann es zu falschen (zu früh) oder zu späten Interrupts kommen.
   Nach dem Schreiben des EEProms wird ein Software-Reset ausgelöst. Daher hängt er dann, da er von einem Spannungseinbruch ausgeht. Evtl. muss der Kondensator verringert werden.
BOR in den Fuse abschalten kann auch helfen.

Dieses Verhalten bezieht sich aber nur auf die von mir oben abgelegt Version.

Zitat
Das sollte doch kein Problem sein, anstatt immer neue Baustellen zu beginnen.
Doch, wie gesagt ich habe diesen Quellcode für Fachleute hier hinterlegt.
Den DS2450 entwickle ich derzeit für meine Hardware, da er in naher Zukunft nicht mehr zu bekommen ist
und eine entsprechende Firma, wo ich so ein Teil (für viel Geld bezahlt) gekauft habe und diese noch
schlechter funktionieren (auch über MC simuliert). Busstörungen bis zum Erbrechen.

But feel free to change the software and add any function you like or fix a bug if you found one.

Viele Grüße
R.




APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Zusammen,

anbei nochmals ein Statusbericht des DS2450.

Interface arbeitet jetzt im "Laborbetrieb" stabil. Messwerte werden entsprechend eingelesen und verarbeitet (ohne Busfehler bis jetzt, Stresstests kommen jetzt).
Wie sich der Chip im OWServer zeigt das beigezügte Bild.

Kalibieren ist jetzt das nächste Thema (Dynamisch wenn geht oder hardcodiert).

Viele Grüße

R.



« Letzte Änderung: 11 März 2017, 14:15:43 von ritchie »
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline Rudi352

  • New Member
  • *
  • Beiträge: 17
Hallo,

vielen Dank für die Ausführungen.

Sorry für meine Hartnäckigkeit, aber es ist immer die Rede vom Schreiben ins EEPROM beim Powerfail-Interrupt. Daher noch mal die Frage, was wird wo abgespeichert, speziell bei der DS2423-Emulation?

Danke für weitere Infos

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
#ifdef DS2423
#define PC_INT_ISR ISR(PCINT0_vect){/*ATT44 with 0 by PCINT*/\
uint8_t i;\
if (((PINA&(1<<PINA2))==0)&&((istat&(1<<PINA2))==(1<<PINA2))) { Counter[1]++; }\
if (((PINA&(1<<PINA1))==0)&&((istat&(1<<PINA1))==(1<<PINA1))) { Counter[0]++; }\
if (((PINA&(1<<PINA0))==0))\
{\
cli(); /* disable any other interrupt (INT0) !*/\
Counter[3]++;\
eeprom_update_byte((uint8_t *)0,0x0);/* clear magic number */ \
eeprom_update_dword((uint32_t *)1,Counter[0]);\
eeprom_update_dword((uint32_t *)5,Counter[1]);\
eeprom_update_dword((uint32_t *)10,Counter[2]);\
eeprom_update_dword((uint32_t *)15,Counter[3]);\
for(i=0;i<sizeof(MemoryPage14);i++)\
eeprom_update_byte((uint8_t *)(i+20),MemoryPage14[i]);\
for(i=0;i<sizeof(MemoryPage15);i++)\
eeprom_update_byte((uint8_t *)(i+60),MemoryPage15[i]);\
eeprom_update_byte((uint8_t *)0,0x55); /* Values are valid */\
software_reset();\
}\
istat=PINA;}


#define INIT_COUNTER_PINS /* Counter Interrupt */\
PCMSK0 |=  (1<<PCINT1)|(1<<PCINT2); /* Set Change PIN Interrupt */\
DDRA   &= (~(1<<PINA1) |~(1<<PINA2)); /* Set used port as Input */\
istat=PINA; /* Init the State buffer */
#endif

MemoryPage 14 + MemoryPage15 siehe Datenblatt.

Wenn man hier nicht erkennt, das es sich um die Zähler handelt.... (hmmm), besser Finger von lassen oder
ein bisschen einarbeiten. Irgendwo muss man sich da auch selber "durchfressen".

Viele Grüße
R.



APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline Rudi352

  • New Member
  • *
  • Beiträge: 17
Wie ich schon gesagt habe, sind meine C-Kenntnisse nicht so gut, um alles im Detail zu verstehen.

Da Du aber das Teil für Deine Anwendung erstellt hast, sollte es Dir doch möglich sein, mit ein paar Worten meine Frage zu beantworten?

Gut, die Zählerstände werden bei Powerfail in Memorypage 14 und 15 geschrieben. Dann passiert nichts mehr und das System wartet auf Reset. Richtig?
Und dann? Nach dem Reset steht in allen Memorypages 0

Ich habe viel herumprobiert, Widerstände geändert, separate Stromversorung, Powerfail manuell ausgelöst. Entweder alles 0 oder Absturz.

Wenn man nicht weiß, was die Software machen soll, ist das nur blindes herumstochern.

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo,

Die Counter werden nicht in MemoryPage14 und MemoryPage15 gespeichert, sondern im EEPROM. Die Speicherbänke 14 und 15 des DS2423 werden ebenfalls im EEPROM des MC gespeichert.

Verändere mal die Software in der Form, das ein Ausgang gesetzt wird, wenn die Informationen in das EEProm gespeichert werden.
Dann prüfe mal nach, ob der Ausgang gesetzt wird.
Hierzu müsstest Du den Software Reset durch eine While(1); ersetzen.

Viele Grüße
R.
 
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline Rudi352

  • New Member
  • *
  • Beiträge: 17
Ich will und kann die Software nicht ändern.
Ich gehe davon aus, dass das Powerfail-Feature in dem Modul überhaupt nicht nutzbar ist?

Offline habeIchVergessen

  • Full Member
  • ***
  • Beiträge: 360
OFFTOPIC: @locutus
ich habe die Platine ein wenig kompakter gestaltet.

Kannst du dir eine SMD-Version vorstellen (DS2423)? Was würde eine reine Layout-Erstellung an Arbeitsaufwand/Kosten verursachen? Möchte mich nicht selber am Layouten probieren und würde gerne eine Dienstleistung in Anspruch nehmen. Im Rahmen vom Bodenfeuchte-Sensor wurde ja "Ähnliches" realisiert.

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Zusammen,

erste Tests der DS2450 Simulation scheinen gut zu laufen. Im Fehlerspeicher des OW Servers sind nach 10 Minuten 0 Fehler vorhanden.
Lasse das ganze jetzt mal was laufen. Zum Vergleich, mein gekauftes Teil (DS2450 als Simulation) hatte 30% Fehlerrate. Bei einer von 1000 Lesungen 300 Fehler!,
weil ganze Registersätze nicht in der Simulation vorgesehen waren/sind. Ob das immer noch so ich weiss ich nicht.

Leider hat die Platine einen Hacken für Nachbauer. Ich habe nur SMD Bauteile verwendet und der ADS1115 ist sogar in der
Bauart "ULTRA-SMALL QFN PACKAGE", was nur unter Lupe zu löten ist.

Die Genauigkeit ist höher als bei der Verwendung des Analogeingangs des Microcontrollers. Ebenso ist die Wandelzeit schneller.

Im FHEM Bild (DS2450.PNG) kann man zwei DS2450 erkennen.
DS2450_82B214000000   -> ist ein Originalbaustein
DS2450_A30000000001   -> ist meine Softwarelösung.

Das Bild "DS2450_Platine" zeigt die Platine in einem Hutschienen-Gehäuse.

Derzeit suche ich noch eine Möglichkeit, um einen Nullpunktabgleich zu machen (Eingang auf GND gelegt.)
Diese Wert soll dann ins EEPROM geschrieben werden und nach dem Einschalten geladen werden.

Derzeitige Idee, setzten des "Power Flags" über die Weboberfläche des OWServers.

Edit:
Hier das Reading für die Temperaturen (setzt P1000 Wandler 0... 160 Grad -> 0-10V vorraus)
#
# Heizungskontrolle
#
# Heizungstemperaturen Ruecklauf Temperatur
define klHeizungRuecklaufTemperatur OWDevice 20.A30000000001 120
attr klHeizungRuecklaufTemperatur IODev myOWServer
attr klHeizungRuecklaufTemperatur alias Heizungskreislauf Rücklauftemperatur
attr klHeizungRuecklaufTemperatur event-on-update-reading temperature
attr klHeizungRuecklaufTemperatur group Temperaturen
attr klHeizungRuecklaufTemperatur model DS2450
attr klHeizungRuecklaufTemperatur room Heizung
attr klHeizungRuecklaufTemperatur stateFormat {sprintf("%.1f",ReadingsVal("klHeizungRuecklaufTemperatur","temperature",0))."°C"}
attr klHeizungRuecklaufTemperatur userReadings temperature {{32*ReadingsVal("klHeizungRuecklaufTemperatur","volt.A",0)}}

# Heizungstemperaturen Vorlauf Temperatur
define klHeizungVorlaufTemperatur OWDevice 20.A30000000001 120
attr klHeizungVorlaufTemperatur IODev myOWServer
attr klHeizungVorlaufTemperatur alias Heizungskreislauf Vorlauftemperatur
attr klHeizungVorlaufTemperatur event-on-update-reading temperature
attr klHeizungVorlaufTemperatur group Temperaturen
attr klHeizungVorlaufTemperatur model DS2450
attr klHeizungVorlaufTemperatur room Heizung
attr klHeizungVorlaufTemperatur stateFormat {sprintf("%.1f",ReadingsVal("klHeizungVorlaufTemperatur","temperature",0))."°C"}
attr klHeizungVorlaufTemperatur userReadings temperature {{32*ReadingsVal("klHeizungVorlaufTemperatur","volt.B",0)}}
Das Bild "Screen" zeigt die Darstellung auf dem Bildschirm.
Die Platine läuft jetzt in meinem Produktiv Aufbau. 24 Stunden ohne einen einzigen Fehler auf dem Bus.

Viele Grüße
R.


« Letzte Änderung: 19 März 2017, 11:18:18 von ritchie »
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline co010

  • New Member
  • *
  • Beiträge: 23
Hallo ritchie,

könnte ich schon so eine SMD-Platine für ein Hutschienen-Gehäuse fertig bekommen ?
oder eine nackte Platine mit Bestückungsplan ?


mfg Roberto

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Roberto,

derzeit bin ich nicht in der Lage, die Platine für andere fertigen zu lassen.
Das gibt meine restliche Freizeit nicht her.

Viele Grüße

R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

Offline co010

  • New Member
  • *
  • Beiträge: 23
Hallo ritchie,
Okay danke für die Info, soll es irgendwann mal Platinen dafür geben ?




mfg Roberto

Offline ritchie

  • Sr. Member
  • ****
  • Beiträge: 558
Hallo Roberto,

Derzeit entwickle ich nur für meine Zwecke.

Die Prototypen (5 Stück) haben 121.04 EUR gekostet !

Einige Teile meiner Arbeit stelle ich hier auch öffentlich (Software / Schaltplan). Platinen habe ich bis jetzt nicht angedacht
und da hier auch einige das Kommerziell nutzen (trotz GPL), will ich meine Layoutdatei nicht veröffentlichen.

Viele Grüße
R.
APU1.d4 Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv
Raspberry PI (1Wire - USB) - Testsystem

 

decade-submarginal