Alternative zum DS2423 Counter

Begonnen von dougie, 09 Februar 2013, 16:30:08

Vorheriges Thema - Nächstes Thema

doubh

hallo zusammen.

ich habe eine bug in der firmware entdeckt (und gefixt), der dazu geführt hat, dass manche flanken am eingang nicht gezählt wurden.
der fehler tritt auf, wenn 1-wire kommunikation stattfindet und in diesem moment eine flanke am eingang ansteht.

der fehler liegt im marco EN_OWINT(), dass in der ISR PIN_INT() aufgerufen wird.
1) PIN_INT (_VECTOR(1)) hat die höchste prio der aktiven IRQ
2) wenn der change interrupt PCINT0_vect auftritt, während gerade PIN_INT ausgeführt wird, ist das interrupt flag PCIF0 gesetzt
3) wird nun EN_OWINT() ausgeführt, wird mit dieser instruktion GIFR|=(1<<INTF0) das PCIF0 flag gelöscht und der pin change IRQ ist verloren
4) IRQ verloren -> flanke verloren -> counter falsch


fix:
zum löschen von INTF0 nur das entsprechende bit setzen (siehe datenblatt)
zudem sollte das flag vor dem einschalten des interrupts gelöscht werden und nicht danach:
#define EN_OWINT()               {GIFR=(1<<INTF0);GIMSK|=(1<<INT0);}          // enable interrupt



des weiteren würde ich generell nested interrupts vermeiden und entsprechend zu beginn jeder ISR cli() und am ende sei() aufrufen.
es kann z.b. auch ein problem geben, wenn in der timer ISR counterpack.counter = Counter[0]; ausgeführt wird und im selben moment der pin change interrupt auftritt.
da die 16-bit counter zuweisung nicht atomar abläuft, kann sie unterbrochen werden. ist bereits ein byte zugewiesen und beim inkrementieren des counters in der pin change ISR gibt es einen byte überlauf, stimmt die zuweisung nicht mehr.
bsp:
- Counter[0] ist gerade 0x00FF
- erstes byte in timer ISR ist zugewiesen, z.B. high-byte 0x00
- in diesem moment steht eine flanke an und der pin change ISR unterbricht die timer ISR (wg höherer prio)
- Counter[0] wird 0x0100
- timer ISR läuft weiter und weist das zweite byte zu, das low-byte ist aber nun 0x00
--> ergebnis in counterpack.counter: 0x0000

--> daher ist es sicherer hier keine nested interrupts zu verwenden.


gruß,
doubh

g.finder

Ist der Quellcode zum Tiny mit SRF02 irgendwo zu finden?

Gruß, Gerd

Raven

Cubietruck-Prod: HM-LAN, Heizung, Rolläden, Schalter, Viessmann (optolink)
Cubietruck-DEV:
Fritzbox 7490

g.finder


pcjogi

Hallo zusammen,

ich bräuchte für meine Gaszähler noch einen DS2423 Counter Ersatz. Baut hier noch jemand einen (bzw. ich würde 2 nehmen).

Ich habe werde ausreichende Lötkenntnisse geschweige denn kann ich Leiterplatinen etc. fertigen (lassen). Alles kann man lerne, aber ich muss nicht alles können, wenn das jemand besser kann.

Vielen Dank

Jürgen
Zentral-Fhem , Mehrere Sub-Fhem (433Mhz und 833Mhz; Alexa-Steuerung; Heizungssteuerung; Sicherheitsfunktionen; Energiesteuerung); IoBroker zur Darstellung (alles als Container auf Proxmox), untereinander verbunden über einen MQTT Broker, insgesamt über 200 Sensoren/Aktoren.

gelbwichtel

Hi,
ich denke ich fange hier mal an zu fragen, obwohl sich in diesem Thread ja schon lange nichts mehr bewegt hat.
Hat jemand dieses Interface mal versucht mit EspEasy zu koppeln und kann vielleicht posten wie es zu definieren ist ?

