Sida 2 av 2
Postat: 13 november 2008, 16:14:35
av AndersG
Hantering, OK, semantik
Nu så är det inte just *därför* som det är så, utan för att adressbitarna
i instruktionerna (t.ex GOTO pch CALL) inte räcker till...
Givetvis, vad jag menade var att PIC har separata metoder att välja page/bank för program och data eftersom program och dataminnen är separata. Detta till skillnad mot tex en z80 med bankat minne där samma metod att byta banker används för både program och data.
Postat: 13 november 2008, 16:17:15
av sodjan
> Hantering, OK, semantik
Japp. för den som inte har koll (typ nybörjare) så är det viktigt att
använda rätt begrepp och namn på saker och ting, annars blir
det lätt väldigt förvillande.

Postat: 13 november 2008, 16:32:59
av AndersG
Jo, du har alldeles rätt. Bara för att jag förstår vad jag menar, behöver det inte betyda att andra gör det
Lyckades nyss passera 2k i min 16f690-kod och kunde inte begripa (först) varför inget fungerade längre
Fanns en del tips och trix här:
http://www.piclist.com/techref/microchip/pages.htm
(Jag vet att du vet, men jag skriver för eventuella "lurkers")
Postat: 14 november 2008, 08:28:32
av Nerre
Banker och paging används ju av helt olika anledningar.
Paging används när instruktionslängden inte tillåter att man anger en komplett adress för hopp och kan ju ses som en "variant" av relativa hopp. Ett vanligt relativt hopp hoppar ju relativt aktuell position, ett pagat hopp hoppar relativt aktuell page-bas kan man säga.
Postat: 14 november 2008, 09:06:09
av AndersG
Paging används när instruktionslängden inte tillåter att man anger en komplett adress för hopp och kan ju ses som en "variant" av relativa hopp. Ett vanligt relativt hopp hoppar ju relativt aktuell position, ett pagat hopp hoppar relativt aktuell page-bas kan man säga.
Då tycker jag att Sodjans förklaring är den redigaste, dvs "bitarna räcker inte till"
Korta och långa hopp är eg ngt annat. Åtminstone i x86 världen har korta och långa hopp olika instruktioner i CPUn. I en PIC är det samma kod för båda och var man hamnar bestäms av ett annat register som håller de sista bitarna.
Det är inte speciellt elegant, varken i PIC eller x86, men antagligen priset man får betala för bakåtkompatibilitet.
Edit:
en del av förvillelsen kan bottna i att samma ord används för litet olika saker. Dvs att "banking" och "paging" eg är samma sak (samma typ av mekanism) på en PIC:
The "bank select" needed for accessing some file registers fr.htm is conceptually similar to the "page select" needed to access some subroutines.
medan:
Bank switching (also known as "paging", but only loosely related to the ordinary meaning of "paging" in computing)
I min värld har dock alltid "bank switching" varit ngt man gör själv, medan "paging" sker mer eller mindre automagiskt, typ "virtuellt minne"
Postat: 14 november 2008, 10:39:33
av Nerre
AndersG skrev:
Då tycker jag att Sodjans förklaring är den redigaste, dvs "bitarna räcker inte till"
Vilka av bitarna? Det är ju det som är kruxet:-)
Den primära skillnaden är väl att banker använder man på grund av begränsningar i hårdvaran (d.v.s. bitarna på adressbussen räcker inte till), medans paging används på grund av begränsningar i instruktionsuppsättningen (bitarna i instruktionen räcker inte till)?
Och banker är ju egentligen inget som processorn behöver vara medveten om, medans paging är nåt som processorn måste hantera.
Postat: 14 november 2008, 10:43:50
av AndersG
Den primära skillnaden är väl att banker använder man på grund av begränsningar i hårdvaran, medans paging används på grund av begränsningar i instruktionsuppsättningen?
Dvs "man har för litet bitar" som Sodjan sade.
Och banker är ju egentligen inget som processorn behöver vara medveten om, medans paging är nåt som processorn måste hantera.
Måste och måste.. Det som kallas "paging" i PIC litteraturen hanteras inte av processorn utan av användare/program
ang. banker
Postat: 14 november 2008, 10:50:57
av persika
Vad ska man hålla för linjer angående banker ?
Ska man ha principen att ha bank 0 som default, och ändra bankbitarna bara när man ska till en annan bank, och sen ändra tillbaka så man är i bank 0 igen.
eller...
Ska man ha principen att alltid ställa in bankbitarna.
Det som kan inträffa med det senare är att man ställer in bankbitarna i onödan, dvs dom är redan rätt.
Postat: 14 november 2008, 10:54:31
av AndersG
Det finns en längre diskussion om "banking/paging srategies" här:
http://www.piclist.com/techref/microchip/pages.htm
Som jag förstår har olika metoder olika för och nackdelar och det viktigaste är att man:
a) förstår hr det funkar
b) håller sig till EN strategi

Postat: 14 november 2008, 11:00:20
av persika
Jag ska ta mig igenom länken AndersG ger.
Bara en liten undran ändå.. är BANKSEL så smart att den inte ger nån kod om bankbitarna är rätt ?
Postat: 14 november 2008, 11:01:26
av AndersG
Finns bara ett sätt att kolla

Kika i listfilen.
Postat: 14 november 2008, 11:39:34
av sodjan
> är BANKSEL så smart att den inte ger nån kod om bankbitarna är rätt ?
Nej, den har inte en aning om hur bitarna står innan BANKSEL.
Det enda är att den ser de fall där det inte spelar någon roll hur
bitarna är satta (un-banked RAM eller SFR's som ligger i alla banker).
Postat: 14 november 2008, 12:36:35
av v-g
Man kan ju faktist titta på koden som genereras av det hela har jag för mig.
Banksel är otroligt smart och en enorm arbetsbesparing jämfört med att sätta registrena manuellt. Dessutom har de en stor fördel om man får för sig att byta processor, då styr automagiskt banksel om till rätt bank. Kräver dock att man kompilerar om men det är en lite eftergift
