PIC24FJ256GB106 32MHZ çalıştırma

Başlatan ahmetgokce01, 18 Ocak 2017, 11:00:59

ahmetgokce01

Merhaba arkadaşlar CCS C'de PIC24FJ256GB106 mcusunu dahili osilatöründe 32Mhz olarak çalıştırmak istiyorum fakat #FUSES ayarlarını yapamadım 32mhz de çalıştıramıyorum donanımsal olarak usb portunu şimdilik kullanmayacagım, ccs c forumlarda paylaşımlar yapılmış fakat çözüme ulaşmamış.
ccs c de olması gereken FUSES ayarlarında yardımcı olur musunuz?
mcu nun datasheetinde osilatör diyagramı resimdeki gibi fakat ccs c de hangi ayarları nasıl gerçekleştireceğimi bulamadım açıkçası.



kantirici

hatırladığım kadarıyla ccs c de proje oluştururken "wizard"  dan kristal seçenekleri seçiliyor. Yeni proje oluşturun ve kristal ayarını istediğiniz gibi yapın. gerikli kodu kendisi üretecektir.

ahmetgokce01

Evet onuda denedim ama maalesef sanki bana eksik kodlar üretiyor gibi geldi derleyici.
ilk olarak dahili osilatörünü kullanmak istiyorum devre tasarımında aynı zamanda 16mhz kristalde bağlı harici kristalden çalıştırmak istediğimde de 32mhze ulaştıramadım her çeşit pll modlarını denedim harici 16mhz kristal kullanılacaksa PLL4 olacak diyor yani çok şey denedim ama bir türlü tutturamadım doğrusunu.Bu mcuyu CCS C derleyiciyle kullanan arkadaşlarımız bu konuda destek verirlerse çok sevinirim.

ahmetgokce01

https://www.picproje.org/index.php/topic,65872.0.html

burada bu mcu ile yine fuses ayarlarıyla ilgili problem yaşanmış ama problemin çözümü ile ilgili bir sonuç bulamadım

sadogan

osc ile ilgili ayarları
#use delay(clock=32MHz,oscillator=16MHz)
degiğinizde kendisi otomatik yapar.


ahmetgokce01

Keşke yapsa :)
o zaman ben en son ayarladığım fuses leri ekleleyim ona göre değerlendirelim.

sadogan

Sizin derleyicide bir sıkıntı var o zaman

ahmetgokce01

#include <24FJ256GB106.h> 
#device ADC=16 

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOJTAG                   //JTAG disabled
#FUSES CKSFSM                   //Clock Switching is enabled, fail Safe clock monitor is enabled

#device ICSP=1
#use delay(internal=4MHz)


yaptığımda dahili frekansta 4mhz olarak çalışıyor hiçbir şekilde 32mhz ya da 4Mhz'nin üzerinde çalıştıramıyorum.
Sorun derleyiciden olabilir mi diyorsunuz.

esensoy

bu ayarlarla proteusta gb değil ama ga serisini çalıştırıyor,

Siz 32MHZ de çalışmadığına nasıl kanaat getiriyorsunuz?

#use delay(internal=32MHz)

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WINDIS                   //Watch Dog Timer in non-Window mode
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOJTAG                   //JTAG disabled
#FUSES DISUVREG                 //Internal USB 3.3V Regulator disabled
#FUSES IOL1WAY                  //Allows only one reconfiguration of peripheral pins
#FUSES NOOSCIO                  //OSC2 is clock output
#FUSES CKSFSM                   //Clock Switching is enabled, fail Safe clock monitor is enabled
#FUSES IESO                     //Internal External Switch Over mode enabled
#FUSES WPFP                     //Write/Erase Protect Page Start/End Location, set to last page or use WPFP=x to set page
#FUSES WPDIS                    //All Flash memory may be erased or written
#FUSES NOWPCFG                  //Configuration Words page is not erase/write-protected
#FUSES WPEND                    //Flash pages WPFP to Configuration Words page are write/erase protected
En tehlikeli an "zafer" anıdır.

ahmetgokce01

while(1){

         output_toggle(led);
         delay_ms(500);

}


toplam 1saniyede yan sön yapması gereken led, 1 saniyeden fazla yanıyor 1 saniyeden fazla sönük kalıyor.

esensoy

#10
Ohooo
ofonksiyonun 500ms süreceğini kimse garanti etmiyor ki,
Bu ölçüt değil maalesef,

Kaç sn sürüyor sizin hesabınıza göre?

Şema resim kod gönderin, detaylı bakalım
En tehlikeli an "zafer" anıdır.

ahmetgokce01

#include <24FJ256GB106.h> 
#device ADC=16 
#device ICSP=1

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOJTAG                   //JTAG disabled
#FUSES CKSFSM                   //Clock Switching is enabled, fail Safe clock monitor is enabled
#FUSES FRC//,FRC_PLL

#use delay(internal=8MHz)

#use FIXED_IO( E_outputs=PIN_E6 )
#use FIXED_IO( D_outputs=PIN_D6,PIN_D5 )

#define power_led     PIN_D5
#define network_led   PIN_D6

#ZERO_RAM


void main()
{
   //setup_oscillator(OSC_INTERNAL); 
   set_pulldown(TRUE, PIN_C14);

   enable_interrupts(INT_RDA);
   enable_interrupts(INT_RDA2);
   enable_interrupts(INT_RDA3);
   enable_interrupts(INT_RDA4);
   disable_interrupts(INTR_GLOBAL);

   while(TRUE)
   {
      //TODO: User Code
      
   output_toggle(power_led); 
   output_toggle(network_led);
   delay_ms(500); 

   }

}


kod bu haliyle 8mhz çalıştığına inanıyorum ledin 500ms yanma sönme durumuna göre, bu tabi kesin birşey değil ama süresi kaba karşılaştırmama göre tutuyor, sonuç olarak 8MHZ değilde 16Mhz ya da 32Mhz dediğim anda süreler yavaşlıyor yanma ve sönme süreleri mevcut 500milisaniyenin 2 katına ya da 3 katına çıkıyor yani doğru çalışmıyor.

ahmetgokce01

Daha önce de 18f46k22 mcusunda timer ayar problemi yaşamıştım timer bir türlü çalışmıyordu sorun ccs c derleyicisinden çıktı derleyicide versiyon değişikliği yapmıştım düzelmişti bu da mı öyle acaba deneyeceğim.

ehliseyf

#13
İletiyi düzenleyemedim. Mod arkadaşlardan rica bu ileti silinsin.
Code'm mu oturturum !

ehliseyf

Alıntı yapılan: ahmetgokce01 - 18 Ocak 2017, 12:08:37
https://www.picproje.org/index.php/topic,65872.0.html

burada bu mcu ile yine fuses ayarlarıyla ilgili problem yaşanmış ama problemin çözümü ile ilgili bir sonuç bulamadım
Konunun çözümünde donanımsal arıza  olduğu fark edilerek çözüme kavuşturuldu. Ayarlarım harici OSC ile çalışır durumda. Dahili OSC kullanmadım. PLL bölmelerine dikkat etmelisiniz. Sorunu madde madde sıralama şansınız var mı ?
Code'm mu oturturum !