pwm modulü kullanmadan ccp kullanılırmı?

Başlatan fractal, 21 Şubat 2009, 23:38:30

fractal

arkadaşlar pwm modülünü kullanmadan tmr2 nin pwm üretmek için kullandığın ccp1 ccp2 lerin kesmeleri kullanılarak pwm üretilebilirmi?
Restantum cogniscutur Quantum deligutur

erkan614

ccp = capture copare pwm
tam olarak ne soruyosun anlamadım

Tagli

Yanlış bilmiyorsam bu kesmeler PWM için değil Capture ve Compare için kullanılıyor. Eğer sorduğun şey TMR2 kesmesini kullanarak PWM üretmekse evet, yapılabilir. Hatta 2'den fazla PWM sinyali elde edebilirsin ama bu işleri kesme kodu içinde yazılımsal olarak yapacağından işlem süresi nedeniyle bu sinyaller arasında ufak bir zaman farkı olacaktır. Sinyal sayısı arttıkça bu zaman farkı da artar.
Gökçe Tağlıoğlu

fractal

şimdi bu pwm modülü ile pwm üretiyoruzya.bunun bazı sıkıntıları var.istediğin frekanstan  başlayamıyorsun.bu modülü kendimiz oluşturamayızmı?mesela 10mhz 4 pll için enaz 2444.1 hz oluyor frekans.ozamanda bazı işler yaparken bu sıkıntı oluşturuyor.ondan diyorum..
Restantum cogniscutur Quantum deligutur

Tagli

Sanırım PWM'yi TMR2 kesmesi ile yaparsan bu en az dediğin değeri 16'ya bölebilirsin postscaler kullanarak. Gerçi belki ayrıntılar cihaza göre değişiyordur, ben 16 serisi bilgilerime göre konuşuyorum.

Elbette PWM'yi kesme ile üretmek diğer kesmeler için sorun oluşturabilir. Gerçi eğer 18 serisi bir PIC kullanıyorsan kesme öncelikleri ile bu sorunu kısmen veya tamamen (duruma göre) aşabilirsin.

Aklıma gelen bir başka çözüm de PWM işleri için ayrı bir PIC kullanmak. Bu PIC'in başka bir görevi olmayacak. Bir timer kesmesini (TMR2 esnekliği sebebiyle öne çıkıyor) kısa zaman aralıkları ile çalıştırıp (mesela her x us'de bir) kesme kodunda her PWM sinyali için x cinsinden bir periyod ve duty cycle ayarlanabilir. Bu şekilde birbirinden farklı özellikleri olan bol miktarda PWM çıkışı elde edilebilir sanırım.
Gökçe Tağlıoğlu

fractal

peki
1.bana dediler ccs c de kesmelerde sorun yaşatıyor diyorlar doğrumu
2.40mhz çalışan bir işlemci ile us lerde kesme üretmede sorun olurmu?.40mhz de komut işleme süresi sanırım 100ns oluyor.bunu gerçekten yapabilirmi?mesela 1us kesme.ve işlem yapıcak.burdaki 100ns cöznürliüğüde nedir.arkadaşlar sabit 100ns değil diyor.200 oluyor.50 düşüyor.tam stabilde değilmiş.
3.bu sürücülerdeki işlemciler nasıl peki.mesela pozisyon kontrol cihazları.hem pwm üretiyor hem encoder okuyor karşılatırıyor hesaplıyor.
bu kadar işi nasıl yapıyor.
Restantum cogniscutur Quantum deligutur

Tagli

1) CCS C hakkında hiçbir fikrim yok. ASM'den başka PIC dili bilmiyorum, çok az uğraştığım PicBasic Pro'yu saymazsak. Ama iş hassas zamanlamaya geldiğinde bence ASM ile olaya daha iyi hakim olursun (umarım bu lafımla yine bir derleyici tartışması başlatmam :)).

2) PLL konusunda fazla bilgim yok ama yanlış bilmiyorsam komut işleme süresi genelde 100 ns olur bu durumda. Bazı komutlar 200 veya 300 ns de sürebilir. 50 ns olmaz. Ayrıca kesmenin oluşmasıyla programın kesme koduna atlaması arasında da bir süre geçer. Bildiğim kadarıyla bu süre sabit değil, ve dış kaynaklı kesmelerde daha uzun oluyor. Kabaca birkaç cycle alır, 400 - 500 ns gibi olsa gerek ama kesin konuşmayayım.

3) İşlemcinin yapabileceklerinde içindeki kod kadar (hatta belki de daha fazla) mimarisinin de etkisi vardır. Gerçi ben bu tür bir iş için 18 serisi bir işlemcinin yeterli olacağı düşüncesindeyim. Ama bence mümkün olduğunca donanımsal PWM kullanmak daha iyi olur.
Gökçe Tağlıoğlu

fractal

konuya getirdiğin açıklamalar için teşekkürler.forumda diğer bir sorum var aslında bu onuyla ilgili.şimdi pwm kullandığımda capture modu kullanarak aynı anda puls leri sayabilirmiyim.bunda hata payı ne olur.gerçi diğer soru başlığımda konuyu dteaylı olarak açıkladım.imdi.benim high süremde puls 5 us.acaba pwm çıkışını hemen yanındaki yakalama moduna taksam ordanda puls sayılarımı kontrol etsem.sayarak sorun olurmu..
Restantum cogniscutur Quantum deligutur