pic12f510 çıkış alamıyorum

Başlatan mcokan89, 15 Kasım 2016, 23:47:40

mcokan89

#include <polis çakar5.h>

void main()
{

set_tris_b(0x00);
output_b(0x00);

   while(TRUE)
   {
      output_high(pin_b1);
      delay_ms(1000);
      output_low(pin_b1);
      delay_ms(1000);
       output_high(pin_b1);
      delay_ms(1000);
      output_low(pin_b1);
      delay_ms(1000);
       output_high(pin_b1);
      delay_ms(1000);
      output_low(pin_b1);
      delay_ms(1000);
     
     
      output_high(pin_b0);
      delay_ms(1000);
      output_low(pin_b0);
      delay_ms(1000);
       output_high(pin_b0);
      delay_ms(1000);
      output_low(pin_b0);
      delay_ms(1000);
       output_high(pin_b0);
      delay_ms(1000);
      output_low(pin_b0);
      delay_ms(1000);
   }

}

ben nerede yanlış yapıyorum pic12f510i var elimde polis çakar devresi yapıyorum çalışmıyor simülasyonda ve devre üzerinde bilen biri varsa yardımcı olabilirmi neden çıkış alamadığımı söyleyebilir mi

İlyas KAYA

polis çakar5.h

dosyasının içeriğini de eklermisin. Büyük ihtimal sigorta ayarları ile ilgili bir durum. MCLR iptal etmemiş olabilirsin.
Ayrıca dosya isimlerinde türkçe karakter kullanmayın.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Atilla

output_high(pin_b1); PortB.1 = 1 yapıyor ama pic12f510 da PortB yok GPio var. Bundan dolayı çıkış alamıyor olabilirsin.

İlyas KAYA

CCS C de gpio diye geçmiyor. Normalde yazmaçlar gpio ancak ccs c de Portb olarak geçiyor. Yüksek ihtimal sigorta sorunu.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

gokhangokcen

Konu açılalı uzun süreç olmuş ama yinede şansımı denemek istedim. CCS C ile 12F510 kullanmaya çalışıyorum. İlk kez bu işlemci ile çalışıyorum. İsis üzerinde yazdığım kod çalışıyor. Ama reelde işlemciye program atamıyorum hatalar veriyor ve çalışmıyor. Dikkat etmem gereken konu neresidir? Yazdığım sigorta ayarları şu şekilde;


#FUSES NOMCLR,INTRC,NOPROTECT,IOSC4

#use delay(internal=4000000)


İlyas KAYA

Alıntı yapılan: gokhangokcen - 08 Nisan 2018, 11:06:27
Konu açılalı uzun süreç olmuş ama yinede şansımı denemek istedim. CCS C ile 12F510 kullanmaya çalışıyorum. İlk kez bu işlemci ile çalışıyorum. İsis üzerinde yazdığım kod çalışıyor. Ama reelde işlemciye program atamıyorum hatalar veriyor ve çalışmıyor. Dikkat etmem gereken konu neresidir? Yazdığım sigorta ayarları şu şekilde;


#FUSES NOMCLR,INTRC,NOPROTECT,IOSC4

#use delay(internal=4000000)


Hiç kullanmadığım bir mcu.
Adcon0 adcon1 cmcon0 cmcon1 ,ansel vb registerleri programında ayarladın mi ? Osilatör seçimini bazen 4 mhz seçmiş olsanız da osccon register ile yeniden set etmek gerekiyor.

Siz data sheet ini güzelce inceleyin. Registerleri kontrol edin.  Lokal de Internetim olmadığı için telefondan rahat bakamıyorum
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

gokhangokcen


#include <12F510.h>

#FUSES NOMCLR,INTRC,NOPROTECT                   //Master Clear pin used for I/O
#FUSES IOSC4

#use delay(internal=4000000)



#use fast_io(b)




