Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

HPWM

Başlatan seco06, 19 Mayıs 2011, 21:57:34

seco06

#include <htc.h>
__CONFIG(HS & MCLREN & UNPROTECT  & WDTDIS & LVPDIS & PWRTEN & BOREN );
unsigned int a=1;
void picint(void)
{
	CMCON=0x07; 
	TRISA=0x00; 
	TRISB=0x00; 
	PORTA=0x00;
	PORTB=0x00;
	T2CKPS1=0;
	T2CKPS0=0;
	PR2=24;
	CCPR1L=(a & 1020) >> 2;
	CCP1CON=((a & 3) << 4);
	CCP1M3=1;
	CCP1M2=1;
	TMR2ON=1;
	TMR2IE=1;
}	

void main(void) 
{
	picint();
	for (;;)
		{
			RB4=1;	
		if (TMR2IF)
			{
			RB4=0;
			di();
			a++;
			if (a>99)
			a=1;
			CCP1M3=0;
			CCP1M2=0;
			CCPR1L=(a & 1020) >> 2;
			CCP1CON=((a & 3) << 4);
			CCP1M3=1;
			CCP1M2=1;
			ei();
			TMR2IF=0;
			}
		}	
}

Pic16f628, frekans 4MHz ,kullandığım proteus sürümü 7.7 sp2. Bu açıklamalardan sonra sorunum üretmiş olduğum 40KHz'lik PWM'in duty cycle bir değişkene bağlı olarak değiştirmek istiyorum. TMR2IF bayrağını kontrol ederek yapmaktayım ama bir türlü istediğim sonuca ulaşamadım. Sorunum proteusta  olabilir mi? Devreyi kurup osilaskopta bakma imkanım olmadı. Bu gidişle buna başvuracağım gibi!.. Yardımlarınız için teşekkürler.

Mucit23

Yüksek frekanslı pwmlerde protrus hernedense bende çok yavaşlıyor. Özellikle 20KHz ve üzerinde. Bence gerçekte denemelisiniz.

seco06

https://rapidshare.com/files/1276572974/spwm.rar
PBP da yapmış olduğum proteusta çalıştı. C de yazdığım çalışmadı. Çok ilginç   ???

yamak

PWM de tmr2 yi kullandığından hata olabilir ama tam emin değilim.Bence bir de tmr0 ya da tmr1 kullanmayı deneyin.Ya da duty cyle frekanstan büyük oluyosa bazı hesaplamalardan sonra ondan dolayı bi hata oluşuyo olabilir.

seco06

Alıntı yapılan: yamak - 20 Mayıs 2011, 23:06:35
PWM de tmr2 yi kullandığından hata olabilir ama tam emin değilim.Bence bir de tmr0 ya da tmr1 kullanmayı deneyin.Ya da duty cyle frekanstan büyük oluyosa bazı hesaplamalardan sonra ondan dolayı bi hata oluşuyo olabilir.
Düşüncelerin için teşekkür ederim ama donanımsal (hpwm) pwm de TMR2 haricinde timer kullanamazsın. Duty cycle period dan büyük değil ve olamaz. Sanırım interrupt sorunu oluşuyor. Proteustan kaynaklı gibi.

seco06

https://rapidshare.com/files/2830167107/C-hpwm.rar
Bu sefer oldu gibi ama yine interrupt sorunu var galiba. Proteus Stack overflow hatası veriyor.

yamak

Alıntı YapDüşüncelerin için teşekkür ederim ama donanımsal (hpwm) pwm de TMR2 haricinde timer kullanamazsın.Duty cycle period dan büyük değil ve olamaz
Benim kastetdiğim pwm için kullandğınız timer değil.Duty cycle ı belli aralıklarla değiştirmek için kullandığınız timer. Duty cycle da evet büyük olamayacağı için bi sorun oluşuyo olabilir diye demek istedim.Yani hesaplamalar sonucunda.