Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Basic pwm sorunu

Başlatan yildizelektronik, 01 Ocak 2012, 19:32:58

yildizelektronik

Hocam mclr ve dahili osilatör kullandım.

justice_for_all

:1000000000308A0036280000831A0A28A400030E54
:10001000A5000F288312A400030EA500A5140A084A
:10002000AB008A018313A40E0408A6002008A700D1
:100030002108A8002208A9002308AA0083128B1E09
:1000400023280B19C528260884002708A0002808A3
:10005000A1002908A2002A08A3002B088A00250E67
:1000600083008312240EA51883160900FF2383162C
:10007000900000308A00EB283008BA002F08B90041
:100080002E08B8002D08B7004130BE00C630BD00B4
:100090004E30BC006D30BB002030C300BF01C0013A
:1000A000C101C2013A08A3003908A2003808A10022
:1000B0003708A0000310201C6B283B08BF073C0832
:1000C00003183C0FC0073D0803183D0FC1073E0849
:1000D00003183E0FC207C20CC10CC00CBF0CA30C0E
:1000E000A20CA10CA00CC30B5A2839302007AD007C
:1000F0002108AE00303003183130AE072208AF00BF
:10010000003003180130AF072308B0000030031897
:100110000130B0072F08A0003008A100A201A30100
:100120002108B9002008B8003908BB003808BA0017
:100130007F30BD00FF30BC00A101A201A001A301DE
:100140003D08031DA6283C080319C0281030BE0036
:100150000310BA0DBB0DA00DA30D3D082302031D16
:10016000B3283C082002031CBC283C08A002031C46
:10017000A3033D08A3020314A10DA20DBE0BA828E2
:100180002008A1002308A2000800B508031DE528E7
:10019000FF30B5008316851283128516831605116C
:1001A000831205158316051283120516B10A31084C
:1001B000C73C0318E5283C202108B2003C20210858
:1001C000B3003C202108B400B101C8308100B50360
:1001D0000B118A11232884011F308305B10164307B
:1001E000B200B300B400B5011F1383161F109F1097
:1001F0001F119F11073083129900AC01831601086B
:10020000C73908388100831290010730990083169E
:100210000508850003308312A000A00B0D291908E2
:100220008C11831699010030850083128B16C03023
:100230008B04E630810032083502031D2329831622
:1002400085128312851233083502031D2B2983166C
:1002500005128312051234083502031D3329831653
:0A0260000511831205111B2963002C
:02400E00B401FB
:00000001FF
;PIC12F675
;CRC=73D8  CREATED="05-Oca-12 23:59"


sunu bir denermisiniz hocam sizin istediginiz pinlerden 3 pwm uretmesi gerek notepad farkli kaydet diyip dosyaadi.hex olarak kaydedin
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

yildizelektronik

Tamam hocam deniyorum şimdi cevabı yazarım birazdan.

justice_for_all

Alıntı yapılan: yildizelektronik - 06 Ocak 2012, 00:04:43
Tamam hocam deniyorum şimdi cevabı yazarım birazdan.

hocam devre su sekilde calismasi gerek belli bir surede random duty degerleri alip pwm uretiyo umarim calisir.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

Mucit23

Merhabalar.
Burada kopyala yapıştır olarak verdiğiniz hex kodlarını kopyalayıp işlemciye yüklenecek haline yani .hex uzantılı dosyaya nasıl çeviriyorsunuz.

yildizelektronik

Hocam gönderdiğiniz program çalışıyor 3 kanalda da sorun yok. Ben sizin dediğiniz gibi o mantıkla yazayim kodları.

justice_for_all

Alıntı yapılan: Mucit23 - 06 Ocak 2012, 00:11:01
Merhabalar.
Burada kopyala yapıştır olarak verdiğiniz hex kodlarını kopyalayıp işlemciye yüklenecek haline yani .hex uzantılı dosyaya nasıl çeviriyorsunuz.

bos metin belgesi acilir kodlar icine yapistirilir sonra farkli kaydet diyip dosya adini yazarken uzanti yazan kismi all files yapiyoruz sonra dosya adi main olsun mesela main.hex yazarak kaydediyoruz..
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

Mucit23

Anladım Teşekkür ederim..

ibrahimdg

Alıntı yapılan: Mucit23 - 01 Ocak 2012, 23:25:51
Hocam PWM komutu birden fazla çıkışkullanılacaksa devrenin çalışmasını engeller. Sadece tek çıkış için kullanılabilir. Birden fazla pwm çıkışı için mutlaka kesme kullanmanız gerekiyor. Daha önce ben RGB ledlerle bir gece lambası benzeri birşey yapmıştım. 12F675 ile 3 adet pwm çıkışı alarak RGB ledde renk kontrolü yaptım. Bayağıda iyi olmuştu. Ete hocada buna benzer bir uygulama yapmıştı(Ben biraz ondan esinlendim :)) Kodlar iyileştirilebilir elbet. Ne zaman yaptığımı hatırlamıyorum :D Ama çalışıyor.
@ DEVICE pic12F675                      'işlemci 12F675                               
@ DEVICE pic12F675, WDT_ON              'Watch Dog timer açık
@ DEVICE pic12F675, PWRT_ON             'Power on timer açık
@ DEVICE pic12F675, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic12F675, MCLR_off            'MCLR pini kullanılMIYOR.
@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 

