ccs c PLL yapınca Kesme zamanları neye göre hesaplanır?

Başlatan fractal, 06 Mart 2009, 13:35:49

fractal

10mhz kullandık 4xpll yaptık ve örneğin timer 3 1ms kesme yapıcaz.

tkesme=(1/40)*(4)*(8)*(64286)  mı olur yoksa


tkesme=(1/10)*(4)*(8)*(64286)     mı olur.....      
Restantum cogniscutur Quantum deligutur

Salih

Hangi işlemci yazmamışsın. Ben kendi yaptığım bir denemeyi aktarayım.
#include <18F4550.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                      //Watch Dog Timer uses 1:128 Postscale
#FUSES XTPLL                   //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV20                   //Brownout reset at 2.0V
#FUSES PUT                      //Power Up Timer
#FUSES NOCPD                    //No EE protection
#FUSES NOSTVREN                   //Stack full/underflow will cause reset
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTD                   //Data EEPROM not write protected
#FUSES NOIESO                     //Internal External Switch Over mode enabled
#FUSES NOFCMEN                    //Fail-safe clock monitor enabled
#FUSES NOPBADEN                   //PORTB pins are configured as analog input channels on RESET
#FUSES NOWRTC                   //configuration not registers write protected
#FUSES NOWRTB                   //Boot block not write protected
#FUSES NOEBTR                   //Memory not protected from table reads
#FUSES NOEBTRB                  //Boot block not protected from table reads
#FUSES NOCPB                    //No Boot Block code protection
#FUSES NOMCLR                   //Master Clear pin disabled
#FUSES LPT1OSC                  //Timer1 configured for low-power operation
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES PLL3                    //Divide By 3(12MHz oscillator input)
#FUSES CPUDIV1                  //System Clock by 1
#FUSES USBDIV                   //USB clock source comes from PLL divide by 2
#FUSES VREGEN                   //USB voltage regulator enabled
#FUSES NOICPRT                    //ICPRT enabled

#use     delay(clock=16000000)   //4MHZ kristal bağlı ve iç frekans ölçeklemesi yok.

#int_TIMER0
void  TIMER0_isr(void) 
{
   set_timer0(25536);// 10 ms lik ayarlandı
   Output_toggle(Pin_C7);
   Clear_interrupt(int_timer0);
}
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);//Default 16 Bit ayarlanıyor
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_16,249,1);// 1Khz PWM frekansı. PWM1 ve PWM2 ferkans üretiminde Timer2 kullanılıyor.
   setup_timer_3(T3_DISABLED);
   setup_ccp1(CCP_PWM);

İşlemciye 4Mhz kristal bağlıdır. Elde edilen sonuçları yan taraflarına yazdım. Deneme gerçek devre üzerinde yapılmıştır.

fractal

#include <18f452.h>
#fuses h4
#use delay(clock=10000000)  

benim kod böyle.şimdi buna göre hangisi olur?ve bu kod doğrumudur?


tkesme=(1/40)*(4)*(8)*(64286) mı olur yoksa


tkesme=(1/10)*(4)*(8)*(64286) mı olur...
Restantum cogniscutur Quantum deligutur

Salih

Tecrübe etmedim ama H4 kullandığına göre çalışma frekansı 40Mhz oluyor
Bana göre
tkesme=(1/40)*(4)*(*(64286) mı olur yoksa


bu kodlar doğrudur.

fractal

ok sağolasın. ozaman denkelemin sonucu 1ms doğrudur.

peki delay ms(xxx)

de 1 sn bekleme için ozaman 4000 mi yazmam lazım?
bu nasıl olur acaba?
Restantum cogniscutur Quantum deligutur

Salih

Aşağıdaki linke bakabilirmisin. Senin ihtiyacına uygun bir örnek
program var.
http://www.ccsinfo.com/forum/viewtopic.php?t=26226