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.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...
Val av banker
Hantering, OK, semantik 
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")
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")
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.
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"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.
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:
medan:The "bank select" needed for accessing some file registers fr.htm is conceptually similar to the "page select" needed to access some subroutines.
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"Bank switching (also known as "paging", but only loosely related to the ordinary meaning of "paging" in computing)
Vilka av bitarna? Det är ju det som är kruxet:-)AndersG skrev: Då tycker jag att Sodjans förklaring är den redigaste, dvs "bitarna räcker inte till"
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.
Dvs "man har för litet bitar" som Sodjan sade.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?
Måste och måste.. Det som kallas "paging" i PIC litteraturen hanteras inte av processorn utan av användare/programOch banker är ju egentligen inget som processorn behöver vara medveten om, medans paging är nåt som processorn måste hantera.
ang. banker
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.
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.
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

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
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
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
