
Hur använder man en KS0108B display
Re: Hur använder man en KS0108B display
Som sagt, det finns anledning till att den inte finns på exempel sidan... 

Re: Hur använder man en KS0108B display
Jag hade tydligen ingen ledig pic med tillräckligt många pinnar hemma så måste köpa en ny. Jag funderar på en 16f887 så att jag kan använda en bootloader, eller kanske en 18f? nån ni kan rekommendera?
Om man använder en bootloader går det att använda seriell kommunikation i programmet också, via samma serieport till datorn då?
Sodjan: Tack för exemplet. Jag tror dock jag kommer att använda basic eller c (om jag får ordning på kompilatorn nån gång) men det går ju att plocka tips och initfunktionen ändå.
Om man använder en bootloader går det att använda seriell kommunikation i programmet också, via samma serieport till datorn då?
Sodjan: Tack för exemplet. Jag tror dock jag kommer att använda basic eller c (om jag får ordning på kompilatorn nån gång) men det går ju att plocka tips och initfunktionen ändå.
Re: Hur använder man en KS0108B display
Jag har stött på ett problem.
Ett exempel Lysdioder är kopplade till RA1 och 2. Där tänds båda dioderna direkt sedan hoppar dem ner lite i lysstyrka sen släcks dem. När dem tänds igen lyser dem hela tiden (förutom att ljusstyrkan hoppar upp och ner)
vad kan det vara för fel?
EDIT: Jag använder mikroC, Wisp 648 och en 16f648a
Ett exempel
Kod: Markera allt
void main() {
PORTA = 0;
TRISA = 0;
while(1) {
PORTA.F1 = 1;
delay_us(1000);
PORTA.F2 = 1;
delay_us(1000);
PORTA.F1 = 0;
delay_us(1000);
PORTA.F2 = 0;
delay_us(1000);
}
}
vad kan det vara för fel?
EDIT: Jag använder mikroC, Wisp 648 och en 16f648a
Re: Hur använder man en KS0108B display
Är det där hela koden ?
Hur gör du t.ex med de analoga funktionerna ?
Hur gör du t.ex med de analoga funktionerna ?
Re: Hur använder man en KS0108B display
Jag glömde en rad
annars är det hela koden. Jag har aldrig behövt stänga av några analoga register förut (finns ens det på 648an?)
I en simulator tände den först den ena sen släkte han den innan han tände den andra???
En kod som jag hittade på nätet funkar
Kod: Markera allt
CMCON = 7;
I en simulator tände den först den ena sen släkte han den innan han tände den andra???
En kod som jag hittade på nätet funkar
Kod: Markera allt
void main() {
PORTA = 0;
TRISA = 0;
while(1) {
PORTA = ~PORTA;
Delay_ms(500);
}
}
Re: Hur använder man en KS0108B display
> Jag glömde en rad...
OK, och det gjorde ingen skillnad ?
> Jag har aldrig behövt stänga av några analoga register
Behöver och behöver... det kan finnas lägen (t.ex då pinnar enbart används
som utgångar och man inte använda bit-funktioner på PORTx registret) då
de analoga funktionerna kanske inte "stör". Men det stora "gräjen" är att
visa att man faktiskt har tänkt på det och inte missat det helt. Alltså är det
bättre att göra rätt, speciellt i kod som man tänker visa upp och be om hjälp med.
Att slarva brukar straffa sig förr eller senare.
> ...(finns ens det på 648an?)
Ja, komparatorer.
> I en simulator tände den först den ena sen släkte han den innan han tände den andra???
Ja, det verkar rimligt så som koder är skriven. Och anledningen vet du ju nu...
OK, och det gjorde ingen skillnad ?
> Jag har aldrig behövt stänga av några analoga register
Behöver och behöver... det kan finnas lägen (t.ex då pinnar enbart används
som utgångar och man inte använda bit-funktioner på PORTx registret) då
de analoga funktionerna kanske inte "stör". Men det stora "gräjen" är att
visa att man faktiskt har tänkt på det och inte missat det helt. Alltså är det
bättre att göra rätt, speciellt i kod som man tänker visa upp och be om hjälp med.
Att slarva brukar straffa sig förr eller senare.
> ...(finns ens det på 648an?)
Ja, komparatorer.
> I en simulator tände den först den ena sen släkte han den innan han tände den andra???
Ja, det verkar rimligt så som koder är skriven. Och anledningen vet du ju nu...
Re: Hur använder man en KS0108B display
I simulatorn funkade det nu men i picen är det ingen skillnad???sodjan skrev: OK, och det gjorde ingen skillnad ?
Då jag aldrig behövt använda dem med denna pic visste jag inte om dem.sodjan skrev:Behöver och behöver... [lång text]
När jag skriver
Kod: Markera allt
ANCON = 0;

