PULSIN Komutu ve HPWM komutu arasındaki anlaşmazlık

Başlatan dyonizos, 04 Ocak 2012, 09:48:08

dyonizos

selam arkadaşlar aşağıda hpwm ile motor kontrolü yapmaya çalıştığım bir kod var. Kodların arasındaki HPWM satırlarını kaldırdığımda pulsin ile okuduğum pulse degerlerıne göre devre çalışıyor sorunsuz ama HPWM satırlarını eklediğim anda program ilk gelen pulse sinyalinde takılıyor gibi. Sonraki gelen pulse leri dikkate almiyor gibi.
HPWM in programın işleyişini etkilemediğini sanıyordum.

'****************************************************************
'*  Name    : PULSEtoPWM.BAS                                *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 20.10.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
   

Device 16F876   
Declare Xtal 20
Config HS_OSC,WDT_OFF,PWRTE_ON,BODEN_ON,LVP_OFF,DEBUG_OFF,CP_ALL

CCP1CON.2=1
CCP1CON.3=1
Declare CCP1_Pin = PORTC.2
Declare CCP2_Pin = PORTC.1

TRISB=%00000000
TRISC=%11111000
CCP1CON = %00001100

Symbol CIKIS = PORTB 
Symbol rx = PORTC.4 
Dim signal As Word

PORTB=0   
Inf:


PulsIn rx,1,signal
If signal>752  Then
CIKIS = %10000000
HPWM 1,100,1000
End If

If signal>749 And signal<752 Then
CIKIS = %00000000
HPWM 1,0,0
End If

If signal<749 Then
CIKIS = %01000000
HPWM 1,100,1000
End If

GoTo Inf

My75

#1
20mhz kristal ile min. pwm frekansı 1200hz' dir..1250hz için aşağıdaki ayarları dene ve verdiğim linkten isteğine göre ayarla..

PR2 = 0b11111001
T2CON = 0b00000111
CCPR1L = 0b01111100
CCP1CON = 0b00111100

http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

dyonizos

Alıntı yapılan: My75 - 04 Ocak 2012, 10:00:58
20mhz kristal ile min. pwm frekansı 1200hz' dir..1250hz için aşağıdaki ayarları dene ve verdiğim linkten isteğine göre ayarla..

PR2 = 0b11111001
T2CON = 0b00000111
CCPR1L = 0b01111100
CCP1CON = 0b00111100

http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html

çok tesekkurler hocam. Hemen deneyip sonucu paylaşıcam.

OG

Alıntı YapHPWM 1,0,0

Ayrıca bu nedir ki, 0 Hz vermişsin?
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

dyonizos

Alıntı yapılan: OG - 04 Ocak 2012, 10:41:17
Ayrıca bu nedir ki, 0 Hz vermişsin?

o kısım  hatalı kalmış. Aslında orası HPWM 1,0,1000 seklinde. buraya kopyalarken bazı kısımları yanlış almısım. Çalıştırdıgım kodda o bölüm yok.

dyonizos

selam arkadaslar
programın son heli asagıda ancak tuhaf bır sekılde pulsin komutunu kullandığım zaman PWM çalışmıyor. Pulsin disable edersem PWM düzgün düzgün çalışıyor yardımcı olabilirmisiniz. pulsin neden HPWM i etkiler.



'****************************************************************
'*  Name    : PULSEtoPWM.BAS                                *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 20.10.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
   

Device 16F876   
Declare Xtal 4
Config HS_OSC,WDT_OFF,PWRTE_ON,BODEN_ON,LVP_OFF,DEBUG_OFF,CP_ALL
All_Digital = True

CCP1_Pin = PORTC.2
CCP2_Pin = PORTC.1

TRISB=0
TRISA=%00000001
TRISC=0
CCP1CON.2=1
CCP1CON.3=1


Symbol CIKIS = PORTB 
Symbol rx = PORTA.0
PORTB=0       
Dim signal As Word
Dim a As Word
Dim b As Word

Inf:
PulsIn rx,1,signal 'calışmıyor
'PulsIn rx,1,signal 'disable edersem pwm çalışıyor.

If signal>152  Then
CIKIS = %10000000
 
ElseIf signal>145 And signal<152 Then
CIKIS = %00000000
ElseIf signal<145 Then
CIKIS = %01000000   'kırmızı led
End If


For a=0 To 200 Step 2
DelayMS 10
HPWM 1,a,1000
HPWM 2,a,1000
Next

GoTo Inf

OG

PULSIN ile HPWM aynı timer ı (TMR2) kullanıyor diye hatırlıyorum. Yanlış olabilir emin değilim. Doğru ise bu sebepten olabilir.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Maxim

bu satırları kaldır gerek yok
CCP1CON.2=1
CCP1CON.3=1


birde pulsin boyle olmalı
signal = PulsIn rx, 1

son olarak pic 16F876 mı 76A mı ?
arada komparator farkı falan olması lazım
genede kodun başına şunu ekle
Declare All_Digital= true


*kod içinde a nerede ?