void main()
{
   set_tris_b(0x00);
   output_b(0x00);
   setup_adc_ports(ADC_OFF);
   setup_comparator(NC_NC_NC_NC);


   for(;;)
   {
   
   set_tris_b(0b11111100);
   
   output_high(pin_b0);
   output_low(pin_b1);
   delay_ms(500);
   output_high(pin_b1);
   output_low(pin_b0);
   delay_ms(500);
   
   set_tris_b(0b11111001);
   
   output_high(pin_b1);
   output_low(pin_b2);
   delay_ms(500);
   output_low(pin_b1);
   output_high(pin_b2);
   delay_ms(500);
   
   set_tris_b(0b11100011);
   
   output_high(pin_b2);
   output_low(pin_b4);
   delay_ms(500);
   output_high(pin_b4);
   output_low(pin_b2);
   delay_ms(500);

   set_tris_b(0b11111010);
   
   output_high(pin_b0);
   output_low(pin_b2);
   delay_ms(500);
   output_low(pin_b0);
   output_high(pin_b2);
   delay_ms(500);
   
   set_tris_b(0b11100101);
   
   output_high(pin_b1);
   output_low(pin_b4);
   delay_ms(500);
   output_low(pin_b1);
   output_high(pin_b4);
   delay_ms(500);
   

   
   set_tris_b(0b11100110);
   
   output_high(pin_b0);
   output_low(pin_b4);
   delay_ms(500);
   output_low(pin_b0);
   output_high(pin_b4);
   delay_ms(500);
   






   }


}



Kodun tamamı burada üstad. Datasheette "Location 03FFh contains the internal clock oscillator calibration value. This value should never be overwritten." bir ibare var. 03FF adresine asla bir veri yazmayın diye algıladım. Acaba doğru mu anladım? Eğer bu şekilde ise ccs ile bu adresi nasıl koruyabilirim?

İlyas KAYA

Evet doğru anlamışsınız. Eğer oradaki değer silindi ise pic ya çalışmaz yada hatalı çalışır. Pickit2 niz varsa takıp yeniden o değeri verdirip hayata döndürebilirsiniz.
Pic basic de define_osccal 1k1 diye bir komut ile bunu kolayca yapabilirsin ama ccs c ile hiç deneme fırsatım olmadi malesef.
Genelde pickit2 yada pickit 3 bunu otomatik yapıyor yada sizi uyarıyor.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

gokhangokcen

Elimde Biopic isminde bir programlayıcı var işlemciyi takıp tanıtmak istediğimde oscall değeri diye bir şeyi otomatikman okuyor. Sonrasında ise nooscall gibi bir hata veriyor default -1 yazıyor ekranda muhtemelen dediğiniz gibi otomatik ön yükleme yapıyor ve sonra programla birlikte yazıyor. Ama yinede işlemciyi çalıştıramadım. Bilen bir arkadaş varsa detaylıca anlatsa çok güzel olur aslında. Elimde 5 ad pic vardı. 3 tanesini heba ettim. Kalan 2 tanesi ile bu işi çözmem lazım riske atmak istemiyorum o yüzden... iyi günler dilerim cümleten.

mg1980

Bendeki programlayıcı farklı..sizdeki ile benzer tarafı belki vardır diye yazıyorum.12F675 ve 12F629 kullanırken benzer sorunlar yaşadım. Programlayıcı menülerinden OSCAL değerini okuma butonu varsa çip takılı iken önce onu okutun ve bir yere yazın..Programınıza ait hex.kodunu programlayıcıya yüklediğinizde aynı menü butonları yanında bu koda ilave edilip edilmemesini sorar onu onaylayın..Sigorta ayarlarını yapıp yükleyin..Sonra çipi okutun..Son adreste not aldığınız OSCAL değeri görünüyorsa çalışması gerekir.

ete

#10
Belliki Osccal değeri silinmiş. Yapılacak tek şey yeniden Osccal değeri oluşturmak.
Osc kalibrasyon değeri program hafızası son adresine yazılan işlemcilerde silme yazma işlerine dikkat  etmek gerekiyor edilmez ise osccal değeri siliniyor ve işlemcide bu değer olmadan çalışamıyor.
Çözüm pickit2 programlayıcı bulmakta. Yada yeni yani sıfır işlemci bulmakta.
Ete

Powered by EzPortal