Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: Yeniüye1234 - 31 Aralık 2021, 11:04:25

Başlık: 12F629 OSSCAL osilatör hatası
Gönderen: Yeniüye1234 - 31 Aralık 2021, 11:04:25
Arkadaşlar selamlar. 12f629' a PICkit3 ile program yazdırmak istediğimde OSCCAL hatası veriyor. Bunu nasıl düzeltebilirim? Aynı hatayı alıp yapan biri yol gösterirse sevinirim.
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: sifirzero - 31 Aralık 2021, 15:10:43
Kardesim galiba yanlislikla ters voltaj vermissin
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: ete - 31 Aralık 2021, 15:34:05
12F675 ve 12F629 da fabrikasyon dahili osilatör kalibrasyon değeri program hafızasının en son adresine yazılıp satışa sunuluyor. İşlemciyi programladığınız zaman şayet silme komutu ile (Erease) işlemci içindeki programı silerseniz bu kalibrasyon ayarıda silinip işlemciyi çalışmaz duruma getirir. O işlemcinin tekrar çalışır duruma gelmesi için kalibrasyon değerinin yeniden bulunup ilgili adresine yazılması gerekir. Bu işlemi Pickit2 programlayıcıları yapabiliyor. Elinizde var ise yaptırabilirsiniz.
Yok ise kafadan atma bir değerle en azından işlemciyi çalıştırabilirsiniz. Bunun içinde programı işlemciye yükledikten sonra en son adrese $3F34 veya $3F48 gibi bir değer yazıp sonra programlayınız.

Elinizde basit bir frekansmetre var ise onunla da kendiniz yapabilirsiniz aslında bu işi.
Config ayarlarından INT OSC CLOCKOUT on GP4 seçilerek programda OSCCAL registerine önce rasgele bir değer verip frekansmetreyi GP4 pinine bağlayarak çıkan frekansı ölçmek gerekir. 1Mhz (Fosc/4) frekansı yakalayana kadar değerleri butonlarla değiştirip OSCCAL registerine yazmak ve GP4 den sonuca bakmak gerekir. Ensonda kalibrasyon değeri ne ise onu son adrese yazmak işlemciyi kurtarmak için yeterli olacaktır.

Ete
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: Yeniüye1234 - 31 Aralık 2021, 17:52:10
Hocam cevaplarınız için çok teşekkür ederim. Program yükledim ancak deneme amaçlı dahili osilatör ile led yan sön uygulaması yaptım ancak sadece yanıyor sönmüyor :)

#include <12f629.h>
#fuses INTRC,NOWDT,NOPROTECT,NOCPD,NOPUT,NOMCLR,NOBROWNOUT
#use delay (internal=4000000)
#use fast_io(a)                                                       
                                                       
void main ( )


          setup_timer_1(T1_DISABLED) ;
        setup_vref (FALSE);
    setup_comparator(A0_A1_OUT_ON_A2);
 
  set_tris_a (0b11111011);
 
  while (1)
  {
      output_toggle(pin_a2);
    delay_ms(100);
  }
}
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: ete - 31 Aralık 2021, 20:58:08
Led yanıyor ve sönmüyor ise osc frekansı çok düşük kalmış demektir. Şimdiye kadar çalıştığım 675 işlemcilerde genelde oscal değeri $34 değeri ile $38 aralığında değerler gördüm. Bu değeri son adrese yazabilirseniz işiniz görülür.
Ete
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: Yeniüye1234 - 31 Aralık 2021, 21:22:36
Hocam PIC'in osccal değerini 3428 olarak gördüm ve sorunsuz şekilde program yüklendi. PIC' e yüklediğim kodu paylaştım. dahili osilatör frekansı 4 MHZ olarak seçtim.  Ancak led yanıp duruyor hiç sönmüyor : ) .Benzer bir durumu 18F4550 de de yaşıyorum. 18F4550 de dahili osilatör seçiliyken, programda yazdığım zaman gecikmesinin 3 katı bir zaman gecikmesi oluyor. sıfırzero hocamda baktı kodda bir hata yok dedi. #use delay (internal=8000000) komutunda internal yerine clock ta yazdım yine olmuyor. aşağıdaki kod da ledi 3 saniye yakıyor, 3 saniye sönük tutuyor.  onun da kodu:
  #include <18f4550.h>
#FUSES INTRC_IO, NOWDT, NOPROTECT, NOBROWNOUT, NOPUT, NOCPD, STVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, IESO, FCMEN, NOPBADEN, NOWRTC, NOWRTB, NOEBTR, NOEBTRB, NOCPB, NOMCLR, NOXINST
#use delay (internal=8000000)
#use fast_io(b)

