LCD PIC problem
Re: LCD PIC problem
> Hur fungerar och vad gör macron?
MPASM manulen (http://ww1.microchip.com/downloads/en/D ... 30400g.pdf)
Kapitel 7 "Macro Language".
> Det lägger en start adress i eeprom? men vad e adressen?
Om du läser kapitlet om Macro så ser du nog det. Passa även på att kolla upp
"high" och "low" om du inte redan har det helt klart för dig. Resten står i kapitlet
om EEPROM/Flash i databladet.
> Blir lcd_text1 en start adress i minnet för infot efter "data" eller hur funkar det?
Korrekt.
Direktivet (minns inte vilket det var) skapar en text-sträng i flash (program-) minnet
och symbolen som anges på samma rade sätts till värdet av den adress där strängen skapas.
> Och hur\när läggs texten in i minnet?
Här är jag inte med riktigt på vad du frågar om.
Det är bättre att du mer tydligt anger vad som var oklart i MPASM manualen kapitel 4.15.
(Det låter faktiskt som om du inte har kollat alls, men det låter inte riktigt rimligt...)
> ...och vad gör code?
Sluta omedelbart med rena RTFM frågor !!
Läs istället MPASM manualen kapitel 4.9.
> error147(Directive only allowed when generating an object file)
Du jar "glömt" att lägga till LKR filen till projektet.
Se "Konfigurering" på den här sidan : http://www.jescab.se/Info_MPLAB.html
MPASM manulen (http://ww1.microchip.com/downloads/en/D ... 30400g.pdf)
Kapitel 7 "Macro Language".
> Det lägger en start adress i eeprom? men vad e adressen?
Om du läser kapitlet om Macro så ser du nog det. Passa även på att kolla upp
"high" och "low" om du inte redan har det helt klart för dig. Resten står i kapitlet
om EEPROM/Flash i databladet.
> Blir lcd_text1 en start adress i minnet för infot efter "data" eller hur funkar det?
Korrekt.
Direktivet (minns inte vilket det var) skapar en text-sträng i flash (program-) minnet
och symbolen som anges på samma rade sätts till värdet av den adress där strängen skapas.
> Och hur\när läggs texten in i minnet?
Här är jag inte med riktigt på vad du frågar om.
Det är bättre att du mer tydligt anger vad som var oklart i MPASM manualen kapitel 4.15.
(Det låter faktiskt som om du inte har kollat alls, men det låter inte riktigt rimligt...)
> ...och vad gör code?
Sluta omedelbart med rena RTFM frågor !!
Läs istället MPASM manualen kapitel 4.9.
> error147(Directive only allowed when generating an object file)
Du jar "glömt" att lägga till LKR filen till projektet.
Se "Konfigurering" på den här sidan : http://www.jescab.se/Info_MPLAB.html
Re: LCD PIC problem
hehe ok ok tack för länken ska genast läsa på 
Edit: Länken var bara till nån fusk lapp med kommandon, hittar inte manualen, hittar bara den här:
http://ww1.microchip.com/downloads/en/D ... 33023a.pdf
Edit2: äntligen... jobbig sökfunktion...

Edit: Länken var bara till nån fusk lapp med kommandon, hittar inte manualen, hittar bara den här:
http://ww1.microchip.com/downloads/en/D ... 33023a.pdf
Edit2: äntligen... jobbig sökfunktion...
Re: LCD PIC problem
Sodjan:
Sådärja det blev lite läsning men nu har du tvingat mej att lära mej hur relocatablemode och macron funkar och det var lika bra
Men jag är lite osäker när det gäller variablerna,
t.ex
var udata
var1 res 1
var2 res 1
ligger båda i samma bank nu?
blir ganska många bank byten om man inte andvänder shr
Sådärja det blev lite läsning men nu har du tvingat mej att lära mej hur relocatablemode och macron funkar och det var lika bra

Men jag är lite osäker när det gäller variablerna,
t.ex
var udata
var1 res 1
var2 res 1
ligger båda i samma bank nu?
blir ganska många bank byten om man inte andvänder shr
Re: LCD PIC problem
Varje gång du använder (någon av) udata direktiven så skapas en "data section".
En viss section kan inte ligga i flera banker, utan länkaren (MPLINK) väljer en
(den första) banken där det finns plats (beror alltså på hur många RES du har
i just det fallet). I ditt exempel så kommer alltså var1 och var2 alltid att ligga
i samma bank, vilken det blir avgör dock länkaren (MPLINK). Dock tror jag att
MPLINK normalt fyller på nerifrån, så att säga, d.v.s tills BANK 0 blir full.
Om du tittar i MAP filen i ditt fall så ser du att det har skapats en section som heter "var"
(alltså det namn/symbol som du har på UDATA raden).
Sen kan du även tvinga dina RES att gå mot en viss bank genom att ange ytterligare
en parameter efter UDATA, antingen en fast adress eller en namn på en speciell section
som man kan skapa genom att redigera LKR filen. Men detta blir lite överkurs. Enklast är
att skapa grupper med RES som du vet att du kommer att använda tillsammans, då kommer
de i samma bank, och man kan optimera bort en del BANKSEL direktiv.
För de fall där man har max 16 variabler (inte helt ovanligt i mindre projekt) så är
det enklast att köra dom mot UDATA_SHR allihop.
Eller att i alla fall ha sina vanligaste (mest frekventa) variabler i UDATA_SHR (som kan köras
utan BANKSEL) och sedan allokera övriga med UDATA.
En viss section kan inte ligga i flera banker, utan länkaren (MPLINK) väljer en
(den första) banken där det finns plats (beror alltså på hur många RES du har
i just det fallet). I ditt exempel så kommer alltså var1 och var2 alltid att ligga
i samma bank, vilken det blir avgör dock länkaren (MPLINK). Dock tror jag att
MPLINK normalt fyller på nerifrån, så att säga, d.v.s tills BANK 0 blir full.
Om du tittar i MAP filen i ditt fall så ser du att det har skapats en section som heter "var"
(alltså det namn/symbol som du har på UDATA raden).
Sen kan du även tvinga dina RES att gå mot en viss bank genom att ange ytterligare
en parameter efter UDATA, antingen en fast adress eller en namn på en speciell section
som man kan skapa genom att redigera LKR filen. Men detta blir lite överkurs. Enklast är
att skapa grupper med RES som du vet att du kommer att använda tillsammans, då kommer
de i samma bank, och man kan optimera bort en del BANKSEL direktiv.
För de fall där man har max 16 variabler (inte helt ovanligt i mindre projekt) så är
det enklast att köra dom mot UDATA_SHR allihop.
Eller att i alla fall ha sina vanligaste (mest frekventa) variabler i UDATA_SHR (som kan köras
utan BANKSEL) och sedan allokera övriga med UDATA.
Re: LCD PIC problem
vad bra då förstår jag, kör alla i udata_shr just nu men ville ändå veta till nästa gång.
En annan fråga som jag glömde är att vad händer när man adderar 0x80 till vald adress/rad på lcd:n? (står inget om det i databladet till lcd:n)
Skippade den delen först men det buggade ur andra gången man vill skriva text(lcd_text2). Har ett hex värde i början av texten istället för två decimaltal som anger positionen, men jag måste ändå addera 0x80 för att det ska funka andra gången jag skriver ut text.
En annan fråga som jag glömde är att vad händer när man adderar 0x80 till vald adress/rad på lcd:n? (står inget om det i databladet till lcd:n)
Skippade den delen först men det buggade ur andra gången man vill skriva text(lcd_text2). Har ett hex värde i början av texten istället för två decimaltal som anger positionen, men jag måste ändå addera 0x80 för att det ska funka andra gången jag skriver ut text.
Re: LCD PIC problem
Adressen bort bli 0x80 högre !?
Förstår inte, varför lägger du till 0x80 ?
Förstår inte, varför lägger du till 0x80 ?
Re: LCD PIC problem
om jag ställer in 0x43 på lcd:n så börjar texten skrivas ut på rad 2 tecken 4.
men om jag först skriver på tex 0x00 och sedan byter till 0x40 så blir den andra texten osynlig eller krockar och buggar ihop sej med föregående text.
Men om jag kör addwf (t.ex0x80+0x43) = ny adress så skrivs alla texter ut korrekt.
Fattar inte riktigt varför? första raden och tecknet har väl adressen 0x00 och inte 0x80+0x00
men om jag först skriver på tex 0x00 och sedan byter till 0x40 så blir den andra texten osynlig eller krockar och buggar ihop sej med föregående text.
Men om jag kör addwf (t.ex0x80+0x43) = ny adress så skrivs alla texter ut korrekt.
Fattar inte riktigt varför? första raden och tecknet har väl adressen 0x00 och inte 0x80+0x00
Re: LCD PIC problem
Det du säger är att du *tror* att du gör det ena och det andra.
Men du har ju inte visat att du faktiskt gör det. Sannolikt gör du fel...
Men du har ju inte visat att du faktiskt gör det. Sannolikt gör du fel...
Re: LCD PIC problem
Nu har jag dubbel kollat igen och jag glömde bort att att man ska sätta bit7 för att lcd:n ska veta att dom andra bitarna är adressen.
bit7=1 ger 0x80
bit0-6 0x00-0x0F adresserna på rad 1
och 0x40 - 0x4F adresserna på rad 2
Det var klantigt av mej men tack för hjälpen
bit7=1 ger 0x80
bit0-6 0x00-0x0F adresserna på rad 1
och 0x40 - 0x4F adresserna på rad 2
Det var klantigt av mej men tack för hjälpen
Re: LCD PIC problem
Aha, så kanske det är ja. Ja, det ligger ju inte riktigt i själva "adressen"... 