Re: Hur använder man en KS0108B display
ADCON kanske registret heter?
Kolla sist i kapitlet för den port du önskar mecka med där står alla register om berör denna port.
Kolla sist i kapitlet för den port du önskar mecka med där står alla register om berör denna port.
Re: Hur använder man en KS0108B display
> om man läser databladet kanske man förstår varför...
Är det inte effektivare (för alla) om du gör det *innan* du postar?
Det kanske kan undvika några extra vändor på forumet.
> ANCON = 0;
Och var har du hittat "ANCON" ?
Du hade ju rätt kommando i ett tidigare inlägg.
v-g> ADCON kanske registret heter?
Rör inte till det än värre nu...
Att gissa lär inte hjälpa ett dugg.
Rätt register fanns i ett tidigare inlägg...
> Då jag aldrig behövt använda dem med denna pic visste jag inte om dem.
Du har missförstått helt!
Själva poängen är just att du *inte* behöver dom (d.v.s komparatorerna)
och just *därför* ska du slå av dom.
Är det inte effektivare (för alla) om du gör det *innan* du postar?
Det kanske kan undvika några extra vändor på forumet.
> ANCON = 0;
Och var har du hittat "ANCON" ?
Du hade ju rätt kommando i ett tidigare inlägg.
v-g> ADCON kanske registret heter?
Rör inte till det än värre nu...

Rätt register fanns i ett tidigare inlägg...
> Då jag aldrig behövt använda dem med denna pic visste jag inte om dem.
Du har missförstått helt!
Själva poängen är just att du *inte* behöver dom (d.v.s komparatorerna)
och just *därför* ska du slå av dom.
Re: Hur använder man en KS0108B display
Jag han inte ens hitta rätt ställe innan jag fick hjälp
Vrcon fanns också men det skulle man tydligen inte behöva göra något åt (hjälpte inte heller när jag försökte)
Sodjan:
Jag kör med cmcon avstängt men det funkar ju inte ändå? Borde inte vara ett hårdvarufel då jag körde med samma pic och exakt samma koppling (har ej rört labplattan) för en månad sen utan problem. Den koden jag hittade på internet (där dem växlar hela PORTA på en gång) funkar ju också
>Du har missförstått helt!
>Själva poängen är just att du *inte* behöver dom (d.v.s komparatorerna)
>och just *därför* ska du slå av dom.
Jo, men jag var lite för lat första gången jag använde denna processorn och eftersom det funkade då brydde jag mig inte.
Jag lovar att läsa databladet innan jag postar någon mer fråga i fortsättningen.

Vrcon fanns också men det skulle man tydligen inte behöva göra något åt (hjälpte inte heller när jag försökte)
Sodjan:
Jag kör med cmcon avstängt men det funkar ju inte ändå? Borde inte vara ett hårdvarufel då jag körde med samma pic och exakt samma koppling (har ej rört labplattan) för en månad sen utan problem. Den koden jag hittade på internet (där dem växlar hela PORTA på en gång) funkar ju också

>Du har missförstått helt!
>Själva poängen är just att du *inte* behöver dom (d.v.s komparatorerna)
>och just *därför* ska du slå av dom.
Jo, men jag var lite för lat första gången jag använde denna processorn och eftersom det funkade då brydde jag mig inte.
Jag lovar att läsa databladet innan jag postar någon mer fråga i fortsättningen.
Re: Hur använder man en KS0108B display
> Jag kör med cmcon avstängt men det funkar ju inte ändå?
Vad menar du med "avstängt" ? En sådan uppgift är ganska värdelös, tala
om vilket *värde* du har satt CMCON till. Men det finns väl i detta fall ingen
anledning till att använda något annat värde än det i exemplet i databladet.
Men, som sagt, vi vet ju inte om det är det du har gjort...
Själva registret CMCON i sig kan bara ha ett visst värde, aldrig vara "avstängt".
*Komparatorerna* däremot kan vara avstängda, och de stängs av via CMCON.
VRCON har nog med "Voltage Reference" att göra, och den är nog avstängd vid reset,
skulle jag tro. Grejen är just pinnar som han blandade digitala och analoga funktioner,
de är alltid analoga efter en reset (av naturliga orsaker om man funderar lite på det).
> Den koden jag hittade på internet (där dem växlar hela PORTA på en gång) funkar ju också.
Den borde inte fungera utan att ha komparatorerna avstängda. I alla fall inte på alla
PORTA pinnar (jag tror inte att alla PORTA pinnar har analoga funktioner, och för
de som *inte* har det, så fungerar koden även med komparatoerna påslagna. Så det
beror på vilken PORTA pinne du tittade på för att konstatera att "det fungerar").
> Jag lovar att läsa databladet innan
Ja, det ser onekligtn lite bättre ut att "göra hemläxan" först och fråga sen...
Vad menar du med "avstängt" ? En sådan uppgift är ganska värdelös, tala
om vilket *värde* du har satt CMCON till. Men det finns väl i detta fall ingen
anledning till att använda något annat värde än det i exemplet i databladet.
Men, som sagt, vi vet ju inte om det är det du har gjort...
Själva registret CMCON i sig kan bara ha ett visst värde, aldrig vara "avstängt".
*Komparatorerna* däremot kan vara avstängda, och de stängs av via CMCON.
VRCON har nog med "Voltage Reference" att göra, och den är nog avstängd vid reset,
skulle jag tro. Grejen är just pinnar som han blandade digitala och analoga funktioner,
de är alltid analoga efter en reset (av naturliga orsaker om man funderar lite på det).
> Den koden jag hittade på internet (där dem växlar hela PORTA på en gång) funkar ju också.
Den borde inte fungera utan att ha komparatorerna avstängda. I alla fall inte på alla
PORTA pinnar (jag tror inte att alla PORTA pinnar har analoga funktioner, och för
de som *inte* har det, så fungerar koden även med komparatoerna påslagna. Så det
beror på vilken PORTA pinne du tittade på för att konstatera att "det fungerar").
> Jag lovar att läsa databladet innan
Ja, det ser onekligtn lite bättre ut att "göra hemläxan" först och fråga sen...

