Något smart sätt att göra lookupptables i PIC?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Något smart sätt att göra lookupptables i PIC?

Inlägg av bengt-re »

Finns det något klyfigare sätt att göra lookuptables än att göra som man brukar med RETLW xx? Typ:

SENSORCAL ADDWF PCL
RETLW 0X00
RETLW 0x02
RETLW 0x04
RETLW 0x07
RETLW 0x1A

Metoden är skapligt snabb och fungerar bra upp till 255 poster, men det tråkiga är att om man har externt genererat data som skall in i tabellen så är det lite småtrist att knacka in alla posterna manuellt. Det går ju, men är inte så roligt. Och i de fall man har längre tabeller typ ett par tusen rader så måste man nästla tabellen, inte så svårt egentligen, men blir ännu stökigare att lägga in manuellt eftersom det dels är en satans massa att skriva och blir lite oöverskådligt att behöva välja 256-postsstycken.

Är det någon som har en enklare metod att få in datat ( som från början ligger i Mathcad eller excell) till MPASM än att knacka om det manuellt?
Användarvisningsbild
Icecap
Inlägg: 26737
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Att göra en stor tabell (>256 bytes) i en PIC är inget speciellt svårt, att föra över datan däremot är lite knepigare. Jag brukar spara Excel-filen som tabbat text och sedan, med min "Multi Edit" (som kan markera kolumner) kopiera o klistra.
sodjan
EF Sponsor
Inlägg: 43267
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

PIC16/PIC18 ???

Sen är det inte så svårt att fixa ett program/script/whatever som
läser en fil med rå-data och skapar en INC fil med ASM, som sedan
inkluderas i applikationen.

Jag har inte kollat, men det skulle förvåna mig om det inte finns
åtminstånde någon länk på www.piclist.com .

EDIT: Kollade lite, och det finns t.ex ett Windows program som som
läser en WAV fil och genererar ASM instruktioner för att lagra "ljudet"
i programminnet. Kasnke inte helt vad du behövde...
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Aha, tackar! - nja det är linjärisering av en givare som skall tankas över, men principen är den samma. Klyfigt att köra med en INC-fil så behöver man inte ändra programmet utan bara inc-filen. Enkelt, men har inte tänkt på att det - givetvis är så man skall göra!

Det är ögonen man blir blind på och skallen man blir korkad i ;)

EDIT: 16F, har aldrig ägt en 18F ens, känns som man borde orka läsa sig in på dem då de verkar ha en del listiga vidareutvecklingar.
sodjan
EF Sponsor
Inlägg: 43267
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK, linjarisering...

Här är ett exempel som heter "Compressing large tables with linear interpolation" :
http://www.piclist.com/techref/microchi ... lation.htm
Tanken är att inte lagra alla värden, utan bara en del och sedan interpolera fram mellanvärderna.

Annars har både http://www.piclist.com/techref/microchip/tables.htm
och http://www.piclist.com/techref/microchip/bigtable.htm
en hel del kod och diskussioner kring tabeller...
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Tackar för hjälpen, nyttigt ibland att få lite nya uppslag så att man inte snöar in på sina gamla idéer.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Ett annat alternativ är att skriva ett litet program på PC som gör om tabellvärdena till motsvarande hexkoder för "retlw"-instruktioner. Sedan genererar det tabellen som en IntelHEX-fil som läggs in på en fördefinierad adress i PIC:ens flashminne.

Allt beror på hur ofta man skall ändra på sakerna. Är det en lineariseringstabell så skall det ju inte ändras så ofta så då funkar en inkluderingsfil säkert alldeles utmärkt. I andra sammanhang där man kanske vill ändra oftare eller mellan olika exemplar så kan denna varianten vara enklare eftersom mam inte behöver assemblera och länka om koden varje gång.
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Sant, ännu en bra metod. Iofs ändras värderna för varje sensor så det blir ett egen kompilering för varje sensorexemplar, men som det är nu är det väldigt få exemplar som skall göras vilket gör att lite handpåläggning inte är någon katastrof. men bra att ha flera metoder eftersom man aldrig vet när man får fler tabeller !
Användarvisningsbild
Henrik
Inlägg: 661
Blev medlem: 26 maj 2003, 23:39:14
Ort: Göteborg
Kontakt:

Inlägg av Henrik »

Du kan prova med CC5X, lägg in tabellen som en konstant och se hur det blir efter kompilering. Inte en aning hur den jobbar men smart är den.
Skriv svar