DEFINE OSCCAL_1K 1
DEFINE OSC 4
CMCON = 7
ANSEL=0
OPTION_REG=%10001000 'Pull up dirençleri İPTAL- Bölme oranı 1/1
INTCON=%10100000 'Kesmeler aktif ve TMR0 kesmesi aktif
TRISIO=%00000100
ON INTERRUPT GOTO KESME
GPIO=0
SYMBOL RED=GPIO.0
SYMBOL GREEN=GPIO.1
SYMBOL BLUE=GPIO.4
SYMBOL TUS=GPIO.2
X     VAR WORD
Z     VAR BIT
W     VAR BYTE
I     VAR BYTE
R     VAR BYTE
G     VAR BYTE
B     VAR BYTE
HR    VAR BYTE   
LR    VAR BYTE
HG    VAR BYTE
LG    VAR BYTE
HB    VAR BYTE
LB    VAR BYTE
BASLAGIC:
r=1:g=1:b=1
hr=r:hg=g:hb=b
lr=100-hr
lg=100-hg
lb=100-hb
Z=0

BASLA:
GOSUB GOKKUSAGI
GOSUB BEYAZ
GOSUB RASTGELE
GOTO BASLA

'------------GOKKUŞAĞI-----------------------
GOKKUSAGI:
Z=1
FOR R=1 TO 99   'KIRMIZI ARTTIR
GOSUB DELAY
NEXT
Z=0:R=99 
GOSUB BEKLE  'BEKLE
Z=1
FOR G=1 TO 99 'YESIL ARTTIR
GOSUB DELAY
NEXT
Z=0:G=99
GOSUB BEKLE 'BEKLE
Z=1
FOR R=99 TO 1 STEP-1  'KIRMIZI AZALT
GOSUB DELAY
NEXT
Z=0:R=1
GOSUB BEKLE 'BEKLE
Z=1
FOR B=1 TO 99   'MAVİ ARTTIR.
GOSUB DELAY
NEXT
Z=0:B=99
GOSUB BEKLE 'BEKLE
Z=1
FOR G=99 TO 1 STEP-1   'YESIL AZALT
GOSUB DELAY
NEXT
Z=0:G=1
GOSUB BEKLE  'BEKLE
Z=1
FOR B=99 TO 1 STEP-1   'MAVİ AZALT
GOSUB DELAY  
NEXT
Z=0:B=1:R=1:G=1
GOSUB BEKLE
RETURN

BEYAZ:
FOR W=0 TO 1
  Z=1
  FOR R=1 TO 99   'KIRMIZI ARTTIR
    GOSUB DELAY
  NEXT
  R=99
  FOR G=1 TO 99   'YESIL ARTTIR
    GOSUB DELAY
  NEXT
  G=99 
  FOR B=1 TO 99   'MAVI ARTTIR
    GOSUB DELAY
  NEXT
  Z=0:B=99
  GOSUB BEKLE
  Z=1
  FOR R=99 TO 1 STEP-1  'KIRMIZI AZALT
    GOSUB DELAY
  NEXT
  Z=0:R=1
  GOSUB BEKLE1
  Z=1
  FOR B=99 TO 1 STEP-1  'KIRMIZI AZALT
    GOSUB DELAY
  NEXT
  Z=0:B=1
  GOSUB BEKLE1
  Z=1
  FOR G=99 TO 1 STEP-1  'KIRMIZI AZALT
    GOSUB DELAY
  NEXT
  Z=0:G=1
  GOSUB BEKLE
NEXT W
RETURN

RASTGELE:Z=1
R=99:Z=0:GOSUB BEKLE1:Z=1
DEVAM:
FOR W=1 TO 2
G=99:Z=0:GOSUB BEKLE1:Z=1
R=1:Z=0:GOSUB BEKLE1:Z=1
B=99:Z=0:GOSUB BEKLE1:Z=1
G=1:Z=0:GOSUB BEKLE1:Z=1
R=99:Z=0:GOSUB BEKLE1:Z=1
B=1:Z=0:GOSUB BEKLE1:Z=1
NEXT W
RETURN

BEKLE:     'GECIKME
IF X<20000 THEN BEKLE
RETURN
BEKLE1:
IF X<10000 THEN BEKLE1
RETURN

DELAY:
      FOR I=0 TO 255:NEXT 
      FOR I=0 TO 255:NEXT 
      FOR I=0 TO 255:NEXT 
      FOR I=0 TO 255:NEXT 
      FOR I=0 TO 255:NEXT
RETURN
DELAY1:
      FOR I=0 TO 255:NEXT 
      FOR I=0 TO 255:NEXT
RETURN


DISABLE
KESME:

IF red=1 THEN
hR=hR-1
  IF hR=0 then 
    RED=1-RED:hR=R
  endif
ELSE
lR=lR-1
  IF lR=0 THEN
    red=1-red:lr=100-hr
  ENDIF
ENDIF
       
IF green=1 THEN
hg=hg-1    
  IF hg=0 then 
    green=1-GREEN:HG=G
  ENDIF
ELSE
lg=lg-1
  IF lg=0 THEN
    green=1-green:lg=100-hg
  ENDIF         
ENDIF
        
IF blue=1 THEN
hb=hb-1
  IF hb=0 then
    blue=1-blue:hb=B
  ENDIF
ELSE
lb=lb-1
  IF lb=0 THEN
    blue=1-blue:lb=100-hb
  ENDIF         
ENDIF  
X=X+1 
IF Z=1 THEN X=0

TMR0=254
INTCON.2=0    
RESUME 
ENABLE
END


Arkadaşlar merhaba, Led lerin parlaklığını bir türlü düşüremedim. R0 dan başlatamadım. Yardım edebilirseniz sevinirim.