PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AT90CAN mit T6963C Display Controller läuft nicht.



LC-HC
02.06.2006, 17:38
Hi, auch nach langem suchen hab ich nichts gefunden, das mir bei meinem
problem hilft, daher ein weiterer post.
Ich habe die Display implementierung in ein modul gepackt:


/*
240 x 180 LCD "lcd.c"
*/


#include <avr/io.h>
#include <util/delay.h>
#include "lcd.h"


// P R O T O T Y P E N
void lcd_init(void);
void lcd_putc(char sign);
void lcd_data(void);
void lcd_commando(void);
void lcd_reset(void);
void lcd_status(void);
void lcd_clear_ram(void);
void lcd_clear(void);


// G L O B A L E V A R I A B L E N
uint8_t LCD_DATA;
uint8_t LCD_CMD;
uint8_t LCD_STATUS;


void lcd_init(void)
{

//LCD Reset
lcd_reset();

// Adress Pointer setzen (0x0000)
LCD_DATA = 0x23;
lcd_data();
LCD_DATA = 0x01;
lcd_data();
LCD_CMD = 0x24;
lcd_commando();

//TEXT HOME ADDRESS
LCD_DATA = 0x00;
lcd_data();
LCD_DATA = 0x00;
lcd_data();
LCD_CMD = 0x40;
lcd_commando();

// GRAPHIC HOME ADDRESS
LCD_DATA = 0x02;
lcd_data();
LCD_DATA = 0x00;
lcd_data();
LCD_CMD = 0x42;
lcd_commando();

//TEXT AREA
LCD_DATA = 0x14;
lcd_data();
LCD_DATA = 0x00;
lcd_data();
LCD_CMD = 0x41;
lcd_commando();

//GRAPHIC AREA
LCD_DATA = 0x14;
lcd_data();
LCD_DATA = 0x00;
lcd_data();
LCD_CMD = 0x43;
lcd_commando();

// Offset Pointer setzen
LCD_DATA = 0x02;
lcd_data();
LCD_DATA = 0x00;
lcd_data();
LCD_CMD = 0x22;
lcd_commando();

//DISPLAY MODE
//0x97 is the appropriate commando (text, cursor blink)
LCD_CMD = 0x9C;
lcd_commando();
//MODE SET
LCD_CMD = 0x80;
lcd_commando();

//CURSOR_DEFINIEREN
//2 line cursor:
LCD_CMD = 0xA2;
lcd_commando();

//CURSOR POINTER SETZEN
LCD_DATA = 0x00;
lcd_data();
LCD_DATA = 0x00;
lcd_data();
LCD_CMD = 0x21;
lcd_commando();


}




void lcd_reset(void)
{
ENABLE_RESET;
_delay_us(10);
// pull RST up
DISABLE_RESET;
}




void lcd_commando(void)
{
//wait until proper status is available
do
{
lcd_status();
}
while (LCD_STATUS != MASK_1);

//set config for commando
WRITE_PORTA;
WRITE_PORTB;
ENABLE_COMMANDO;
ENABLE_WRITE;
DISABLE_READ;

// make COMANDO available on DATAPORT
PORTA = LCD_CMD;

CHIP_ENABLE;
_delay_us(DELAY_DATA_COMMAND);
CHIP_DISABLE;
}




void lcd_data(void)
{
//wait until proper status is available
do
{
lcd_status();
}
while (LCD_STATUS != MASK_1);

//set config for data
WRITE_PORTA;
WRITE_PORTB;
ENABLE_DATA;
ENABLE_WRITE;
DISABLE_READ;

// make DATA available on DATAPORT
PORTA = LCD_DATA;

CHIP_ENABLE;
_delay_us(DELAY_DATA_COMMAND);
CHIP_DISABLE;
}




void lcd_status(void)
{
//make porta input to read
READ_PORTA;
WRITE_PORTB;

// prepare controllines according to POWERTIP Datasheet
ENABLE_READ;
DISABLE_WRITE;

//chip enable
CHIP_ENABLE;

//portb sends commando
ENABLE_COMMANDO;
_delay_us(1);

//save status from port to var
LCD_STATUS = PINA;
CHIP_DISABLE;

DISABLE_READ;

LCD_STATUS &= (0x03);
}



void lcd_putc(char sign)
{
LCD_DATA = sign - 0x20;
lcd_data();
LCD_CMD = 0xC0;
lcd_commando();
}

nur leider bekomme ich auf dem Display nichts außer
hyroglyphen, regelmäßige streifen oder einfach garnichts zu sehen.
Das Display ist ein Powertip 240 x 128 Pixel Display.
Kann mir da jemand helfen ? Was mach ich falsch ?