Sida 2 av 3

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 16:28:40
av Muppis
"testkoden" ska tydligen vara denna. Ber om ursäkt för att jag glömde den innan.

Kod: Markera allt

// ------------------------------------------------------
// GLCD Picture name: herman.bmp
// GLCD Model: KS0108 128x64
// ------------------------------------------------------

unsigned char const herman[1024] = {                              //Bilden
   0,  0,252,252, 96,248,220,  4,  0, 56, 60,100,100,204,200,  0,
 248,252,  4,252,248,  0, 48, 24,252,252,  0,  0,248,252,  4,252,
 248,  0,  4,196,244, 60, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,128,128,
 128,128,128,128,128,199,163, 39, 38, 44, 32, 64, 64, 64,128,128,
 128,144, 24, 24, 48,224,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,195, 99,240,240,  3,  3, 32, 49, 19,242,226,  3, 97,240,
 145,243, 98,  3,193,192,  0,192,195,  3,224,240,145,179, 34,  3,
   1,192, 32,243,243,  0,  0,  0,  0,192,192, 64, 64,192,128,  0,
 208,208,  0,192,192,  0,192,192,  0,240,240,  0,128, 64, 64,192,
 128,  0,192,192, 64, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0, 15,113,129,  0,  0,  0,  0,
 192, 56,  6,141,140, 64,177, 29,  3,  1,  1,  1, 97,226,226, 66,
   2,  4,  9,  9, 18, 34, 66,132,136, 48,192,  0,  0,  0,  0,  0,
   0,  0,  0,  0, 15, 15,  0,  0, 12, 14, 11,  9,  8,  0,  7, 15,
   8, 15,  7,  0, 12, 15,  3, 15, 12,  0,  7, 15,  8, 15,  7,  0,
   3,  2,  2, 15, 15,  2,  0,  0,  0, 63, 63,  8,  8, 15,  7,  0,
  15, 15,  0, 12, 15,  3, 15, 12,  0, 15, 15,  0,  6, 15,  9, 15,
  15,  0, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0, 56,196,  8, 48,192,  0,  0,240,  8,  4,  3,  1,  1,  1,
   1,  1,  1,  0,  0,  0,  0,  3,  4,  8, 16, 32, 64, 64,128,128,
 128,128,128,128,128,128,128, 64,120, 69, 35, 38, 24,  0,  0,  0,
   0,  0,112,120,200,200,152,144,  0,232,232,  0, 64,168,160,224,
 200,  0,248,248,  0,224,224,  0,224,224,  0,224,224, 32, 32,224,
 192,  0,192,224, 32, 32,224,192,  0,224,224, 32, 32, 32,240,248,
  32,  0,224,224, 32, 32,  0, 64,168,160,224,200, 32,240,248, 32,
  32,240,248, 32,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,124,
 178,226, 93,103, 70,  8,  0,  3, 12,240,  1,  2,  2,  2,  2,  2,
 254,134, 10, 19, 97,192, 64,128,128,128, 64, 96, 32,144, 72, 52,
  14,128,192, 48,  4,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,226,230,132,132,135,  3,144,159, 15,  0,  3,135,132,  7,
   7,  0,231,231,  0,  1,231,230,  7,  1,128,159,159,132,  4,  7,
 131,128,131,135,  4,132,135,131,128,135,135,128,128,128,  3,  7,
   4,128,135,135,  0,  0,128,131,135,132,135,  7,  0,  3,  7,  4,
   0,  3,  7,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  1,  2,  2,  2,  6, 14, 15, 15, 30, 28, 28, 30, 14, 14,
  15, 15,127,252,248,248,249,250,250,250,250,250,253,124, 62,127,
 143, 31, 63,127,248,240,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0, 31, 31, 16, 16, 31, 15, 64, 71,127, 56, 31,  7,  0,  0,
   0,  0, 31, 31,  1,  1, 31, 31,  0, 15, 31, 18, 18, 27, 11,  0,
  31, 31,  0,  0,  0, 31, 31,  0,  0, 31, 31,  0,  0, 31, 31,  0,
  13, 30, 18, 31, 31,  0, 31, 31,  0,  0, 31, 31,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0, 15, 31,127,255,255,255,255,255,135,128,128,  0,  0,
 192, 65, 50, 30, 15, 15, 15, 15,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0,  0,192,240,176,192,224, 48, 16,  0,192,208, 16,  0,192,
  64,192,128,  0,  0,192,240, 48,  0,192,240, 48,  0,  0,  0,  0,
   0,  0,224,144, 80, 48,  0,  0,  0,  0,  0,128,224, 96, 16, 16,
  48, 32,  0,128,192, 64,192,128,  0,  0,192,192,128,192,192,128,
 192,192,  0,  0,192,192, 64,192,128,  0,  0,128, 64, 64,192,192,
   0,  0,192,192,128,192,192,  0,192,192,  0,  0,192, 64,  0,  0,
   0,  0,  0,  0,128,224,240,248,249,249,248,248,248,240,225,193,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
   0,  0, 12, 15,  3,  1,  0,  3, 47, 44, 60, 31,  3,  0,  7, 15,
  10, 11,  3,  0, 12, 15,  3,  0, 12, 15,  3,  0,  0,  0,  0,  0,
   7, 15,  9, 11,  6, 12, 10,  0,  0,  0,  0,  7, 15,  8,  8, 12,
   6,  2,  7, 15,  8, 12,  7,  3,  0, 14, 15,  1, 14, 15,  1, 14,
  15,  1, 48, 63, 15,  8, 12,  7,  3,  0, 14, 14,  9, 15, 15,  1,
   0, 14, 15,  1, 14, 15,  1, 32, 33, 63, 28,  7,  1,  0,  0,  0,
   0,  0,  0,  0, 15, 63,127,255,255,255,255,255,255,127, 63, 31,
   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
};

