Donanımsal pwm hakkında

Başlatan torlaktr, 03 Haziran 2013, 09:06:19

torlaktr

Arkadaşlar merhaba bayadır üzerinde uğraştığım bir projem hakkında bir sorum olacaktı
Projemde çıkış portum portc.0 bu port uzerınden gayet sağlıklı bır çıkış alıyorum fakat ben istiyorumki bu çıkıştan 100 hz değil 30 khz gibi bir frekans almak ve bir türlü beceremedim pwm komutu ıle denıyorum bu seferde proteusta işlemciye fazla yüklendin gibi uyarılar verıyor kodu verıyorum teşekkür ederim

TRISB=%00000001   'PortB.0 giriş diğerleri çıkış yapıldı.
TRISC=%00000000   'A portu tamamı çıkış yapıldı.
TRISD=%00000000
TRISA=%00000001
TRISE=255
'-----------------------------------------------------------------
portb.0 = 1
portc.4 = 0
portc.0 = 0





DEFINE ADC_CLOCK 3
DEFINE ADC_BITS 10     'A/D çevirim sonucu kaç bit olacak
DEFINE ADC_SAMPLEUS 100 'Örnekleme zamanı mikro saniye cinsinden.
ham   var byte
ham = 190




ON INTERRUPT GoTo KESME   'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%00000101   'dahili Pull up dirençleri aktif edildi ayrıca pullup direncine gerek yok.
INTCON=%10010000  'Kesmeler aktif ve RB0/INT kesmesi aktif
ADCON1=%10001110
OPTION_REG.6=1  'portB deki dahili PULL-UP lar iptal edildi.



BASLA: 'Ana program bölümünde program bir şey yapmayacak


goto basla
 


   
DISABLE  'yeniden kesme oluşması önleniyor 
KESME: 'program buraya geldiğinde kesme oluşmuş demektir.



if intcon.1 = 1 then goto kesme_frekans
if intcon.2 = 1 then goto kesmezaman


   
   
kesmezaman
    intcon.2 = 0 
    intcon.5 = 0
    portc.0  = 1
   
   
    resume
       
   
kesme_frekans ; 
       if option_reg.6 = 0 then
       option_reg.6 = 1
       else
       option_reg.6 = 0
       endif
       portc.0 = 0
       tmr0 = ham
       

       intcon.5 = 1 
       intcon.2 = 0
       intcon.7 = 1
       INTCON.1=0  'RB0/INT Bayrağı (flag) silindi.
     
       Resume      'geldiğin yere dön.
   Enable      'kesmeler yeniden aktif.
     
End

Powered by EzPortal