Re: Hur använder man en KS0108B display
sodjan skrev: Vad menar du med "avstängt" ? En sådan uppgift är ganska värdelös, tala
om vilket *värde* du har satt CMCON till. Men det finns väl i detta fall ingen
anledning till att använda något annat värde än det i exemplet i databladet.
Men, som sagt, vi vet ju inte om det är det du har gjort...
Kod: Markera allt
CMCON = 7;
Re: Hur använder man en KS0108B display
Vad är det Du vill göra? Skall dioderna blinka? I så fall är nog inte "delay_us(1000);" helt lyckat. 1000µs = 1ms = 1/1000 sekund = PWM istället för blink.
Åtgärda detta och försök igen.
Åtgärda detta och försök igen.
Re: Hur använder man en KS0108B display
aaa, ibland har man en hjärna som ett nötskal
Jaja tack för hjälpen, det jag ville göra egentligen var att driva displayen men kom då till detta problem och förkortade koden till ett blinkprogram. Nu funkar dispayen i simulatorn dock är det en j*vla massa kablar att löda så att göra det "på riktigt" får vänta tills imorgon.

Jaja tack för hjälpen, det jag ville göra egentligen var att driva displayen men kom då till detta problem och förkortade koden till ett blinkprogram. Nu funkar dispayen i simulatorn dock är det en j*vla massa kablar att löda så att göra det "på riktigt" får vänta tills imorgon.
Re: Hur använder man en KS0108B display
Bra ! Då ska komparatorerna vara avstängda i alla fall.
Var du med på varför F1 stängdes av när F2 tändes innan ?
Om det nu fungerar som det ska i MPSIM men inte "på riktigt",
så kan det vara felkopplat eller så kan processorn ha ett fel. Det
första brukar vara lite mer vanligt...
> Men om det känns bättre för dig körde jag även med det hexdecimala värdet i databladet (0x07)
Kul...
Jag skulle dock föreslå att du gör det till en vana att aldrig ange konstanter helt utan "radix".
Om du vill ange ett decimalt tal, gör det med d'7', inte bara 7. Det kan uppstå jäkligt
konstiga buggar när man senare får för sig att ändra "default radix" och man har en massa
konstanter som plötsligt får en annan betydelse. Nu är det ju inte så stor fara med just
värdet 7, så klart, men generellt.
Nu har jag tappat tråden helt. För att komma tillbaka on-track så kanske du ska posta
din aktuella kod och vad det aktuella problemet är. D.v.s hur det uppför sig just nu.
PS: Marta är som vanligt "på hugget" och har en inte helt dum synpunkt...
Om det nu är detta som är "felet" (d.v.s ihopblandning av "us" och "ms") så borde det ha
märkts i MPSIM, i alla fall om du använder "Stopwatch" för att kolla tiderna.
Var du med på varför F1 stängdes av när F2 tändes innan ?
Om det nu fungerar som det ska i MPSIM men inte "på riktigt",
så kan det vara felkopplat eller så kan processorn ha ett fel. Det
första brukar vara lite mer vanligt...

> Men om det känns bättre för dig körde jag även med det hexdecimala värdet i databladet (0x07)
Kul...

Jag skulle dock föreslå att du gör det till en vana att aldrig ange konstanter helt utan "radix".
Om du vill ange ett decimalt tal, gör det med d'7', inte bara 7. Det kan uppstå jäkligt
konstiga buggar när man senare får för sig att ändra "default radix" och man har en massa
konstanter som plötsligt får en annan betydelse. Nu är det ju inte så stor fara med just
värdet 7, så klart, men generellt.
Nu har jag tappat tråden helt. För att komma tillbaka on-track så kanske du ska posta
din aktuella kod och vad det aktuella problemet är. D.v.s hur det uppför sig just nu.
PS: Marta är som vanligt "på hugget" och har en inte helt dum synpunkt...

Om det nu är detta som är "felet" (d.v.s ihopblandning av "us" och "ms") så borde det ha
märkts i MPSIM, i alla fall om du använder "Stopwatch" för att kolla tiderna.