void main() {
  OSCCON =  255;                               //Sätt internoscillatorn på 8 MHz
  ADCON1 = 15;                                 //Gör portA digital
  Glcd_Init(&PORTA, 1, 0, 2, 3, 4, 5, &PORTB); //Initiera displayen
  Glcd_Fill(0);                                //Rensa displayen
  Glcd_Image(herman);                          //Visa bilden

  while(1){
  Glcd_Box(0,0,127,63,2);                      //Invertera bilden
  delay_ms(3000);                              //Vänta 3 sekunder
  }

}
Den koden funkar, men ger varningar i MikroC då APIt för GLCD har ändrats till globala variabler istället för parametrar till Glcd_Init.
Det jag lagt märke till är att PORTA inte används i koden jag postade i inlägget innan, jag är också osäker på vad tusan "1,0,2,3,4,5" betyder, den gamla dokumentationen för MicroC var något knapphändig som nämnts tidigare.

Jag kollade lite snabbt på google och 15 är tydligen 0xF, är det en förkortning av 0x0F? Det verkade så vad jag kunde se, jag har inte jobbat något nämnvärt med hex innan.

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 16:41:29
av sodjan
> jag har inte jobbat något nämnvärt med hex innan.

Right, du har du ju en hel del hemläxa att fixa innan det finns anledning
för någon annan att riva i detta. Varför ska vi anta att du för övrigt vet
vad du pysslar med när du inte ens förstår hex värden ?

> jag är också osäker på vad tusan "1,0,2,3,4,5" betyder,

Du menar i "Glcd_Init(&PORTA, 1, 0, 2, 3, 4, 5, &PORTB)" ?

Vad är problemet ? Hur menar du igentligen ?
Skulle de betyda något annat än det som manualen specificerar för Glcd_Init(...) ?

> den gamla dokumentationen för MicroC var något knapphändig som nämnts tidigare.

Vilken "gamla" dokumentationen ? Finns det flera ?

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 16:50:15
av Muppis
bos postade tidigare http://www.easypsoc.com/pdf/mikroc/mikroc_manual.pdf vilket är en äldre dokumentation över GLCD-APIt, fast i mikroC istället för mikroBasic som TS använder.

Jag sade att jag inte har hållt på med mikroprocessorer tidigare, jag har heller inte använt MikroC eller MikroBasic, så jag vet inte varför du skulle anta något öht?