Danke vorab
cu
gelbwichtel

Tweak

Hallo,
wollte mich erkundigen ob vielleicht jemand noch eine Platine für den Counter über hat. Bzw ob Dougie noch welche produzieren lässt?

Danke!
Lg

AndiL

Hallo,
Schau mal hier:
https://www.tm3d.de/shop/kategorien/bausaetze
Am Seitenende ist ein DS2423 1-​Wire-​Simulator mit vier Zählern.
Werkelt bei mir schon seit längerem tadellos.....

Gruß
Andi
FHEM 5.8 auf RasPi 3
***********************************
FB 7390, FS20, HM mit USB-CFG, 1-wire (DS1820 und DS2408), Buderus KM200 mit GB 152, Phillips HUE und Bastelkram....

ChrisKoh

Zitat von: AndiL am 28 September 2017, 12:05:11
Hallo,
Schau mal hier:
https://www.tm3d.de/shop/kategorien/bausaetze
Am Seitenende ist ein DS2423 1-​Wire-​Simulator mit vier Zählern.
Werkelt bei mir schon seit längerem tadellos.....

Gruß
Andi

Den habe ich seit heute bei mir auf dem Tisch liegen. Leider habe ich ihn noch nicht zum laufen gebracht.
Wie hast du den angeschlossenen?
Ich möchte damit die Zisternen Messung per Ultraschall machen.
ODROID H2 + Docker: Portainer; FHEM; HomeBridge; Node-RED; Nextcloud; PiHole; MQTT.
FS20; HM; ZigBee; Z-Wave

Franz Tenbrock

Hallo
ich hatte den Counter von Dougie 2 Jahre im Einsatz, durch die Feuchte im Dom ist allerdings das Teil nun defekt, schade.
Problem ist sicher auch der US Kopf, ein feuchteunempfindliches Teil wie bei einem Auto wäre da sicher besser geeignet. Bin aber nicht in der Lage das zu implementieren.
Damals hatte ich ja einen Wiki Beitrag verfasst...
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

wfelkel

Hallo,
Ich habe auch Interesse an mehreren Platinen mit Prog Tiny's
Bitte Nachricht bezüglich Bestellablauf und Preis
Grüße
Wolfgang

abc2006

da schließ ich mich an :-)

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Kruemel

Zitat von: AndiL am 28 September 2017, 12:05:11
Hallo,
Schau mal hier:
https://www.tm3d.de/shop/kategorien/bausaetze
Am Seitenende ist ein DS2423 1-​Wire-​Simulator mit vier Zählern.
Werkelt bei mir schon seit längerem tadellos.....

Gruß
Andi
RPi, Homematik, LAN-CFG, Bewegungsmelder, Rauchmelder, Rolläden, Schalter, Türkontakte, Heizungsventile, FB7390, Owncloud, xBMC

Kruemel

Zitat von: AndiL am 28 September 2017, 12:05:11
Hallo,
Schau mal hier:
https://www.tm3d.de/shop/kategorien/bausaetze
Am Seitenende ist ein DS2423 1-​Wire-​Simulator mit vier Zählern.
Werkelt bei mir schon seit längerem tadellos.....

Gruß
Andi

Guten Tag,
ich möchte meine Zisterne mit einem Ultraschallsensor auswerten. Kann man diese DS2423-Simulation hierzu verwenden?
Verhält sie sich an FHEM wie das Original?
Gruß
Wolfgang
RPi, Homematik, LAN-CFG, Bewegungsmelder, Rauchmelder, Rolläden, Schalter, Türkontakte, Heizungsventile, FB7390, Owncloud, xBMC

Tobias

Ultraschall Sensor klappt damit nicht.
Dieser funktioniert aber perfekt mit einem esp und espeasy, alles ganz ohne programmieren :)
Läuft bei mir 1a

Gesendet von meinem Leap mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter