Donanım destekli pwm'i nasıl kullanabilirim ?

Başlatan tyilgin, 11 Mart 2008, 12:46:52

tyilgin

Merhaba arkadaşlar,

16F877 de donanım destekli PWM i nasıl kullanabileceğim konusunda yardıma ihtiyacım var.

Basicte "HPWM ..." diye bir komut vardı, benzer bir komut c dede varmıdır ?

tyildizak

Sanırım yok, asm ile yapıldığı şekilde elde etmelisiniz.(Bkz:Pic16F877 Datasheet)
CCS C'de  hazır pwm kütüphanesi var.

muuzoo

Bir dönem kendime lazım olduğu için bir kütüphane oluşturmuştum. Aşağıdaki başlıktan nasıl kullanılacağını görebilirsiniz.

temel komutlar:
pwm_init(x,y);
pwm1_basla(x,y,z)
pwm1_degis(x)
pwm1_kapat()

gibi. Aynı zamanda pwm2 ile de ikinci pwm kanalını kullanıyor.
http://picproje.org/index.php/topic,17130

NOT:Kesme kullanıyorsanız koddaki PIE satırlarını iptal edin.
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

tyilgin

Alıntı yapılan: "muuzoo"Bir dönem kendime lazım olduğu için bir kütüphane oluşturmuştum. Aşağıdaki başlıktan nasıl kullanılacağını görebilirsiniz.

temel komutlar:
pwm_init(x,y);
pwm1_basla(x,y,z)
pwm1_degis(x)
pwm1_kapat()

gibi. Aynı zamanda pwm2 ile de ikinci pwm kanalını kullanıyor.
http://picproje.org/index.php/topic,17130

NOT:Kesme kullanıyorsanız koddaki PIE satırlarını iptal edin.

Sizin kodlarını araştırma sırasında görmüştüm, ancak uzun bir kod görünce yazılım ile oluşturulmuş bir pwm sanmıştım.

Sanırım yanılmışım. Cevabınız için teşekkür ederim.

arslan74

Merhaba,

Bugünlerde artık PIC çalışma işini bırakma zorunda kaldığım ve artık pek fazla boş vaktim olmadığından sizlere Eğitim dökümanı hazırlamaya devam edemiyorum.

Eğer vakt bulabilirsem sizlere PWM ile ilgili ayrıntılı bir yazı hazırlamak isterim. Tek kanal PWM'nin fazla zor bir yanı yok.

Eğer Almanca bilginiz varsa aşağıdaki sitede cok güzel anlatiyor. Orayi incelemenizi tavsiye ediyorum.

http://www.sprut.de/electronic/pic/grund/pwm.htm

Selamlar

F493

selam

arslan 74 hocam

Bugünlerde artık PIC çalışma işini bırakma zorunda kaldığım ve artık pek fazla boş vaktim olmadığından sizlere Eğitim dökümanı hazırlamaya devam edemiyorum.

demişsiniz .


 Neyle çalışıyorsunuz FPGA falanmı,ARM..  8)

iyi çalışmalar

esen kalın

arslan74

Merhaba,

Şimdilik Pos makinalara program yaziyorum. Bu iş bittikten sonra ARM9+Linux altına çalışmaya başlayacağım inşallah.

Selamlar

F493

herkese selam;

sevindim sizin adınıza arslan74.


 bende düşünüyorum ARM la çalışmayı ama hedefim şuan PIC i iyi derede kullanacak seviyeye gelmek,PIC çok iyi bir işlemci gerçekten birçok şey yapılabilir.(tabi amaca uygun olanlar).


 sonrasında sistem programalama ve ileri c almayı düşünüyorum,ve sonrasında unix,linux sistem programlamayı alıcam egitim olarak..

bu aradada bir ARM demo bordu alıp arada inceleyecegim inşallah.

tabiki bunların hepsi bir süreç ,ama daha 24 yaşındayım 8)

inşallah herkes için hayırlısı olur..

iyi çalışmalar diliyorum .

    esen kalın

arslan74

Alıntı yapılan: "F493"herkese selam;

sevindim sizin adınıza arslan74.


 bende düşünüyorum ARM la çalışmayı ama hedefim şuan PIC i iyi derede kullanacak seviyeye gelmek,PIC çok iyi bir işlemci gerçekten birçok şey yapılabilir.(tabi amaca uygun olanlar).


 sonrasında sistem programalama ve ileri c almayı düşünüyorum,ve sonrasında unix,linux sistem programlamayı alıcam egitim olarak..

bu aradada bir ARM demo bordu alıp arada inceleyecegim inşallah.

tabiki bunların hepsi bir süreç ,ama daha 24 yaşındayım 8)

inşallah herkes için hayırlısı olur..

iyi çalışmalar diliyorum .

    esen kalın

Merhaba,

PIC'ler uC olarak güzel aletler. Ama bir işletim sistemi çalıştırmak için yetersiz kaliyorlar. Bunun için 32 bit işlemciye ihtiyac var. Ama PIC32 cıkalı ne kadar olduki. PIC32 için bir linux işletim sistemi cıkması cok zor gibi duruyor. Diğer işletim sistemleri, Salvo v.b.'lerinin Linux'a göre cok eksikleri var. Dolaysıyla Gercek embedded sistem uygulaması için bir işletim sistemi altında çalışmak şart. Bunun için en basidi WinCE oda paralı. Parasız kullanım için en iyisi Linuxdur.

Selamlar.

M_B

Alıntı yapılan: "muuzoo"Bir dönem kendime lazım olduğu için bir kütüphane oluşturmuştum. Aşağıdaki başlıktan nasıl kullanılacağını görebilirsiniz.

temel komutlar:
pwm_init(x,y);
pwm1_basla(x,y,z)
pwm1_degis(x)
pwm1_kapat()

gibi. Aynı zamanda pwm2 ile de ikinci pwm kanalını kullanıyor.
http://picproje.org/index.php/topic,17130

NOT:Kesme kullanıyorsanız koddaki PIE satırlarını iptal edin.

merhaba muuzoo arkadas
linkteki pwm.c programını ıncelıyordum kafama bir yer takıldı.
void pwm1_basla(unsigned int sure,unsigned int pwm1) 
{ 
   if(sure>0){ 
      RC2=1; 
      DelayMs(sure); 
      RC2=0; 
   } 
   di(); 
   PIE1=0x00; 
   CCPR1L=(pwm1 & 1020) >> 2; 
   CCP1CON=((pwm1 & 3) << 4); 
   CCP1M3=CCP1M2=1; 
   ei(); 
}

burda di(); ve ei(); kısmını anlayamadım. Acıklayabilirmisiniz.
Tesekkurler
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

muuzoo

İncelediğim kaynaklarda pwm regleri ile işlem yapılırken kesmeleri devre dışı bırakıyorlardı hep o yüzden ben de o şekilde kullandım.
di() -disable interrupt-komutu GIE bitini 0 yaparak kesmeleri devre dışı bırakıyor. Daha sonra işlemleri yapıyor ve ei() -enable interrupt- ile kesme kullanımını tekrar aktifleştiriyor. Bu arada PIE satırını devre dışı bırakırsanız kod diğer kesmelerle sıkıntı yaşamıyor. Kendim PIE satırı yüzünden bir kaç sorun yaşadım o yüzden belirteyim dedim.

Koddaki ilk kısım olan sure değişkeninin değerini kontrol eden kısım ise dc motor sürerken ilk kalkış sırasında ki -kick time- anlık tam güç vermek için kullanılıyor. duruma göre 0 vererek kod kullanılmayabilir.
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...