-
-
Erfahrener Benutzer
Roboter Genie
Also mit ner Lookup-Table macht man ja nichts anderes, als einen Wert einem anderen zuzuordnen. Die Tabelle geht dabei von x=1 bis n und du bekommst jeweils ein y(x) zurück. Ist also einfach nur eine Tabelle mit 2 Spalten.
Wie man sowas macht: Es gibt da verschiedene Möglichkeiten. Du kannst ne Lookup-Table in den RAM Schreiben, was den Vorteil hat, dass du die Tabelle einfach verändern und mit nem Pointer (INDF) abfragen kannst. Leider verbraucht das ne Menge Platz, weil du freie Zellen im RAM brauchst UND die Initialisierungswerte auch erstmal da reinschreiben musst, also Zusatzverbrauch von Programm-Memory. Möglichkeit 2 wäre die, die Tabelle im EEPROM abzulegen, und mit nem Unterprogramm auszulesen. Vorteil ist klar, du hast ne initialisierte Tabelle, verbrauchst kaum Programm-Memory und auch keine RAM-Zellen. Nur wenn das EEPROM anderweitig belegt wird, oder die Tabelle groß ist, sollte man an ne andere Variante denken.
Und die wohl einfachste: Möglichkeit 3: Du legst die Bytes im Programmspeicher als RETLW Befehle ab. Eine Anleitung dazu gibts bei Sprut.de ->
Segmente:
addwf PCL, f
retlw B'00011000' ; 0
retlw B'11011110' ; 1
retlw B'00110010' ; 2
retlw B'01010010' ; 3
retlw B'11010100' ; 4
retlw B'01010001' ; 5
retlw B'00010001' ; 6
retlw B'11011010' ; 7
retlw B'00010000' ; 8
retlw B'01010000' ; 9
Aufrufen tust du das mit movfw (lade den Wert X) Call Segmente.
Er kommt dann mit einem Wert in W zurück, der der Zuordnung von X entspricht.
Vorteil: Einfach, keine RAM-Zellen werden verschwendet.
Nachteil: PIC16er legen wegen ihrer internen 14bit Befehlsbreite solche Bytes unvorteilhaft ab. Man verschenkt einiges an Platz, aber meist ist der Programmspeicher größer als das EEPROM, also halb so schlimm. Wichtig ist noch, dass ein Problem auftauchen kann, wenn der ProgrammCounter, den du direkt manipulierst, an ner ungünstigen Stelle liegt. Siehe hier http://www.sprut.de/electronic/pic/f....html#tabellen
Es kann dann passieren, dass der Verweiß auf ne völlig falsche Stelle passiert ->Crash. Ist mir aber noch nie passiert.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen