-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Stellung von 10 x 24 Ports speichern

  1. #1
    zwanzischmark
    Gast

    Stellung von 10 x 24 Ports speichern

    Anzeige

    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

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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

  3. #3
    zwanzischmark
    Gast
    nein, ich will einfach die stellung der digitalports speichern also ON oder OFF 0 oder 1 und das ganze möglichst einfach halt

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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

  5. #5
    zwanzischmark
    Gast
    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...

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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

  7. #7
    zwanzischmark
    Gast
    ja wie gesagt tabbellen kann man nur im im programm anlegen nicht während der laufzeit...

    trotzdem danke

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.11.2003
    Ort
    Leipzig
    Alter
    31
    Beiträge
    578
    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
    http://www.roboterbastler.de
    endlich wieder online

  9. #9
    zwanzischmark
    Gast
    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.

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.08.2004
    Ort
    Stuttgart
    Alter
    42
    Beiträge
    849
    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

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •