Grafisk display med t6963 styrchip

Lysdioder, Optiska sensorer, Fiberoptik, Displayer, Lasrar, Optiska kopplare
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Grafisk display med t6963 styrchip

Inlägg av mullemeck »

Hej!

Sitter och försöker få liv i en DMF5005N display, 240x64 pixlars grafisk display.
Styrchipet är t6963 och den styrande processonr en mega32

När displayen startas blir den helt svart, trots många försök har jag inte lyckats få den att reagera, är ganska säker på att
jag skickar rätt kommando för att initiera den och skriva till den. Då återstår bara mina rutiner för att skicka data och kommandon till den.

i nuläget ser de ut som följande

Kod: Markera allt

oid senddata(uint8_t data){
	while(((getstatus() & 0x3)) != 0x3);
	// Dataport output
	DATADDR = 0xff;
	CTRPORT = _BV(WR)|_BV(RD)|_BV(CE)|_BV(RST);
	delay(100);
	DATAPORT = data;
	delay(100);
	CTRPORT &= ~(_BV(CE)|_BV(WR));
	delay(100);
	CTRPORT |= (_BV(CE)|_BV(WR));
}

void sendcommand(uint8_t command){
	while(((getstatus() & 0x3)) != 0x3);
	// Dataport output
	DATADDR = 0xff;
	CTRPORT = _BV(WR)|_BV(RD)|_BV(CE)|_BV(RST)|_BV(CD);
	delay(100);
	DATAPORT = command;
	delay(100);
	CTRPORT &= ~(_BV(CE)|_BV(WR));
	delay(100);
	CTRPORT |= (_BV(CE)|_BV(WR));
	
}
Status check verkar funka för den kommer förbi det steget med tillåten statuskod.
CTRPORT är definerad till PORTA , DATAPORT till PORTC osv.
Delay rutinen väntar i ca 0,5ms

Nån som har några tips och ideer?

datablad för displayen
http://www.gaw.ru/pdf/lcd/lcm/Optrex/graf/5005aae.pdf
Omfatande pdf om hur man ska styra den
http://www.optrex.com/pdf/Dmf5000_full.pdf
datablad för styrchippet
http://www.lll.lu/~edward/edward/mcs51/t6963/t6963c.pdf

/mullemeck
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jag har fungerande kod till PIC som "ritar" denna bild :

Bild

http://www.tradera.com/auction/aid_31443398

Jag kan skicka den om det är intressant (zippad ASM fil)..

Rent spontant så ser din kod väldigt liten ut, det var en hel
del inställningar som skulle göras innan det kommer något
på skärmen...

Jag använde PDF'erna här : http://www.skippari.net/lcd/t6963c_data.html

Slutligen är det dåligt att posta så risigt kommenterad kod !
Vad är det du *TROR* att din kod gör ??
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

Hej!

Ber om ursäkt för den dåligt kommenterade koden dålig vana jag har att aldrig kommentera.
Ja självklart behövs det mer initieringskod men den använder ju dessa två funktioner för att skicka data och commando.

Hade varit snällt ifall du hade velat skicka den, är dock inte flytande i pic assembler men kan nog läsa ut en del.
email: mullemeck@gmail.com

Postar hela init koden jag kör, med mer kommentarer denna gången :roll:

Kod: Markera allt

void lcd_init(){
	
	DATADDR = 0;				                                                        		//set pins Input
	DATAPORT = 0;
	CTRDDR = _BV(WR)|_BV(RD)|_BV(CE)|_BV(CD)|_BV(RST);	     // Set control pins to output
	CTRPORT = _BV(WR)|_BV(RD)|_BV(CE)|_BV(CD)|_BV(RST); 	   //all hitgh
	
	// Puls reset
	CTRPORT &= ~_BV(RST);				                                        	// pull reset low
	delay_ms(100);						                                        	// wait
	CTRPORT |= _BV(RST);				                                        		// set reset high
	delay_ms(10);						                                        	// wait

	sendcommand(0x81); 				                                        		//send or mode
	senddata(0x00);						                                        	//
	senddata(0x00);					                                        		//
	sendcommand(0x42); 				                                        		//send 0x0000 as graphics home
	senddata(0x1E);					                                        		//
	senddata(0x00);						                                        	//
	sendcommand(0x43); 					                                        	//send 0x001E as graphics area
	sendcommand(0x98);			                                        			//Send graphic on 

}
uint8_t getstatus(){
	static uint8_t tmp;
	DATADDR = 0;					                                        		//Dataport to input
	CTRPORT = (_BV(WR)|_BV(CD)|_BV(RST)|_BV(CE));		// Set WR, CD,Rst and CE high. RW low
	delay(500);						                                        	// Wait a while
	CTRPORT &= ~(_BV(CE));			                                        			// set Ce low
	delay(5000);						                                        	// wait a while
	tmp = DATAPIN;						                                        	// Read dataport
	CTRPORT |= (_BV(CE));			                                        			// CE high
	return tmp;							                                        // return value
}

void senddata(uint8_t data){
	while(((getstatus() & 0x3)) != 0x3);	// check status
	DATADDR = 0xff;				// set dataport to output
	DATAPORT = data;			// Set data on port
	CTRPORT = _BV(RD)|_BV(CE)|_BV(RST);	// set RD, CE and RST high, CD and WR low
	delay(100);				// Wait a while
	CTRPORT &= ~(_BV(CE));			// set CE low
	delay(100);				// wait a while
	CTRPORT |= _BV(CE);			// set ce high
	DATADDR = 0x00;				// reset dataport to input
}

void sendcommand(uint8_t command){
	while(((getstatus() & 0x3)) != 0x3);	// Check status
	DATADDR = 0xff;				// Dataport output
	DATAPORT = command;			// set data on port
	CTRPORT = _BV(RD)|_BV(CE)|_BV(RST)|_BV(CD); // set RD, CE , CD and RST high, WR low
	delay(100);				// Wait a while
	CTRPORT &= ~(_BV(CE));			// set CE low
	delay(100);				// wait a while
	CTRPORT |= (_BV(CE));			// set CE high
	DATADDR = 0x00;				// Reset dataport to input
}
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK.
Kod mailat.
Jag vt inte hur mycket det hjälper, den är inte "uppstädad", och den skrevs
med PDF filerna från sidan jag länkade till i ena handen... :-)

En annan detalj är att eftersom man alltid läser status-flaggan från LCDn
så behöver man i princip inga extra delays.

Sen ser jagt inget i din kod som faktiskt skriver något till LCD ?
Jag ser bara initieringen. Vad är det du förväntar dig ska hända ?
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

Det jag förväntar mig är att det ska visas en massa skräp från ram-minnet på displayen. I pdfen du länkade till står det så ialla fall.
Har även försökt skriva en del till adress 0 i minnet men inget händer på displayen.

Har tyvärr inte tillgång till nåt oscilloskop där jag sitter nu så kan inte riktigt kolla att alla pinnar gör som jag tror de gör, har dubbelkollat kopplingarna och mätt över alla sladdar.

Ska granska din kod och se om jag hittar nått jag glömt göra.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK, jag minns inte hur min såg ut, men det kanske var något skräp där...

Det är nog bara "klassisk" felsökning som gäller... :-)
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

Äntligen hittat det lilla felet som ställt till med allt, det var inte koden utan hårdvaran. Hade glömt stänga av Jtag pinnen på min mega32 så en av mina datapinnar var låg hela tiden.

Sånt litet störigt fel som man alltid glömmer.
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Skriva asm utan att kommentera..... Då måtte man ha extremt bra minne... Jag brukar glömma vad jag gjorde i början av programmet innan jag har skrivit klart det..... ;)
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

jobbiga är ju att det är en fuse-bit man ska ändra för att stänga av jtagen, minns jag nån gång tidigare suttit många timmar med exakt samma fel.
Skriv svar