
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo Dieter, hier mal ein kompletter Bausatz mit Echtzeituhr und EEPROM-Sockel, falls du noch keine Uhrzeiteinstellung bei Stromausfall mit PCF o.ä. hast. http://cctools.hs-control.de/artikel/index.php?artikel=1084 Man kann natürlich auch den EEPROM allein verlöten, ist fast 0 Aufwand. Chip: AT24C512 (64kByte) http://cctools.hs-control.de/artikel/index.php?artikel=111x oder http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A32;GROUPID=2953;ARTICLE=45597;START=32;SORT=order_col_artnr_besch;OFFSET=16 Das sind sehr viele Werte die du speichern möchtest. Hier ist es also nicht möglich, zusätzlich zum Wert z.B. Tages/Uhrzeit-Infos mit abzuspeichern. Rechnen wir mal: alle 10min bedeutet 6 mal pro Stunde und 24 Stunden pro Tag: 6*24=144 Werte je Tag Ein Jahr würden 144*365Tage=52560 Werte ergeben, was theoretisch in das 64k EEPROM passt. Allerdings rechnet die C-Control ab 32768 negativ, was wohl trotzdem gehen soll, habe ich aber keine Erfahrung. Also gehen wir mal von 1/2 Jahr aus. Wir müssen uns also die Speicherstelle errechnen, z.B. vom Tag des Jahres + Wert des Tages. Du musst dann aber wissen für welches halbe Jahr die Werte gelten. Hast du die aktuelle C-Control-Firmware, dann kann man sehr gut die ChipRAM-Funktion zum EEPROM-Zugriff benutzen, der EEPROM muß dann auf Adresse 160 eingestellt sein. Wie sieht es mit den Programmierkenntissen auf der PC-Seite aus? Ich habe mein kleines Program in VisualBasic.NET geschrieben. Das Programm auf der PC-Seite muss natürlich die speziell gesendeten Daten verarbeiten können. Hier ein paar Codeschnipsel zur Ansicht, hier ist nix getestet, nur mal so aufgeschrieben ohne Garantien: sub TagdesJahres ' Code von malo-web define TagNr as word TagNr = (month - 1) * 31 + day ' je nach Monat wird korrigiert if month > 2 then TagNr = TagNr - 3 if month > 2 AND year MOD 4 = 0 then inc(TagNr) ' Schaltjahr 29.2. if month > 4 then dec(TagNr) if month > 6 then dec(TagNr) if month > 9 then dec(TagNr) if month > 11 then dec(TagNr) return TagNr end sub ' Speicherstelle errechnen sub Speicherstelle define w as word ' 1.Halbjahr w=TagdesJahres ' 2.Halbjahr wieder bei Speicherstelle 0 anfangen if w>183 then w=w-183 dec(w) w=w*144+WertdesTages return w end sub ' eines der 144 Stellen je Tag berechnen z.B. 12Uhr (12*60+0)/10=72 (die hälfte von 144 ;-) sub WertdesTages return (hour*60+minute)/10 end sub 'Wert ins EEPROM speichern ChipRam(Speicherstelle)=WindWert ' alle Werte auf COM ausgeben sub AusgabeWerte define i as integer define j as integer lcd.off baud R38400 for i=0 to 182 ' 183 Tage for j=0 to 144 ' 144 WerteJeTag in einer Zeile print chipram(i*144+j) & " "; next print "" ' neue Zeile next Baud R9600 end sub Naja, ich hoffe es hilft dir schon mal Gruß Jörg > Hallo Jörg, > > es soll die Windgeschwindigkeit, alle 10 Minuten gespeichert werden. > Von 0,00 m/s, bis 25,5m/s, das bedeutet, dass Byte von 0 bis max. 255 (=25,5m/s) gespeichert werden sollen. Die Aufzeichnungszeit soll möglichst Lange sein z. B. 2 bis 6 Monate. > > Mit I2C-Bus habe ich Erfahrung bei anderen Projekten. > > Fragen: > Welches I2C-EEPROM kannst du empfehlen (Typ-Nr.)? > Keines Beispielprogramm zum Schreiben in den Speicher ist nicht schlecht. > Keines Beispiel zum Lesen der Daten könnte ich auch brauchen. > > Gruß Dieter > > PS > Das Anschließen des PCs an das c-control ist OK. > > > |
| Antwort schreiben |