Hallo in die Runde!
Habe folgendes Problem: Seit ein paar Jahren betreibe ich einen Temperatur-Datenlogger im Dauerbetrieb. Er ist wie folgt konstruiert:
Przessor ATMega 168 bisher 88 programmiert in Bascom
am UART B.0/B.1 ist ein USB Interface STI100 von ELV angeschlossen
die Temperaturfühler DS1820 am 1Wire D.7
eine RTC DS1307 am I2C D.5/D.6
Das hat bisher ganz gut funktioniert. Alle 10 Minuten wurde an eine CSV-Datei auf dem Stick ein Datensatz mit Wochentag,Datum, Uhrzeit, 6 Temperaturen, und noch 5 Bits vom C-Port (nicht verwendet) angehängt. Weiter wird alle volle Std. eine weitere Datei mit gleichen Daten geschrieben. Nun habe ich dies mit zwei weiteren Eingängen erweitert. Ich habe inzwischen eine Wasseruhr, die im Solarkreis hängt, mit Sensor versehen.http://www.elektor.de/forum/foren-ubersicht/elektor-foren-der-treffpunkt-fur-elektroniker/elektor-mikrocontroller-forum/warmemenge.2478524.lynkx So erfolgt alle halbe Liter ein Impuls. Dieser wird auf D.2 (Int0) geschaltet und löst dort einen Interrupt aus. Am D.3 (Int1) ist eine Z-Dioden-Logik angeschlossen, die eine Netzausfall erkennen soll, um die aufsummierten Daten zu retten.
Ist der Sensor an D.2 angeschlossen, hängt sich im Laufe des Tages das Ding auf. Als Datum wird dann 85:85 Uhrzeit @1.@1 oder ähnliches angezeigt. Ein Schreiben in den Uhrenbaustein erfolgt zu dieser Zeit nicht. Die ISR habe ich bis auf das manipulieren von 2 Bit-Variablen gekürzt:
******************** Int0 *********************
'Wasseruhr hat halben Liter gemessen
Zaehlen_isr:
Toggle Halbliter '0 oder 1
Literbit = 1 'berechnen in Main
Return
'**********************************************
Selbst auslesen der Uhr mache ich jetzt bei abgeschltetem Interrupt und speichere Zeit und Datum in Zwischenvariablen:
'**********************************************
Disable Int0 'IRQ aus
Zeit = Time$ 'Zeit und Datum in
Heute = Date$ 'Zwischenvariable
Enable Int0 'IRQ ein
'**********************************************
Das Aufsummieren der Liter und das Berechnen der KWh ist inwischen in der MAIN.
Was erzeuge ich da für einen Konflikt? Klemme ich den Sensor ab scheint es zu laufen.
Was mache ich falsch?? Wer hat einen Tipp?
Gruß
KHZ'
