Flera sidor minne med picbasic

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
ristomemo
Inlägg: 1028
Blev medlem: 29 mars 2004, 14:12:18

Flera sidor minne med picbasic

Inlägg av ristomemo »

Har försökt förstå mig på BRANCHL i PicBasic. Har förstått att det är det man ska använda om man vill nyttja mer än en sida av minnet. Pic16F628 ska ju ha 14*2048 byte. Får det inte att fungera, någon som har något tips, eller kan länka till ett bra exempel som ni gärna själva har testat. Det som finns i manualen får jag inte att fungera, går inte att compilera utan fel.





Urklipp ur manualen:
Syntax
BRANCHL Index, [Label1 {,...Labeln }]

Overview
Cause the program to jump to different locations based on a variable index. On a PIC device with more than one page of memory.

Operators
Index is a constant, variable, or expression, that specifies the address to branch to.
Label1,...Labeln are valid labels that specify where to branch to.

Example

DEVICE 16F84
DIM INDEX as BYTE
Start: INDEX = 2 ' Assign INDEX a value of 2
BRANCHL INDEX,[Lab_0, Lab_1, Lab_2] ' Jump to label 2 (Lab_2) because INDEX = 2
Lab_0: INDEX = 2 ' INDEX now equals 2
GOTO Start
Lab_1: INDEX = 0 ' INDEX now equals 0
GOTO Start
Lab_2: INDEX = 1 ' INDEX now equals 1
GOTO Start

The above example we first assign the index variable a value of 2, then we define our labels. Since the first position is considered 0 and the variable index equals 2 the BRANCHL command will cause the program to jump to the third label in the brackets [Lab_2].

Notes
The BRANCHL command is mainly for use with PICmicro devices that have more than one page of memory (greater than 2048). It may also be used on any PIC device, but does produce code that is larger than BRANCH.
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Jag använder den i ett större program till en PIC16F877A, funkar utan problem där.

Säker på att du behöver Branchl, så att det inte räcker med vanliga branch?

Vad får du för fel när du kompilerar exempelkoden då?
ristomemo
Inlägg: 1028
Blev medlem: 29 mars 2004, 14:12:18

Inlägg av ristomemo »

Så här ser felmeddelandet ut.
Argument out of range (2048 not between 0 and 2047)

Vilket jag hade innan jag labbat med branchl. Jag hade räknat med att det skulle försvinna med branchl
ristomemo
Inlägg: 1028
Blev medlem: 29 mars 2004, 14:12:18

Inlägg av ristomemo »

Nu har jag återupptagit mitt sovande projekt. Har gjort klart hårdvaran och har den viktiga delen av mjukvaran snurrande. Kanske ska berätta vad projektet är, alltid roligare att hjälpa till då. Det ska bli en fläktstyrning till en matkällare, eller så kan man kalla det för miljövänligare kylaggregat. Tanken är att en fläkt ska suga in kall luft till matkällaren vid behov när utomhustempen är tillräckligt låg.

Det är mitt första PIC projekt, jag använder mig av en PIC16F628 som jag kör med PICBASIC Plus http://www.crownhill.co.uk/product.php? ... 71007ca673
Tyvärr är det en "fulversion". Kanske inte bästa valet, men nu är det så.

Mitt problem är att jag vill få in mer "lull lull", vilket betyder att jag har passerat första sidan minne på 2048 tecken.

Har läst o googlat om branch/branchl som jag förstått att man måste använda, men får det inte att fungera. Compileringen klagar fortfarande på att jag passerat 2047 tecken.

Har någon nått tips, eller en bra exempelkod att visa?
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

F628 har väl 2048 word minne, så mer får du inte in hur du än gör.

Ska du ha in mer kod får du nog försöka optimera koden lite, byta språk eller byta PIC...
ristomemo
Inlägg: 1028
Blev medlem: 29 mars 2004, 14:12:18

Inlägg av ristomemo »

I databladet står det 2048x14, Vilket jag tolkade som 14 "sidor" a 2048 . Verkar som jag slarvat med läsningen.

http://www.elfa.se/pdf/73/731/07319783.pdf
Senast redigerad av ristomemo 3 maj 2005, 00:07:51, redigerad totalt 1 gång.
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

det är 14 bitar bred buss för instruktionerna. i de 14 bitarna ingår operationskod + eventuell data och adresser.

rätta mig om jag har fel

/Johan
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Precis det är 14 x 2048 bitar minne, och varje instruktion tar upp 14 bitar.
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 »

Men det är bara att byta till en 876a ist. Så har du 4 gånger så mycket minne att leka med och lite fler ben att sätta skojiga saker på...
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Eller någon PIC18 med mycket minne, så slipper du förmodligen tänka på "pages" (om picbasic stöder PIC18, är inte så insatt).

Eller 16F648 så har du en som är precis kompatibel med 628 fast dubbelt så mycket program-minne.
ristomemo
Inlägg: 1028
Blev medlem: 29 mars 2004, 14:12:18

Inlägg av ristomemo »

Tackar för hjälpen. Så det kan gå när man inte är uppmärksam från början. Jag tror dock att jag ska kunna slimma koden rätt ordentligt, råkade visst använda 2 st float variabler i början av kodandet. Var snabbast att få till de formlerjag önskade på det viset. Men det äter minne på så vis, ska koda lite smartare. Annars var Cyrs förslag inte så dumt. Har gjort all hårdvara klar, etsat kort o monterat så byta till någon annan större PIC orkar jag inte. Då lever jag nog utan "lull lull" istället, och börjar på nästa projekt.
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 »

*ler* oki, du var så långt kommen. DÅ vill man självklart ha något som har pinnarna där du hade tänkt dig! ;)
Skriv svar