-
-
Stellung von 10 x 24 Ports speichern
Hallo,
ich habe folgendes Problem:
ich will 10 unterschiedliche einstellung von 24 Ports abspeichern können. Das beste und einfachste wär meiner ansicht wenn das mit dieser tabellenfunktion gehen würde, aber man kann die daten in den tabellen ja nicht ändern, deswegen Suche ich nach einer anderen Lösung. Wenn ich die einfache Dateifunktion benutzen würde müsste ich also 240 variablen einlesen und speichern was mir irgendwie zu unüberschaubar wird und wofür der speicher vielleicht nichtmal reicht. Ich hätte zumindest jede menge verschwendet, weil ich ja nur 0 oder 1 abspeichern will. Da ja Integerzahlen abgespeichert werden besteht jeder speicherplatz aus 2Byte also 16 Bit. Wenn ich also nur 16 ausgänge hätte könnte man das sicher irgendwie zu einem "binärcode" zusammenfassen und hätte für die 10 einstellungen nur "20" Byte verbraucht. Bei 24 Bits wird es aber dann schon wieder kompliziert weil ich für jede einstellung 2 Werte speichern muss. Also hat jemand ne idee wie es noch einfacher oder anders gehen könnte? wäre über jeden tipp dankbar. Das ich 10 Speicherplätze haben will war nur mal die erste idee. Mir würden auch 5 oder so reichen, aber ich denke darauf kommts dabei nicht mehr an...
Paul
-
Super-Moderator
Robotik Visionär
Hi, geht's da um 24 Ports a 8 Bit ?
dann brauchst du für 10 "Presets" wohl 10 * 24 Byte = 240.
Da kann man noch ein bißchen rumkomprimieren, aber im Prinzip isses so.
Benötige Bytes = Anzahl Presets * Anzahl Ports
mfg robert
-
nein, ich will einfach die stellung der digitalports speichern also ON oder OFF 0 oder 1 und das ganze möglichst einfach halt
-
Super-Moderator
Robotik Visionär
I see.
Naja, dann sinnes 10 * 24 Bit ---> 240 / 8 => 30 Byte, die du brauchst.
Jedes Preset braucht 24 Bit, da sin genau 3 Byte, ist ja praktisch.
Bei Presets# 0 - 9 / Ports 0 - 23
PresetEntry = tabaddresse + 3 * Preset#
Bits (ports) 0 - 7 <- Presetentry
Bits (ports) 8 - 15 <- Presetentry + 1
Bits (ports) 16 -23 <- Presetentry + 2
mfg robert
-
hilfe...
kannst du mir das nochmal genauer erklären ich versteh grad nur Bahnhof
vielleicht solte ich es nochmal genauer erklären, ich weiss nich so genau ob du mich richitg verstanden hast...
ich hab die C-control (M-unit 1) und mir ne tastatur angeschlossen worüber ich über die nummern die ports an und ausschalten kann
also ich geb ein 1 dann 0 dann # damit wäre port 10 an soweit alles fertig. jetzt nehmen wir an ich hab grad folgenden status:
1000 0000 0000 0000 0000 0001
also 1 ist an und 24 ist an und das möchte ich möglichst einfach mit dem dateifunktion kram
OPEN# FOR WRITE
#PRINT
....
umsetzen das ich auch nach abschalten der spannung auf die einstellungen zurückkreifen kann und da man tabellen wärend der laufzeit ja nicht speichern kann wusste ich keinen andern weg. Ich will aber nun nicht nur eine einstellung speichern sondern 5 oder 10 egal... die zahl kann ruhig fest sein
du meintest jetz vorgefertigte tabellen oder? aber ich will das ja wärend der laufzeit speicchern...
-
Super-Moderator
Robotik Visionär
Oh jemieh, bei C-Control kenn ich mich wenig aus.
Normalerweise müßte man die Tabelle in den EEPROM speichern und von dort wieder holen.
Aber wie gesagt, der passende Formalismus bei C-control is mir nicht vertraut, das tut mir leid.
Versuch doch mal "HELP" EEPROM ? mfg robert
-
ja wie gesagt tabbellen kann man nur im im programm anlegen nicht während der laufzeit...
trotzdem danke
-
Erfahrener Benutzer
Roboter-Spezialist
Dann speichere doch einfach im EEPROM.
Als File.
Der erste Wert ist Port 1 und so weiter.
Brauchst du ein Beispiel, oder bekommst dus auch so hin?
Die Dinge passen locker in den EEPROM, da habe ich schon ganz andere Dinge reingepackt.
Wie ich in einem anderen Thread schon geschrieben habe, sollte man allerdings nicht zu oft die ganzen Werte speichern (wegen den begrenzten Schreib/Lesezyklen).
MfG ACU
-
hab den treat gelesen und ist diese methode die die am meisten zyklen benötigt weil ich ja dann nicht immer nur ein Preset (wie PicNic das schön genannt hat) speichern muss sondern alle 10 oder kann man den Zeiger auch selbst setzen?
ist auch egal ich arbeite an einer lösung mit der ich für jedes Preset nur 2 speicherplätze benutze also entweder 2 x 12 bit oder 1 x 16 1x 8 das muss ich noch sehen wies einfacher is. Wenn einer nen guten quellcode dafür hat wär auch gut bei mir wirds wiede son wurscht kram
edit:
also ich hab schonmal herausgefunden das es für die normalen 16 Ports ja super easy ist. Man muss ja nur die ports als WORDPORT deklarieren und speichert einfach den WORDPORT also:
DEFINE ports WORDPORT
...
PRINT# ports
ClOSE#
...
das klappt schonmal perfekt. Mit Port 17-24 wirds wohl nicht so leicht gehn, weil die ja über den PCF8574 angesteuert werden, aber da ich den noch nich hab muss ich erstmal abwarten ob sich da dann auch sone simple lösung findet...
so long
edit2:
hab jetzt nochmal ein bisschen quellcode über den PCF8574 nachgelesen und herausgefunden das man den auch mit ner einfachen schleide auslesen kann und dann ne 8bit binärzahl hat die ich dann abspeichern kann. Also besteht jedes Preset aus einer 16bit und einer 8bit einheit die ich abspeichern kann.
Bleibt noch die frage ob ich den zeiger im eeprom selbst setzen kann (wenn ja wie?) oder ob ich immer alles überschreiben muss was bei dieser lösung auch nich so tragisch wäre.
-
Erfahrener Benutzer
Roboter Genie
Hallo zwanzischmark!
Wie schon die andern beiden das recht gut erklärt haben ist das mit dem Tabellen schreiben als File die optimalste Variante. Aber wenn du eh einen PCF8574 mit I2C vwerwendest kannst du auch gleich deinen Speicher damit aufrüsten. Es gibt einen 8-Füssler der I2C kann und auch 256 Bytes ablegen kann. Diese können sogar gepuffert werden mit einer Batterie. Das steht im Datenblatt. Der Baustein nennt sich PCF8570P und gibt es auch bei Reichelt zu kaufen. Das Datenblatt kannst du dir dort auch herunterladen. Hab mir das Teil auch mal bestellt gehabt zum herumprobieren und ist gar nicht so schlecht für eine C-Control.
Grüsse Wolfgang
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen