Archiv verlassen und diese Seite im Standarddesign anzeigen : Datalogger, Ereignis erwischen
Hallo,
mein Datalogger besteht u. a. aus einem EEPROM und einer RTC PCF8583.
Mit meinem Datalogger messe ich mehrere Temperaturen usw. in dem ständig in einem Loop die Ports abgefragt werden. Die Zykluszeit beträgt mehr als eine Sekunde. Daten möchte ich alle 15 min. abspeichern. Also Minuten 0, 15, 30, 45 und jeweils Sekunden = 0. Nun ist aber meine Zykluszeit größer 1 Sekunde, sodaß ich nicht immer das Ereignis bei 0 Sekunden treffe. Was kann ich machen, damit ich immer wenn das Minutenereignis eintrifft auch die Sekunden bei 0 zum Schreiben erwische? Interrupts? Ich weiß bloß nicht, wie das genau geht oder Signal vom RTC mit zus. Eingang? Achso mein PIC ist ein 16F876.
Danke für jeden Tipp
LazyBee
hallo
wenn es das Auslesen von deinem Temperatursensor nicht stört würde
ich mit einem interrupt arbeiten.
dazu müsstest du eigentlich hier im Vorum unter Suchen einiges finden.
kalledom
22.05.2006, 22:46
Hallo LazyBee,
Du kannst einen Timer auf 1 ms initialisieren und den Timer-Interrupt enablen. In der Interrupt-Routine kannst Du dann weitere Zähler setzen:
10ms - 100ms - 1s - 60s - .....
Ein Beispiel dazu findest Du unter: http://www.domnick-elektronik.de/picasm.htm
Hallo Kalledom,
Du kannst einen Timer auf 1 ms initialisieren und den Timer-Interrupt enablen. In der Interrupt-Routine kannst Du dann weitere Zähler setzen:
10ms - 100ms - 1s - 60s - .....
Das geht nur bedingt, da ich ja die Uhrzeit auch abspeichern will und da sollte dann im Speicher auch z, B. 21:15:00, 21:30:00 usw. stehen (natürlich ohne ":"). Der Timer wird ja nicht synchton mit der RTC laufen oder doch?
mfg.
LazyBee
the_Ghost666
31.05.2006, 16:53
mh wieviele und was für sensoren hast du denn? und hat die RTC vielleicht eine Alarmfunktion? wenn ja, könntest du die RTC auf dieses Zeitfenster stellen und dann den Alarm abwarten. der würde nen interrupt aktivieren.
aber ich versteh nicht ganz, wie du das mit dem loop meinst.
Du fragst die Sensoren einmal in 15min ab? oder fragst du sie ständig ab, speicherst die messwerte aber nur alle 15min?
Hallo the_Ghost666,
ich habe das Problemchen folgendermaßen gelöst:
Ich habe eine Schelife gebildet, die die nur den RTC abfragt. Alle 10 Sekunden wird dann in die Meßwerterfassung gesprungen, die dann etwas mehr als 2 Sekunden dauert. Danach werden die Werte auf dem Display aktualisiert. Reicht für meine Belange.
Die RTC hat eine Alarmfunktion. Ich habe mich damit allerdings noch nicht im Detail beschäftigt.
Trotzdem danke für das Interesse.
LazyBee
kalledom
31.05.2006, 17:40
Hallo LazyBee,
Du kannst mit dem Timer bzw. den Zähl-Variablen bis 60 Sekunden zählen und liest dann die Uhrzeit aus der RTC. Dann setzt Du alle Zeit-Zähler wieder auf 0 und wartest wieder auf die nächste 60.
Du kannst auch bis 59 Sekunden zählen, liest dann in Intervallen die RTC ein, bis ein Wechsel zur nächsten Minute erfolgt (die letzte Minuten-Zahl mußt Du natürlich immer speichern). Dann bist Du ziemlich synchron zur Uhr.
Wenn die RTC Sekunden hat, kannst Du immer auf die nächsten 00 Sekunden warten und setzt dann alle Zeit-Variablen auf Null.
the_Ghost666
31.05.2006, 20:07
noch eine frage nebenbei, was sind das für sensoren und wie viele, dass du zum erfassen mehr als 2 sekunden brauchst? für geringen stromverbrauch kannst du auch den PIC schlafen legen und erst am messzeitpunkt anfangen zu messen, indem dich der interrupt des Watchdog , eines Timers oder der RTC aus dem schlaf reißt. Und ist es denn so wichtig, dass du immer zur "nullsekunde"misst? Ich meine nur, dass es doch auch ok sein sollte, wenn du zu irgendeinem zeitpunkt misst, solange die intervalle dazwischen gleich sind. Dann ist dein erster zeitpunkt hatl nicht 0,0 sondern 0,2. Aber bei der auswertung könnte man einfach sein "koordinatensystem" passend legen, alles ist relativ
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.