V5 ile gelen yeni #use pwm() ve #use capture libraryleri

Başlatan frederic, 20 Temmuz 2013, 00:36:53

frederic

http://www.ccsinfo.com/newsdesk_info.php?newsdesk_id=147

Yukarıdaki linte duyurusu yapılmış arkadaşlar, sanırım capture ve pwm si olmayan pic ler için işleri kolaylaştırmaya çalışmışlar. Ben hiç 16f serisi işlemciler ile çalışmadım fakat bu sefer tarihi eser bir işlemci ile çalışmak zorunda kaldım, kendisi 16f630. Kendisinde ne adc var, ne pwm ne usart. Bu pic ile kızıl ötesi tek bir byte'lık veri iletişimi yapmam gerekli ve hali ile pwm sinyaline ihtiyacım var.

Bu komutları kullanmaya çalıştım fakat sürekli hata verdi, aranızda bu yeni komutları kullananlar oldumu acaba ? Birde bu iş için pwm frekansının minumum değeri ne olmalıdır sizce ?

Salih

Benim anladığım, donanımsal PWM ve Capture modüllerini ayarlamak için düzenlendiği.
Dediğine göre modül ayarlarını PIC modelinden ve kristal değerinden bağımsız hale getirmek.
Yani PIC modeli ve kristal değeri değişse bile sizin ek ayar yapmanıza gerek kalmıyor, diyor.

Okan AKÇA

salih hocamızın dedigi gibi osc hızı degiştirildigi zaman ek ayarlara gerek kalmıyor.zaten düşük hızlı mcu kullanılırsa tekrar ayarlamak zorunda kalınabilir.

mesaj birleştirme:: 20 Temmuz 2013, 14:05:44

PWM (ÇIKIŞ = PIN_C1, TIMER = 2, FREKANS = 50000) kullanmak geçersiz DACSetHalfValue (void)
{
pwm_on ();
set_pwm_frequency (10000); Hz / /
set_pwm_duty_percent (500); onda% içinde / /
}

frederic

Evet 16f630.h dosyasında bulunduğu için bu komutlar olayı bu tip işlemcilere özel anlamıştım gece fakat, sonradan bende farkettim olayı dediğiniz gibi. Yardımlarınız için teşekkürler.

frederic

Bu yeni komutları proteusta 18f46k22 ile denedim, fakat sadece ccp1 düzgün çalışıyor, bu proteustanmı kaynaklıdır acaba, yoksa kodlardamı yanlışlık var?

#include <18F45K22.h>
#device ADC=10

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES NOmclr
#FUSES intrc_io

#use delay(internal=16000000)

#use pwm(CCP1,TIMER=2,FREQUENCY=15000,DUTY=100,STREAM=PWM1)
#use pwm(CCP2,TIMER=4,FREQUENCY=25000,DUTY=100,STREAM=PWM2)
#use pwm(CCP3,TIMER=6,FREQUENCY=35000,DUTY=100,STREAM=PWM3)

void main() {
 
   
   setup_oscillator(OSC_16MHZ);
   setup_adc_ports(no_analogs);
   enable_interrupts(int_ext);
   enable_interrupts(global);

   while(TRUE){


   }
   
   pwm_on(PWM1);
   
   pwm_on(PWM2);
   
   pwm_on(PWM3);
}