eeprom problemi !

Başlatan HeCToR, 15 Eylül 2015, 22:12:04

HeCToR

Merhaba Arkadaşlar Fan Hızını ayarlamam için 10 kademem var örnek veriyorum 1. kademede %10 duty 2.kademede %20 duty ile çalışsın istiyorum şimdi asıl sorun kademeleri eeproma yazdırabiliyorum ama duty eeproma yazdıramıyorum 1.kademede %10 duty iken enerji kesip tekrar açtığımda %10 duty pwm sinyalim devam etsin istiyorum nerede hata yapıyorum anlamadım Saygılar.
unsigned int duty,level,okunan;


#define UP_BUTON   PIN_A2
#define DOWN_BUTON PIN_A1
#define SET_BUTON  PIN_A0
#define SPEED_PWM  PIN_C2


void main()
{
   set_tris_a(0b00000111);  
   set_tris_d(0b00000000);  
   set_tris_c(0b00000000);
   lcd_init();        



setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_16,255,1);
set_pwm1_duty(duty);


while(TRUE)
{
   
    okunan=read_eeprom(16); 
     
   if(okunan)
   {
         
      write_eeprom(0,0);
      write_eeprom(1,0);
      write_eeprom(2,0);
      write_eeprom(16,0);
      
   }
  
      lcd_gotoxy(5,1); 
      printf(lcd_putc,"FAN SPEED"); 
       
      level=read_eeprom(0); 
      duty=read_eeprom(1); 
     
      lcd_gotoxy(11,2);  
      printf(lcd_putc,"%d",level);
      lcd_gotoxy(6,2);  
      printf(lcd_putc,"LEVEL"); 
    
      
      
if(!input(UP_BUTON)==1)
{
while(!input(UP_BUTON)==1); 
lcd_init(); 
         
level++;  


if(level>10)
{
level=10;
}


if(level==1)
duty=10;
set_pwm1_duty(duty);
 
write_eeprom(1,duty);      
write_eeprom(0,level); 
}  

    
else if(!input(DOWN_BUTON)==1)
{
while(!input(DOWN_BUTON)==1);
lcd_init();

level--;

           
if(level<1)
{
level=1;
}

if(level==1)
duty=10;
set_pwm1_duty(duty);

write_eeprom(1,duty);
write_eeprom(0,level);


}
}
}
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

fatih6761

Alıntı yapılan: CORTEX - 15 Eylül 2015, 22:12:04
while(TRUE)
{
    okunan=read_eeprom(16); 
     
   if(okunan)
   {
         
      write_eeprom(0,0);
      write_eeprom(1,0);
      write_eeprom(2,0);
      write_eeprom(16,0);
      
   }

Hocam burada sanırım program ilk çalıştığında eeproma öntanımlı değeri yazmak istediniz ama "if (okunan)" değil "if (okunan == 0)" olması gerekiyor.

HeCToR

@fatih6761 Denedim hocam problem oradan değil normalde 255. adreste saklıyor verileri okunan 0 yaptığımızda bütün değerlerimiz tekrar sıfırlanıyor.
LEVEL'ları eeprom yazabiliyor duty neden yazmıyor
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

selimkoc

10 elemanlı bir dizi oluşturup ona göre eeproma yazarsanız daha kolay olur. örnek duty[0]=0xAA, olsun 0xAA yı 0x00 adresine yazarsanız okurken de kolaylık olur.

HeCToR

@selimkoc Hocam teşekkürler oda bir yöntem ama buradaki problem nedir ters yada yanlış olan durum nedir
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

sadogan

#5
Duty eeproma yazılmadığını nasıl tesbit ediyorsun,bence eeproma yazılıyor.
Söyle bir yöntem deneyebilrmisin
Duty 1 saniyede bir artir eeproma yaz sonra baska bir degişkene, duty i yazdığın adresten okuyup bu değişkeni
lcd de göster aynı artışı bu değişkende görmezsen yazamıyorsun demektir.
not:Söyle bir hata olmuş olabilir
duty 1 nolu adrese sürekkli yazdıysan eepromun o adresi ölmüş olabilir.

HeCToR

#6
@sadogan Hocam İsis simülasyonun yanıltma ihtimali olabilirmi
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

sadogan

Isıs te eeprom yazılanlar similasyonda eger bir dosyada tutulmuyorsa olabilir.
Bü tür testleri kesinlikle geçek donanım üzreinde yapmanı tavsiye ederim.
Özelikle button role gibi mekanik parcaların oldugu devrelerde Isıs her şeyi mükemmel
kabul ediyor.

HeCToR

@sadogan Hocam teşekkürler pcbler gelsin üzerinde bakalım test ettikten sonra durumu açıklarım
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

RaMu

#9
Isis de Pice .cof dosyasını yükle,
simulasyonu çalıştırmak için pause tuşuna bas (  || )
yazdığın kodlar çıkacak, adım adım çalıştırabilirsin,
adım adım çalıştırma esnasında
isisde yukarıdaki Debug menüsünden > pic cpu >  EPROM Memory
kısmını seçersen picin eeprom unu gösterir.

Birde isis her çalıştığında eeprom sıfırdan başlasın veya
eski değerinden devam etsin gibi bir seçenek vardı yanlış hatırlamıyorsam.


"Isis pic debug" için nette detaylı videolarda var.

mesaj birleştirme:: 15 Eylül 2015, 23:30:09

Arapça herhalde ama izleyince anlaşılıyor zaten,
https://vimeo.com/16097901
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

HeCToR

@RaMu Hocam Teşekkürler anlattığınız şekil doğru zaten biraz inceledim videoyu izleyip detaylı bakacağım
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir