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=%00000000TRISA=%00000001TRISE=255'-----------------------------------------------------------------portb.0 = 1portc.4 = 0portc.0 = 0DEFINE ADC_CLOCK 3DEFINE ADC_BITS 10     'A/D çevirim sonucu kaç bit olacakDEFINE ADC_SAMPLEUS 100 'Örnekleme zamanı mikro saniye cinsinden.ham   var byteham = 190ON 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 aktifADCON1=%10001110OPTION_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_frekansif 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