18f452 grafik sorunu

Başlatan 707yunus, 13 Temmuz 2008, 20:43:17

707yunus

selam arkadaslar..
18fxxx serilerine yeni gectim ve 18f452 ile grafik lcd problemi var.programı derlerken hiç sorun olmuyor fakat proteusta hata veriyor..

#include <18f452.h>    
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000)

#include <HDM64GS12.c>
#include <graphics.c>  

void main ( )
{
  setup_spi(SPI_SS_DISABLED);    
  setup_timer_1(T1_DISABLED);    
  setup_timer_2(T2_DISABLED,0,1);
  setup_adc_ports(AN0);  
  setup_adc(adc_clock_div_2);    
  setup_CCP2(CCP_OFF);          

  glcd_init(ON);

  while(1)
  {

   glcd_line(0,0,127,0,ON);
  }
}


en basiti bir çizgiyi bile çizemedim  lütfen yardım edin

ahmet2004

#include <18f452.h> 
#device ADC=10 
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD 

#use delay (clock=4000000) 

#include <HDM64GS12.c> 
#include <graphics.c> 

void main ( ) 
{ 
setup_spi(SPI_SS_DISABLED); 
setup_timer_1(T1_DISABLED); 
setup_timer_2(T2_DISABLED,0,1); 
setup_adc_ports(AN0); 
setup_adc(adc_clock_div_2); 
setup_CCP2(CCP_OFF); 

glcd_init(ON); 

 while(1) 
 { 
   glcd_line(0,0,127,0,ON);
   glcd_line(1,1,127,64,ON);
 } 
}



707yunus

abi çok teşşekür edrim fakat şöyle bir sorun var.40 Mhz de çalıştıramıyorum ama 40 mhz de iken lcd frekansını smilasyonda 300Khz den 600Khz e çıkarınca çalısıyor.Gercek hayatta lcd frekansını böyle değiştirme imkanımız var mı?

iyonosfer

HDM64GS12.c ierisindeki
glcd_writeByte() ve glcd_readByte()  fonksiyonlarındaki
delay_cycles(1) ler yerine delay_cycles(5)
delay_cycles(5) ve (4)  ler yerine delay_cycles(10) değerlerini kullan olmazsa belli oranda yine artır düzelmesi lazım.
Blog Sayfam: www.teknobakis.com

707yunus

abi bide 18f452 de adc dönüşümü yapamıyorum.alfa nümerik lcd  kullanıp 40 mhz de adc okuyup lcd ye yazdırırken lcd hiç çalışmıyor.20 mhz e inince değerler yanlış oluyor 4 de inince doğru okuyor.adc_div32 yaptım olmadı div_2 yaptım yine olmadı acaba sorun isiste mi?

iyonosfer

ISIS'in verdiği sonuçların güvenirliği  %100 değil. Bence senin sorunun 40MHZ ile. Timingleri ayarlayamıyorsun gibi.
buraya yapıştırdığın kodda
#use delay(4000000) // 4 mhz yazıyor
#use delay(40000000) // şeklinde olmalı 40 mhz için
Blog Sayfam: www.teknobakis.com

707yunus

kesinlikle timingleri ayarlıyorum hem isis te hem ccs de .bakın simdi bile lcd yi 18f452 de 40 mhz de portb ye bağladım sadece karakter gönderirken bile lcd de tık yok.anlamadım gitti...

ahmet2004

O zaman kod ve şema ekle arkadaşlar incelesinler.

707yunus

#include <18f452.h>    
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=40000000)
#define use_portb_lcd TRUE
#include <lcd.c>
#use fast_io(b)
#use fast_io(c)
unsigned int16 i,j;

/********* ANA PROGRAM ********/

void main ( )
{
  setup_psp(PSP_DISABLED);      
  setup_spi(SPI_SS_DISABLED);    
  setup_timer_1(T1_DISABLED);    
  setup_timer_2(T2_DISABLED,0,1);
  setup_adc_ports(AN0);  
  setup_adc(adc_clock_div_32);            
  setup_CCP1(CCP_OFF);            
  setup_CCP2(CCP_OFF);          
 
  set_tris_b(0x00);
  set_tris_c(0x00);
  output_b(0x00);
   
  lcd_init();
  set_adc_channel(0);
  delay_us(20);
 

  while(1)
  {

 i=read_adc();
 lcd_gotoxy(1,1);
 printf(lcd_putc,"%4lu",i);
delay_ms(200);

printf(lcd_putc,"\nyunus");

  }
}

simdi bu programda 20 ve 4 mhzlerde yunus yazabiliyor ve sadece 4 mhzde analog güzel çalısıyor ama 40 mhz de lcd hiç çalışmıyor.bide 20 ve 40 mhz de analog çalısmıyor.sorun ccs mi yyoksa isis mi?illede 40 mhz mi olmalı diyorsanız evet ileriki programlarımda 40 mhz kullanmak zorundayım.

bilgisayardan smilasyon esnasında nasıl şema eklendiğini bilmediğim için ekleyemedim

iyonosfer

lcd driver kodlarındaki delay sürelerini 3 kat artırmayı denedin mi?
delay_cycles(1); yerine delay_cycles(3);
delay_us(2); yerine delay_us(6);
gib mesela
(lcd.c içerisindeki lcd_read_byte(), lcd_send_byte(), lcd_send_nibble() fonksiyonalrındaki süreler )
Blog Sayfam: www.teknobakis.com

707yunus

abi teşşekür edrim süpersin.......

iyonosfer

En baştan da aynı şeyi söylemiştikya neyse  ;)
Blog Sayfam: www.teknobakis.com

aykuto

Birşey dikkatimi çekti. CCS compile ederken nasıl davranır bilmiyorum ama 18 serisi bir pic'i 40 MHz çalıştırmak için 10 MHz kristal bağlayıp FUSE kısmında da H4 (4x PLL) tanımlamanız gerekir diye biliyorum.

pcb

arkadaşlar glcd de adc ile okunan değeri ekrana nasıl yazdırıyoruz ?
printf(lcd_putc,"%4lu",i); bu normal lcd ler için herhalde, glcd nasıl ?