[ Seme @ 16.05.2008. 12:54 ] @
Da li je neko uspeo da podesi lcd.c fajl u CCS C - u tako da moze da ga koristi sa easyPIC5 razvojnim sistemom. Uporno pokusavam da ga podesim i ne polazi mi za rukom, pa rekoh da pre nego sto pocnem da pisem sam dajver, pitam da li je neko to uradio i kako. Hvala na odgovoru.
[ sander @ 17.05.2008. 06:27 ] @
Nemam semu vezivanja lcd-a na toj ploci ali mislim da ti je glavni razlog taj sto drajver u CCS-su koristi i RW pin i ima dvosmeru komunikaciju sa LCD-om. Ako se na demo ploci ne koristi RW pin potrebno je drajver prepraviti tako sto ce se umesto cekanja da LCD posalje signal da je slobodan za sledeci podatak, unese odgovarajuce kasnjenje pa slanje novog podatka. Takodje je potrebno obratiti paznju na definiciju pinova za povezivanje LCD-a (potrebno je promeniti strukturu lcd_pin_map).
[ Seme @ 17.05.2008. 09:04 ] @
Hvala kolega probacu pa cu da se javim sa rezultatima.
[ _str_ @ 17.05.2008. 19:41 ] @
I ja sam imao slicnih problema ali sa EasyARM i na kraju se ispostavilo da 3 izlazna pina na mcu nisu radila, pnp izlazi medju kojima je bio i E signal. Dodao sam 3 otpornika od 820r prema + i resio problem.
Pokusaj ubaciti led.hex iz primera, pa posmotri dali ima neki wtf.
[ Seme @ 17.05.2008. 21:03 ] @
Primer koji su mi oni poslali radi tako da je sa kontrolerom sve u redu. Probacu sutra da napisem sam fajl pa cemo da vidimo.
[ sander @ 17.05.2008. 21:21 ] @
Evo ti deo koda koji sam prepravio da radi sa mojim uredjajem:

struct lcd_pin_map { // This structure is overlayed
int unused : 4; // B0-B3 unused
int data : 4; // B4-B7 LCD.DATA
BOOLEAN rs; // C0 - RS
BOOLEAN enable; // C1 - EN.
BOOLEAN unused2; // C2 unused
BOOLEAN unused; // C3 unused
int unused4 : 4; // C4-C7 unused
} lcd;

#locate lcd = 6

#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines
#define lcd_line_two 0x40 // LCD RAM address for the second line


BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
// These bytes need to be sent to the LCD
// to start it up.

void lcd_send_nibble( BYTE n ) {
lcd.data = n;
delay_cycles(1);
lcd.enable = 1;
delay_us(2);
lcd.enable = 0;
}


void lcd_send_byte( BYTE address, BYTE n ) {

set_tris_lcd(0);
lcd.rs = address;
delay_cycles(1);
lcd.enable = 0;
lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
set_tris_lcd(0xf);
}


void lcd_init() {
BYTE i;
set_tris_lcd(0);
lcd.rs = 0;
lcd.enable = 0;
delay_ms(15);
for(i=1;i<=3;++i) {
lcd_send_nibble(3);
delay_ms(5);
}
lcd_send_nibble(2);
for(i=0;i<=3;++i)
lcd_send_byte(0,LCD_INIT_STRING);
}


void lcd_gotoxy( BYTE x, BYTE y) {
BYTE address;

if(y!=1)
address=lcd_line_two;
else
address=0;
address+=x-1;
lcd_send_byte(0,0x80|address);
}

void lcd_putc( char c) {
switch (c) {
case '\f' : lcd_send_byte(0,1);
delay_ms(2);
break;
case '\n' : lcd_gotoxy(1,2); break;
case '\b' : lcd_send_byte(0,0x10); break;
default : lcd_send_byte(1,c); break;
}
}


[ Seme @ 18.05.2008. 11:22 ] @
Bio si u pravu u pitanju je to sto je kod mene RB4 - enable RB5 - rs a RB0 - RB3 data, pin rw je konstatno na masi tako da na displej moze samo da se pise. Hvala za kod. Pozdrav
[ Seme @ 19.05.2008. 08:14 ] @
Resio sam problem. sander hvala na kodu mnogo mi je pomogo. U prilogu saljem kod pa ko ima iste problem neka pogleda. Hvala jos jednom svima na saradnji.