-
        
+ Antworten
Ergebnis 1 bis 10 von 10

Thema: BIT-Arrays bzw. Alternative

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    26
    Beiträge
    1.461

    BIT-Arrays bzw. Alternative

    Hi!!

    Ich habe eine Porterweiterung mit einem (bald mehreren) 74HC595.

    Und dass ich diese in der Software ergonomisch ansteuern kann,
    hätte ich gerne ein 2D BIT-Array. In ihm möchte ich
    in der 1. Dimension die je 8 bit eines 595 zusammenfassen, in der 2.
    die 8 Bit als je eine Bit-Variable.
    Aber das geht ja nicht.
    Bit-Array geht nicht und 2D schon gleich garnicht.

    Deshalb Suche ich eine halbwegs Platzsparende alternative,
    denn je 8 Byte-Variablen nur um 0 oder 1 zu speichern... naja.

    Gibt es da eine andere Möglcihkeit oder kann ich nur das RAM des
    Mega 16 vollmüllen??

    Vielen Dank schonmal für eure Hilfe!!

    Liebe Grüße,
    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  2. #2
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    Da keine zweidimensionen gehen kannst du auch einfach zwei eindimensionale Byte Array´s für deinen Zweck nutzen. Einzelne Bit´s lassen sich ja in Bascom recht bequem setzen/löschen.

    Variable.bit=1

    x.2=1 ' Setzt Bit 2 von Variable x auf 1

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.08.2004
    Beiträge
    159
    hab zwar noch kein Bascom programmiert, aber allgemein:
    nutze die 8 bits dafür....nimm (ideal) ne 16 bit zahl...das HighByte speichrt die 8 Bits vom 595, das low byte die bit variablen...

    platzsparender gehts nicht *g*, da du eben 16 bit in 16 bit speicherst...

    ob das in Bascom umzusetzen ist,w eiss ich nich, denke mal aber schon...

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    26
    Beiträge
    1.461
    HI!

    Danke für die Antworten!

    Frank's Methode finde ich am besten! Ich dachte mir schon, wenn man die Bits einer Byte-Variablen setzen könnte... habe aber nicht gewusst,
    wie das geht.
    So ist's halt mit dem KNOW HOW bzw. KNOFF HOFF

    So werd ich das auf jeden Fall machen!
    Ich werde immer das 8. Bit abfragen, und am Schluss alle Stellen einmal nach links rotieren.
    DANKE!!

    @eFFex: Deine Methode habe ich nicht ganz verstanden!
    Was willst du mit den unteren 8 Bit machen??

    Also VIELEN DANK nochmal an alle!!

    Viele liebe Grüße,
    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.08.2004
    Beiträge
    159
    in der 1. Dimension die je 8 bit eines 595 zusammenfassen
    (highByte)
    in der 2.
    die 8 Bit als je eine Bit-Variable
    (lowbyte)

    läuft im endeffekt auf das was Frank meinte hinaus nur, dass es statt
    zwei eindimensionale Byte Array´s
    ein eindimensionales 16Bit (2Byte) array ist...
    ich schätze mal aber ,dass sich die zwei bytearrays einfacher in Bascom umsetzen lassen

  6. #6
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    Er meint das Du ein Array als 16 Bit anlegen sollst. Das Low Byte wäre dann die eine Dimension und das High Byte die andere.
    Auch eine Möglichkeit. High Byte und Low Byte lassen sich in Bascom ebenfalls gut trennen (z.B. Befehl High). Also Ansichtssache wie du es machst.

    Bedenken solltest du jedoch das bei beiden genannten Methoden die Speicherersparnis gegenüber Byte-Array´s ein wenig durch die aufwendigere Abfrage (Codegenerierung) reduziert wird. Kann sogar sein das du im Endeffekt in deinem Fall dann mehr Programmspeicher belegst. Musst Du testen!

  7. #7
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.943
    Blog-Einträge
    1
    Uhi, ich war eine Minute zu spät mit meiner Antwort

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    26
    Beiträge
    1.461
    Hi

    Achso... Jetzt kapier ich das.
    Ja, dann hätte ich aber 1 x 16 Bit. Aber was wäre wenn ich 9 595 hätte?
    Dann würden ja die unteren 8 Bit nichtmehr zur speicherung der 8 Bit
    der 595er ausreichen!

    Ich werde das so machen:

    Byte Array, je nach dem, wieviele 595er angeschlossen sind.
    Und dann immer das höchste Bit des gerade aktuellen Chips (Bytevariable) lesen, dann rausschieben, um 1 nach links usw.

    Danke nochmal!!

    Viele liebe Grüße,
    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.08.2004
    Beiträge
    159
    *argsl*
    pro 595er eine 16bit zahl

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.08.2004
    Ort
    Potsdam
    Beiträge
    190
    Mal ne fragende Frage, die sich mir trotz ausführlicher Hilfelesung noch nicht beantwortet hat:
    Gibt es einen Befehl mit dem ich ganze Arrays auf 0 oder deren mögliches Maximum (&HFF...) setzen kann?!?!

+ Antworten

Berechtigungen

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