Picproje Elektronik Sitesi

DERLEYİCİLER => PICBasic => Konuyu başlatan: erkan614 - 24 Mayıs 2021, 16:47:48

Başlık: 12F675 ile pwm
Gönderen: erkan614 - 24 Mayıs 2021, 16:47:48
iyi günler
pwm komutu ile 200 hz lik bir %50 duty sinyalini nasıl elde ederim
Başlık: Ynt: 12F675 ile pwm
Gönderen: sifirzero - 24 Mayıs 2021, 16:50:45
Timer2 hesaplamasina bakabilirsin.
Başlık: Ynt: 12F675 ile pwm
Gönderen: ete - 25 Mayıs 2021, 09:08:53
Düz PWM komutu ile bu frekansı tutturman pek mümkün değil. 4Mhz OSC frekansında çok düşük bir peryot süresi çıkıyor ve ne yazıkki bu komut sana frekans ayarlama imkanı sağlamıyor.
İşlemcide HPWM özelliği de olmadığı içintek çare kesme kullanarak bu işi yapabilmen gözüküyor.
aşağıdaki kod parçası sana bu imkanı verir. NOP olan yere var ise başka komutlar ekleyebilirsin.
Bu hali ile yanlızca PWM sinyalini %50 DUTY ile GPIO.0 dan çıkartmaktadır.
200 Hz demek sinyal peryodunun 1000/200=5 ms olduğunu bize gösterir. 5 ms lik peryodun yarısını HIGH yarısını LOW olarak kullanırsan buda %50 duty değerine denk gelir. O halde yapılacak iş her 2,5ms (2500us) de bir konum değiştirmek olacaktır. Bu nedenle 2500 us de bir kesme yaratan bir program ayarladım ve sonuç istediğin gibi bizzat denedim de. Config kısmını kendi derleyici versiyonuna göre değiştirebilirsin.

Ete
#config
 __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF
#endconfig

DEFINE OSC 4
DEFINE OSCCAL_1K 1
CMCON=7
ANSEL=0
TRISIO=%00001000
GPIO=0
SYMBOL CIKIS=GPIO.0
INTCON=%10100000
TMR0=100
OPTION_REG=%00000011 '(000=1/2, 001=1/4 , 010=1/8  011=1/16
on INTERRUPT GOTO KESME
PAUSE 300

BASLA:

@ nop
@ nop
      GOTO BASLA       
DISABLE
KESME:
      CIKIS=1-CIKIS
      INTCON.2=0
      TMR0=100
      RESUME
      ENABLE
      END