Angående parametrarna till Glcd_init så har jag listat ut vad det var.

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 17:07:05
av sodjan
Jag antar inget. Jag försöker förstå vad ni håller på med och
kan bara konstatera att om man måste fråga om 15 motsvarar 0x0F
så har man större problem än vad man kanske tror själv. Det kommer
att bli väldigt svårt att komma någonstans med felsökningen om ni
saknar så pass grundläggande kunskaper. Men det är ju å andra
sidan väldigt lätt att åtgärda... :-)

Sen så är jag inte helt med på varför ni inte bara arbetar vidare med den
testkoden som ni har och som "fungerar". Eller kör lite traditionell
felsökning på koden som inte fungerar. Sannolikheten för att någon
annan sitter med samma display och med en MikroC miljö är kanske
inte så stor i alla fall.

När det gäller manualer så blir jag lite osäker. Jag har samma manual som
du länkade till nerladdad. Men när jag kollar hos mikroElektronia nu så
hittar jag enbart "MicroC PRO", vilket verkar vara en lite annorlunda produkt
med en annan manual.

Hur som helst. Jag kollade på Glcd_Init i den manual du länkade till, och den
har samma beskrivning av parametrarna som den manual jag har lokalt (sannolikt
samma manual). Så då kvarstår frågan hur du menade med vad "1,0,2,3,4,5" betyder,
d.v.s varför det inte skulle betyda just det som manualen beskriver ? Så långt så
är det ju i alla fall ganska tydligt.

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 17:25:45
av Muppis
Angående "1,0,2,3,4,5" till glcd_init() så har de inte skrivit att i fallet

Kod: Markera allt

Glcd_Init(&PORTA, 1, 0, 2, 3, 4, 5, &PORTB);
att det då bestämmer att cs1 är PORTA+1? Det känns som rena gissningsleken. Det är väl antagligen därför de har ändrat APIt i MicroBasic.

Helldin skrev precis till mig att han fick igång den med OSCCON=255; tillsammans med att han drog ur kristallen. Men det slutade att fungera efter att han startat om den genom att dra ur strömmen. Då har vi kommit en bit på vägen iaf.

Tack för hjälpen hittils!

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 17:58:18
av sodjan
> Glcd_Init(&PORTA, 1, 0, 2, 3, 4, 5, &PORTB);
> att det då bestämmer att cs1 är PORTA+1? Det känns som rena gissningsleken.

Vad betyder "PORTA+1" ?

Det står ju att första parametern ("ctrl_port") talar om vilken port man
använder och att de andra (t.ex "cs1" o.s.v) talar om vilke pinne som
respektive funktion är kopplad till. Är det inte så ? Eller hur tolkar ni det ?

> Helldin skrev precis till mig att han fick igång den med OSCCON=255; tillsammans med att han drog ur kristallen.

Och ni har 100% koll på vad detta betyder ?
Det låter som att det hoppade igång när ni bytte från extern kristall till INOSC.
Hade ni inte verifierat att processorn faktiskt körde koden alls ?

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 18:11:54
av Muppis
Jag tolkade det som att 1 är just bit 1 på PORTA, vilket är RA0/AN0 i detta fallet? men jag kan ha fel.. det har hänt förr.
Jag är som sagt inte så bevandrad inom pic och mikroprocessorer, jag har bara kollat i databladet lite grann över det nödvändigaste för att förstå vad som händer öht.

Jag har dålig koll på vad det betyder, men jag anar att det har med OSCCON och vald oscilator att göra som du säger, jag försöker läsa i databladet vad som kan tänkas rätta till det. Hittils har vi provat OSCCON = 0xFF som i exemplen och OSCCON = 0x7C för att använda primary oscilator. Jag är lite osäker på vad OSTS har för betydelse i detta fallet, jag får läsa mer om det..

Jag har bett honom att använda ICD-verktygen för att se vad som händer, jag får återkomma om en stund med det.

När han drog ur kristallen så fick han lite skumma bilder på displayen, ibland vandrar det vita över displayen i horisontell riktning, och ibland vertikalt ifrån ena änden till den andra.

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 18:55:43
av bos
Jag vill inte hoppa in i den här trådens detaljer, men det jag läste här:

> Jag är som sagt inte så bevandrad inom pic och mikroprocessorer

Får mig nästan att utbrista: Glöm isåfall C helt och hållet, till att börja med. Ta av silkesvantarna och dyk ner i dyngan istället. Först då, och endast då, kommer du få möjlighet att förstå vad det är du/ni/TS (vad tusan nu TS är för nåt) försöker att klura ut. Skrota C, börja om med assembler. Ta fram en drös LED:s, skriv assemblerkod som blinkar dem på alla möjliga och omöjliga sätt. Försök *förstå* vad som händer, och varför. Lär er binära och hexadecimala talsystemen. Inte i ryggmärgen, men iallafall kunna räkna med dem.

Det ni försöker göra just nu är att cykla Vätternrundan med mountainbike utan att först ha full koll över hur en trehjuling fungerar. Jag rekommenderar att ni sänker ribban till en mer realistisk nivå, annars kommer ni att - likt en annan forummedlem (ingen nämnd ingen glömd) - hålla på och trava runt i all evighet utan att komma nånvart.

Bara ett tips. Det ger dig/er större chans att lyckas om ni börjar om från en bättre ända.

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 19:08:22
av Muppis
Jovisst, det hade väl varit bra att lära sig assembler, exempelkoden i databladet var i assembler vad jag såg. Sen kan nämnas att TS (trådskaparen) har lyckats koda BASIC i en C-kompilator! Han använde tydligen mikroC PRO For PIC :) Hur det går till vet jag inte, filändelsen på källkoden är c.

För att prata om ingenting så är mikroC PRO hemskt, klickar man någonstans i filen så är det som att den är full av mellanslag, textmarkören hamnar precis där man klickat och inte i slutet av raden! Hur kan man leva så?!? :)

Jag har inga problem att omvandla hex, det gör google så snällt åt en om man inte vill använda en vanlig kalkylator. Det var just förkortningen 0x0F och 0xF som jag funderade över, vem vet vad som kan hända om det trots allt inte var samma sak i mikroprocessorns lilla värld. Men nu vet jag.

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 19:17:51
av TomasL
Jag har inga problem att omvandla hex, det gör google så snällt åt en om man inte vill använda en vanlig kalkylator.
Men snälla nån, behöver du google/miniräknare för det, hem och gör läxan bums.
En förutsättning för att kunna koda är väl att man åtminstone kan omvandla DEX/BIN<>DEC för tal upp till 15 i huvudet.

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 19:22:53
av Niklas-k
Ja det är ju ingen nybörjarprocessor heller ni valt. Ni bör sätta in i t.ex configuration bits och förstå allt där samt kolla upp alla analoga funktioner om de kan vara på. Ta till t.ex PBADEN hur är den satt?

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 19:33:43
av Muppis
Nu började mikroC krångla över fjärrskrivbord så Helldin får klara sig själv en stund. Jag lämnar honom åt sitt öde nu, vi får se vad som händer med detta projekt. Tack för hjälpen allihop.

Niklas-k: Jag hittade mycket om USB i den processorn, det verkar ställa till med en hel del. Det har säkert besvarats tusentals gånger här, men vilken pic är en lämplig och modern för nybörjare? Jag har funderat länge på om man skulle försöka sig på elektronik som hobby.

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 19:46:36
av TomasL
Nån ur 18F serien, en bra processor är 18F452 och dess efterföljare 18F4520

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 19:52:01
av Niklas-k
Börja med att koppla upp displayen mot en 16F877A. Och misslyckas ni då så då vet fan inte vad ni skall göra :lol:

Annars så är 16F628A en bra nybörjarprocessor och kanske är svår att koppla upp mot en GLCD!

Re: Problem med microC - too many params

Postat: 10 oktober 2009, 19:59:24
av TomasL
Nja, tycker nog att 18F är bättre för nybörjare, enklare minneslayout, som inte bryts upp av olika saker.
452(4520) har dessutom tillräckligt med portar och dylikt, så man kan nästan göra vad som helst med den.