void main ( )
{
        setup_timer_0 (T0_OFF);
        setup_timer_1(T1_DISABLED) ;
        setup_timer_2 (T2_DISABLED,0,1) ; 
        setup_timer_3(T3_DISABLED) ;
        setup_CCP1 (CCP_OFF) ;       
        setup_CCP2 (CCP_OFF) ;       
        setup_adc_ports (NO_ANALOGS);  // analog girişler iptal edilerek dijital yapıldı.
        setup_adc (ADC_OFF|ADC_TAD_MUL_0);
        setup_psp (PSP_DISABLED);
        setup_spi (SPI_SS_DISABLED);
        setup_wdt (WDT_OFF);
        setup_comparator (NC_NC_NC_NC);
        setup_vref (FALSE);
        setup_oscillator (OSC_8MHZ);

  set_tris_b (0b01011111);
   
    while (1)
      {
     
    output_toggle(pin_b5);
    delay_ms(1000);
      }
}
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: ete - 01 Ocak 2022, 13:52:30
Ne yazıkki C bilgim çok fazla değil. Ben Basic çalışırım. Yazdığın kodun aynısını Basic de yapıp simulasyonda deniyorum sorunsuz çalışıyor gözüküyor.

Kullanılan kapsamlı bir işlemci ve bazı özelliklerine dikkat etmek gerekiyor. Biliyorum C dilinde pek çok şey otomatiğe bağlanmış ama acaba aşağıdakiler uygulanmışmıdır. Hemen belirteyim benim programa bunları uyguladım.
- Bu işlemcinin dahili osc ile çalışması için sigorta aayrlarında _FOSC_INTOSC_HS_1H seçilmesi gerekir bu 8 ve Üzeri frekanslar için gerekli olan bir seçimdir.
- Yine dahili OSC de 8 Mhz seçeneğinin aktive edilmesi gerekir ki bunuda OSCCON registeri yapar ve bu registere OSCCON=%01110010 değerini verdim.
- Yine bu işlemcide giriş pinleri PORTX registeri ile ama çıkış pinleri de LATX registeri ile kontrol edilir. Kısaca PORTB de bir giriş pinine bakmak için PORTB.x kullanılır iken aynı port da bir çıkış yapmak için LATB.x regsiteri kullanılır. Senin yazdıklarında bunlara ait bir ifade göremedim. Benim program PORTB.5 pinini TOGGLE olarak her 1000 ms (1sn) de bir yakıp söndürmektedir.

Ete

Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: Yeniüye1234 - 01 Ocak 2022, 17:27:03
Hocam sorun board üzerinde oluyor. simülasyonda sorunsuz çalışıyor
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: Maxim - 02 Ocak 2022, 10:20:28
İslemci sahte olabilir
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: elektronik - 02 Ocak 2022, 15:51:21
Frekans yüksek olmuştur. led çok hızlı yanıp sönüyorsa sanki sürekli yanıyor gibi görünüyordur. bunu anlamak için gecikmeyi dahada arttırın
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: Yeniüye1234 - 02 Ocak 2022, 18:05:50
Her şeyi denedim olmuyor. Çok ilginç :)
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: sadogan - 02 Ocak 2022, 19:32:12
  main lopun hemen üst satırına
 #ROM 0x03FF = {0x344C} bunu ekleyip deneyebilirmisin.
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: Yeniüye1234 - 02 Ocak 2022, 19:54:20
Alıntı yapılan: sadogan - 02 Ocak 2022, 19:32:12main lopun hemen üst satırına
 #ROM 0x03FF = {0x344C} bunu ekleyip deneyebilirmisin.

12F629 için mi? Burada asıl mevzu 12F629 un dahili osilatör işi
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: sadogan - 02 Ocak 2022, 20:05:59
Bu zaten eepromda bulunan silinmiş osc cal değeri için .
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: sadogan - 02 Ocak 2022, 20:11:39

(https://i.ibb.co/WtFx9kd/f629.png) (https://ibb.co/WtFx9kd)
Resimde EEPROM alanında mavi olark işaretli yere 33 gibi değeri yazarakta osc kalibrasyon değeri verebilirsin
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: ilyas KAYA - 02 Ocak 2022, 20:23:20
Pickit2 varsa tekrar  otomatik osccal değeri vermeyi deneyin.
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: Yeniüye1234 - 02 Ocak 2022, 22:59:51
Bu kod niye çalışmıyor? eksik ne var burada? board üzerinde çalışmıyor. sadece ledi yakıp öyle kalıyor

#include <12f629.h>
#fuses INTRC,NOWDT,NOPROTECT,NOCPD,NOPUT,NOMCLR,NOBROWNOUT
#use delay (internal=4000000)
#use fast_io(a)                                                       
                                                       
void main ( )
{   
  set_tris_a (0b11111011);
 
  while (1)
  {
      output_toggle(pin_a2);
    delay_ms(100);
  }
}
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: ilyas KAYA - 02 Ocak 2022, 23:50:05
Başka pic ile dene
Başlık: Ynt: 12F629 OSSCAL osilatör hatası
Gönderen: mehmet - 03 Ocak 2022, 11:01:24
http://picprojects.org.uk/projects/recal/recal.htm

Bunu deneyin.