Adresseringproblem KS0108

Lysdioder, Optiska sensorer, Fiberoptik, Displayer, Lasrar, Optiska kopplare
Daniel Ahlin
Inlägg: 35
Blev medlem: 18 januari 2006, 21:36:14

Adresseringproblem KS0108

Inlägg av Daniel Ahlin »

Jag har problem att adressera kolumner på min ks0108. Adresser mellan 0x10 och 0x30 funkar inte övriga går utmärkt att sätta.
Allt annat fungerar, låter LCDn själva stega upp adressen genom att skriva en byte i taget så fungerar det.

När jag skickar data till displayen fungerar alla databits. Jag kan alltså fylla displayen med en korrekt bild om jag låter adresseringen skötas internt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Du lär inte få så många vettiga svar, eftersom du inte säger
ett smack om vad du gör...
Daniel Ahlin
Inlägg: 35
Blev medlem: 18 januari 2006, 21:36:14

Inlägg av Daniel Ahlin »

För den nyfikne:

Jag bygger en instrumentpanel till en bil mha en atmega128, en grafisk display 128x64pixel, flashläsare, en modifierad MegaSquirt (Elektronisk insprutning) och en serie anslutning för GPS.
Lite givare och G-mätare ska in också.

Eftersom jag inte kan adressera som jag vill blir uppdateringen väldigt långsam.

Men just nu är det bara en ren labbkoppling på ett STK501 kort. PORTB är data och PORTC är kontrollbuss
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jag tänkte inte på *vad* du använder den till, utan *hur*
du kör den. Alltså programkod eller liknande... :-)

Spontant (utan att veta mer än det du har beskrivit) så gissar jag
att du gör något som inte följer databladet.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Välkommen till forumet, och håll oss uppdaterad om projektet!
Har själv en MegaSquirt som ska appliceras såsmåningom. ;)
Har själv ritat ihop ett litet kort med en 4x20 LCD-skärm, lite knappar och en serieport som jag tänkt kopplat till MS.
Har dock inte lämnat planeringsstadiet än. :)

Mvh
speakman
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg av Fagge »

Hur menar du med 0x10 och 0x30?.
Displayen har ju 7 vertikala adresser. 0 = högst upp & 7= längst ner, Menar du att du inte kan hoppa ner / upp till dom 3 första översta kolumnerna?.
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

Måste hålla med sodjan här, lite mer information om HUR du gör och kanske lite kod som man kan kolla på. Ger nog lite fler svar/förslag på ditt problem då.
Daniel Ahlin
Inlägg: 35
Blev medlem: 18 januari 2006, 21:36:14

Inlägg av Daniel Ahlin »

Aha, tyckte att själva projektet var ganska irrelevant för problemet.

Här kommer koden

void lcdWrite(char data,char rs, char rw, char cs)
{
PORTB=RST+cs+rs+rw;
_delay_loop_2(5);
PORTB=RST+E+rs+rw+cs;
PORTC=data;
_delay_loop_2(5);
PORTB=RST+cs+rs+rw;
_delay_loop_2(5);
}

void lcdOn()
{
lcdWrite(63,0,0,CHIP1);
lcdWrite(63,0,0,CHIP2);
}

void lcdSetStartLine(char startLine)
{
lcdWrite(192+startLine,0,0,CHIP1);
lcdWrite(192+startLine,0,0,CHIP2);
}


void lcdSetAdress(char row, char col)
{
lcdMemoryRow = row;
lcdMemoryCol = col;
if(col>=64)
{
col=col-64;
chip=CHIP2;
} else {
chip=CHIP1;
}
lcdWrite(184|row,0,0,chip);
lcdWrite(64|col,0,0,chip);
}

int main()
{
DDRB = 0xFF;
DDRC = 0xFF;
lcdOn();
lcdSetStartLine(0);
lcdSetAdress(0,20);
lcdWrite(0xFF,RS,0,chip) //chip är global och sätts i lcdSetAdress
return 0;
}


Men jag har även testat att bara skriva värdena mata ut instruktionerna direkt på portarna och det ger exakt samma problem.


Fagge, det är kolumner 64st som är problemet. Adresseringen 0-15(decimalt) funkar bra skriver man 16 så hamnar man på 48. Adresserar man däremot 48 så hamnar man på 48
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg av Fagge »

Aha du använder page adresseringen!?.
Men varför gör du det i så fall?, själv så använde jag dessa 8st kolumnerna "adresserna" & när jag skrev datat, så skrev man 8pixlar brätt med en gång!. Så varför krabba med page funktionerna & var är fördelen med dessa?. Har du simulerat din kod "funktionerna" i ks0108 simulatorn som finns på någon hemsida!?.
Daniel Ahlin
Inlägg: 35
Blev medlem: 18 januari 2006, 21:36:14

Inlägg av Daniel Ahlin »

Fagge: Vi har nog lite olika begepp i våra datablad.
Page adress i mitt datablad är mellan 0 och 7
Kolumnadress är mellan 0 och 63, den adressen stegas upp ett steg varje gång man skriver och det är den jag har problem med.
Använder man inte kolumnadresseingingen får man i värsta fall skriva 63byte till displayen för att ändra en pixel.
Eftersom jag bygger ett realtidssystem föredrar jag om det tar lika lång tid att skicka en byte till displayen oavsätt var den ska vara.
Vid varje uppdatering kommer det endast skilja ett fåtal byte så jag vill inte uppdatera hela displayen varje gång.
Användarvisningsbild
Fagge
Inlägg: 3930
Blev medlem: 27 maj 2003, 13:59:51
Ort: Blekinge

Inlägg av Fagge »

Ahhhh ursäkta mig, jag förväxlade rader & kolumner. :wall:
Så kör ju jag när det bara är ett par siffror som ska ändras & det funkar fint för mig!.
Har du simulerat dina signaler i den här simulatorn?.
http://www.geocities.com/dinceraydin/dj ... cdsim.html
Daniel Ahlin
Inlägg: 35
Blev medlem: 18 januari 2006, 21:36:14

Inlägg av Daniel Ahlin »

Det fungerar i simulatorn och det fungerar om man kör det från parallellporten i PC:n (samma mjukvara)
Skriv svar