dspic33 sorusu

Başlatan mr.engineer, 14 Temmuz 2024, 19:56:56

mr.engineer

Merhaba,

Elimde bir sccp modülü ile 50 milisaniyede bir ürettiğim 5 tane pulse'dan oluşan bir sinyal var. Pulse'ların genişliği 50 usec. %50 duty cycle. Yani periyodu 100 usec. 5 pulse'dan sonra 50 msec süre dolana kadar output low'da kalıyor.

Yapmak istediğim şey ikinci bir sccp modülü kullanarak birinci sccp modülündeki pulse'ların tam ortasında ikinci sccp timer'ından 1 usec'lık pulse üretmek.

Birinci sinyali ürettim. İkinci sinyali üretmek için, 1. sinyalin rising edge'inde 2. sinyali başlatmam gerekiyor.

Senkronize mod ile ikinci timer'ı tetiklemeye çalıştım ama istediğim gibi olmadı. Bu konuda öneriniz var mıdır? (İşlemci dspic33ck256mp508)



RaMu

Ne istiyordun ne oldu?

Center aligned, edge aligned problemi olabilir.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

mr.engineer

Alıntı yapılan: RaMu - 14 Temmuz 2024, 21:58:00Ne istiyordun ne oldu?

Center aligned, edge aligned problemi olabilir.

Center aligned mode kullanmadım. İkinci modülü 1. ile tetikledim fakat istediğim şekli elde edemedim.
Bir de ikinci sinyal her zaman birinci sinyalin ortasından başlamayabilir. Önemli olan birinci sinyalin rising edge'inde ikinci timer'ı saydırmaya başlatmak.

picmanya

1. Timer rising edge anına-süresine geçildiği anda (PRY1 dolduğunda), kendi Interrupt'una girse ve burada,
2. Timer'a start verip çalıştırsa (2. Timer'in PRY2 değeride istenilen süre değerine, bir değişkenden gelen değerle istenildiği gibi ayarlanabilir. Veya PRY2 'ye istenilen değer atanadabilir. 1 usec gibi) ve
2. Timer PRY2 değeri-süreside dolunca (1 usec) interruptuna gidip kendini durdursa, ve döngü halinde bu sürdürülse,
böyle birşey yapılsa olurmu acaba.

RaMu

Aynı timer ın iki PWM kanalını kullanıp
PDC1 %50
PDC2 %1
duty olacak şekilde ayarlasan istediğin olmuyor mu?

İstediğin sinyal ilk mesajındaki eklediğin resimdeki gibi mi?
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

mr.engineer

Alıntı yapılan: RaMu - 15 Temmuz 2024, 22:38:16Aynı timer ın iki PWM kanalını kullanıp
PDC1 %50
PDC2 %1
duty olacak şekilde ayarlasan istediğin olmuyor mu?

İstediğin sinyal ilk mesajındaki eklediğin resimdeki gibi mi?

Aynı modül kullanılacaksa istediğim gibi olur fakat aynı modül ile bu şekilde iki farklı sinyali hangi modda üretiyoruz?

picmanya

#6
1. sinyal için ccp1 modülü ayarlanır.
2. sinyal için ccp2 modülü ayarlanır.

Ayrıca 1 tane bağımsız Timer1 kesmeli olarak ayarlanır.
Timer1 in PRY1 değeri ccp2 modülün devreye girmesi istenen süreye ayarlanır (ilk çizimde cc1 in % 25 kadar bir süre görünüyor.)

ccp1 modülü ve Timer1 modülü aynı anda başlatılır.
Timer1 kesmesi oluştuğunda ccp2 modülü başlatılır ve hemen sonrasında Timer1 çalışması durudurlur, kesmesi oluşmaz artık.

ccp1 istenildiği gibi çalışmaya devam eder, ccp2 de istenildiği gibi çalışmaya devam eder ve aynı zamanda ccp2 sinyali ccp1 sinyalinin istenilen yerinde devreye girmiş de olur.

ccp1 ve ccp2 nin frekansı sabit, sinyal iş yapan ve boş geçen süreleri genlikleri istenildiği gibi ayarlanabilir.
ccp2 nin ccp1 üzerinde çalışmaya başlayacağı süre tekrar değiştirlmek istenirse, Timer1 in PRY1 değeri istenilen yeni değerle değiştirilip, Timer1 in zaman başlangıcıda yani PRY1 değeri içeriği, ccp1 timer pry değerine eşitlenir ve durdurulmuş olan Timer1 ve kesmesi tekrar çalıştırılır.

Bir sonraki ilk Timer1 kesmesinde ccp2 ye tekrar start restart verilir. Tabi burda ccp2 tekrar start verildiği için onun timerinin pry değeride zamanı baştan başlar başlamıyorsa başlatılır.
işlemler sonunda Timer1 tekrar durudurulur.

Böyle bir şey yapılsa olurmu.

mr.engineer

Alıntı yapılan: picmanya - 16 Temmuz 2024, 12:14:591. sinyal için ccp1 modülü ayarlanır.
2. sinyal için ccp2 modülü ayarlanır.

Ayrıca 1 tane bağımsız Timer1 kesmeli olarak ayarlanır.
Timer1 in PRY1 değeri ccp2 modülün devreye girmesi istenen süreye ayarlanır (ilk çizimde cc1 in % 25 kadar bir süre görünüyor.)

ccp1 modülü ve Timer1 modülü aynı anda başlatılır.
Timer1 kesmesi oluştuğunda ccp2 modülü başlatılır ve hemen sonrasında Timer1 çalışması durudurlur, kesmesi oluşmaz artık.

ccp1 istenildiği gibi çalışmaya devam eder, ccp2 de istenildiği gibi çalışmaya devam eder ve aynı zamanda ccp2 sinyali ccp1 sinyalinin istenilen yerinde devreye girmiş de olur.

ccp1 ve ccp2 nin frekansı sabit, sinyal iş yapan ve boş geçen süreleri genlikleri istenildiği gibi ayarlanabilir.
ccp2 nin ccp1 üzerinde çalışmaya başlayacağı süre tekrar değiştirlmek istenirse, Timer1 in PRY1 değeri istenilen yeni değerle değiştirilip, Timer1 in zaman başlangıcıda yani PRY1 değeri içeriği, ccp1 timer pry değerine eşitlenir ve durdurulmuş olan Timer1 ve kesmesi tekrar çalıştırılır.

Bir sonraki ilk Timer1 kesmesinde ccp2 ye tekrar start restart verilir. Tabi burda ccp2 tekrar start verildiği için onun timerinin pry değeride zamanı baştan başlar başlamıyorsa başlatılır.
işlemler sonunda Timer1 tekrar durudurulur.

Böyle bir şey yapılsa olurmu.

Hocam bu şekilde çalıştırmak yerine sccp modüllerinin senkronize/trigger özelliğini kullanmak istemiştim. Biraz karışık oldu ama anlattığınıza benzer bir şekilde senkronize özelliğini de kullanarak yaptım.