PWM hakkında sorular

Başlatan HEXF2, 02 Eylül 2005, 09:27:57

HEXF2

Beyler uzun zamandır kafayı bu PWM yöntemine taktım ama içinden çıkamadığım bazı olaylar kitaptan bir yere kadar oluyor forumu dolaştım ama beni tatmin edecek birşey bulamadım eğer başka bir yerde tartışıldıysada ben bulamadım neyse umarım sorularıma yanıt bulurum

1) Ben 4MHZ OSC kullanan bir PIC ile PR2'ye yüklenecek değeri T = 1/F
mantığından buluyordum.Misal 3.91Khz için 1/3.91 = 255 PR2 ye 255 değeri yüklüyordum maximum PWM çözünürlüğü ise

log(fosc/fpwm) x log(2)

log (256) = PWM çözünürlüğü x log(2)

PWM çözünürlüğü = 10 bit

Yani 256'yı 0 kalana kadar 2 ye bölüyorum ve max PWM çözünürlüğünü elde ediyorum yani bu değer ile CCPR1L ve CCP1CON <5:4> yazmaçlarına 1024 değeri yükleyebilirim. Şimdi kafamı kurcalayan kısımlara sıra geldi.

Örneğin ben 5KHz lik bir sinyal elde etmek istiyorum atıyorum max PWM çözünürlüğü ise 7 bit çıktı ben 7^2 den maksimum değer kaç çıkıyorsa o kadar mı yükleyebilirim bu CCPR1L ve CCP1CON <5:4> yazmaçlarına ve yükleme nasıl olucak 7^2 den 128 yapar bunu direk CCPR1L yazmaçına mı yükliycem yoksa alt iki ile (CCP1X : CCP1Y) üst yazmaçtan (CCPR1L) 6 bit alıp sonuçta 8 bitlik bir değer mi elde edicem çünkü CCP1XY görev süresinin en değerliksiz bitleri ???

2)Birde ben 20MHZ de ve 10MHZ de PR2 değerini bir türlü doğru hesaplayamadım bu nasıl olucak

3)Son sorum ise 4Mhz lik OSC ile max kaç Khz sinyal üretilir ve bu nasıl hesaplanır çünkü ön bölücü değeri de var hesaplama içinde ve TMR2'nin son bölücüsü de var bu da kullanılamaz mı yani ben istediğim frekansı istediğim frekansta üretmek istiyorum ama bu sorular beni deli ediyor

frekans üretirken ön bölücü ve son bölücü değerlerini nasıl katıcaz işin içine

fyper

ccs kullanmasını biliyorsanız yeni proje oluşturma sihirbazını kullanarak projenizi oluşturup komutlarla pwm nizin frekansı ve duty cycle i ile oynayın list dosyasından reverse yaparak nasıl olması gerektiğine dair bilgi sahibi olabilirsiniz.

HEXF2

Hayır C kullanmıyorum ben bu işleri PBP ile de yapıyorum ama işin mantığı öğrenmek için asm ile yapmak istiyorum hem hafızada daha az yer kaplıyor hem daha hızlı yok mu arkadaşlar cevap vericek

mmengi

Formüller kullandığın pic in sheet inde mevcut bunları görmüşsündür oradaki formüllerde:

PWM period = [(PR2) + 1] • 4 • TOSC •(TMR2 prescale value)
PWM duty cycle = (CCPR1L:CCP1CON<5:4>) •Tosc • (TMR2 prescale value)

2 bilinmeyen var her formülde, zaten kullanılan frekans sabit ise sorun yok asıl sorun frekans değişken olacaksa bunların her seferinde hesaplanması lazım.

Bunun kolay yolu pbp de hpwm komutunu disasm yapıp incelemek illa da öğrenmek istiyorum dersen. Bu komut rutini 4mhz. de çalışan bi pic te sanırım 1ms. kadar sürüyor.

Sonuç olarak her frekans ta ben 2^8 lik bir pwm elde edim dersen bu rutini kullanabilirsin zaten oturup kendim bu rutini yazim dersen süresi bundan çokta farklı oalacağını sanmıyorum. Çünkü epey bi hesap kitap gerekiyor gibi.

HEXF2

Hoca ben hesaplama olayını çözsüm şimdi istediğim frekansı elde edebiliyorum ama bir sorun kaldı belirlediğim bir frekans var misal 4.25Khz 1:1 ön bölücü ve 4mhz Osc de PR2'ye yüklenecek değer 235 gibi birşey çıkıyor diyelim ki mx çözünürlükte 8 bit kullabiliyoruz.Ben bunu 8 bit değilde 10 bit olarak CCP1L:CCP1X-CCP1Y yazmaçlarına yüklesem frekanta değişiklik olur mu yada periyodda sanırım olmaz gibi ama tam bilmiyorum yani benim fikrim frekans aynı kalır ama sinyal sürekli 1 de kalır yani pin çıkışı hep "1" seviyesinde olur çok kısa süre "0" olur diyorum yani sadece TMR2 = PR2'ye eşit olduğunda çıkışı "0"a zorlar ama kısa bir süre ne kadar doğru bilmiyorum

Hem max çözünürlüğü 8 bit bulduğum bir hesaplamada 10 bit yükleme yapabilir miyim CCP1L:CCP1X-CCP1Y yazmaçlarına ya arkadaşlar yok mu cevaplayacak arkadaş kaç kişi okumuş iki kişi ilgilenmiş sağolsunlar

Erol YILMAZ

cozunurluk 8 bit ise yine 10 bitlik yukleme yapiyorsun fakat en az degerlikli 2 tane bit sinyal cikisini etkilemiyor. Yani hassasiyetin 8 bite dusmus oluyor...

HEXF2

Hımm sağol hoca son bir sorum daha olacak PIC16F877 CCP1 ve 2 olmak üzere iki modül var CCP1 ve CCP2 çıkışlarından farklı PWM sinyalleri üretemiyor muyuz CCP1 den 1khz CCP2'den 3.125khz gibi