Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

lcd_init() problemi

Başlatan Erol YILMAZ, 05 Haziran 2005, 04:03:18

Erol YILMAZ

Merhaba;
Bugun beni biraz ugrastiran bir konuda birseyler belirtmek istedim.
LCD.H kutuphanesinde lcd_init() fonksiyonu var. LCD kullanacaksak bu fonksiyonu kullaniyoruz. LCD sisteme bagli değil veya bozuksa bu fonksiyon sonsuz dongude kaliyor. dolayisiyla sistem kilitleniyor.
Alıntı Yapvoid lcd_send_byte( BYTE address, BYTE n ) {

     lcd.rs = 0;
     while ( bit_test(lcd_read_byte(),7) ) ;
     lcd.rs = address;
     delay_cycles(1);
     lcd.rw = 0;
     delay_cycles(1);
     lcd.enable = 0;
     lcd_send_nibble(n >> 4);
     lcd_send_nibble(n & 0xf);
}

Problem while dongusundeki lcd_read_byte fonksiyonundan kaynaklaniyor.

Alıntı YapBYTE lcd_read_byte() {
     BYTE low,high;
     set_tris_lcd(LCD_READ);
     lcd.rw = 1;
     delay_cycles(1);
     lcd.enable = 1;
     delay_cycles(1);
     high = lcd.data;
     lcd.enable = 0;
     delay_cycles(1);
     lcd.enable = 1;
     delay_us(1);
     low = lcd.data;
     lcd.enable = 0;
     set_tris_lcd(LCD_WRITE);
     return( (high<<4) | low);
}

Burada sadece 8 bitlik bir okuma yapiliyor fakat LCD bir sekilde ariza yaptiginda sisteminizde duracak manasina geliyor bu. Alternatif olarak
Alıntı YapBYTE lcd_read_byte()
{
delay_us(50);
return(0);
}
fonksiyonunu kullanabilirsiniz.

Ne gibi pozitif-negatif yonleri vardir, Tartisiriz...

Kolay gelsin...

z

LCD uzerindeki islemci, aldigi komutu her zaman, bastan ongordugunuz sure icinde cevaplamayi garanti ediyorsa neden olmasin.

Ama orjinal programda kucuk bir degisiklik yapip timeout suresi tanimlamak ve sure bitiminde lcd nin cevap vermedigini ima eden hata rutinine gitmek daha iyi olur.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com