STM32 Timer One Pulse kullanımı hakkında

Başlatan argelojik, 05 Nisan 2020, 12:48:10

argelojik


muhittin_kaplan

prescaler değerini (tim3) 0 dan farklı bir değer yapıp denermisiniz.
Ayrıca blogumdaki yazıda ben tetiklemeyi butondan almıştım düzenleyerek deneyebilirsiniz. ve neden tim5 den 2ms zamanlayıcı ile tim3 de 2ms zamanlayıcı yapmaya çalışıyorsunuz anlamadım.

argelojik

(prescaler değerini (tim3) 0 dan farklı bir değer yapıp denermisiniz.)
Tamam denerim hocam. Timer5 ten 2ms de bir tetikleme olacak ama Timer3 200us  pulse üretecek. Ben bu pulse'a delay koyabileceğim.

argelojik

Muhittin Hocam, Bu konudaki 3 numaralı mesajdaki resimde tam olarak ne yapmak istediğimi anlattığımı düşünüyorum.

muhittin_kaplan

Bence Kodun Biraz düzenlenmesi lazım.
Önce onePulse ile çalışma yapılması, bu iş kavrandığında tim5 ile simpletimer çalışması yapılması (her 2ms de bir) Tabi bunların interrup ile yapılması lazım.
Sonra Tim5 in Tim3 ü tetiklemesi sağlanmalı.
Kodlarınızda gördüğüm, PWM_start lar felan var bunları anlamadım.

argelojik

Hocam haklısınız. O pwm start kodlarını her şeyi denemek için koyduğum kodlardan kalmış.Görselde kalmış.Şimdi kaldırdım.  Hocam Timer5 (Master) interrupt kısmına kod yazmadan update event'ın ITR2 pini ile, Timer3 (Slave)  içeriden tetiklenemezmi? Anlamadım.
Alıntı yapılan: muhittin_kaplan - 06 Nisan 2020, 10:59:10Bence Kodun Biraz düzenlenmesi lazım.
Önce onePulse ile çalışma yapılması, bu iş kavrandığında tim5 ile simpletimer çalışması yapılması (her 2ms de bir) Tabi bunların interrup ile yapılması lazım.
Sonra Tim5 in Tim3 ü tetiklemesi sağlanmalı.
Kodlarınızda gördüğüm, PWM_start lar felan var bunları anlamadım.

argelojik

#21
Yani ben şimdi Timer5'in (master) her update event'ında yani interrupt kısmında, git Timer3'ü (slave)tetikle diye kod mu yazacağım?Bu otomatik olarak ITR2 pini ile gerçekleşmiyor mu?
Alıntı yapılan: argelojik - 06 Nisan 2020, 11:04:01Hocam haklısınız. O pwm start kodlarını her şeyi denemek için koyduğum kodlardan kalmış.Görselde kalmış.Şimdi kaldırdım.  Hocam Timer5 (Master) interrupt kısmına kod yazmadan update event'ın ITR2 pini ile, Timer3 (Slave)  içeriden tetiklenemezmi? Anlamadım. Bu otomatik olarak ITR2 pini ile gerçekleşmiyor mu?

muhittin_kaplan

#22
Alıntı yapılan: argelojik - 06 Nisan 2020, 11:06:21Yani ben şimdi Timer5'in (master) her update event'ında yani interrupt kısmında, git Timer3'ü (slave)tetikle diye kod mu yazacağım?Bu otomatik olarak ITR2 pini ile gerçekleşmiyor mu?
Evet.

Ayrıca
https://community.st.com/s/question/0D50X00009sWbv9SAC/masterslave-problem-on-tim3-in-stm32l476-slave-not-counting-when-itr2-selected

argelojik

Sayın Muhittin Kaplan hocam. Sizin gönderdiğiniz linkteki yani bloğunuzdaki kodu inceledim. Sizin projenizde ne Main ne While ne de interrupt kısmında  HAL_TIM_OnePulse_Start(&htim3, TIM_CHANNEL_2); satırı bulunmuyor. Bu nedenle sizin uygulamanız one pulse mode değil bir interrupt uygulaması. Buton ile gelen tetikleme ile bir kere led yakıp söndürüyorsunuz.  One Pulse Mode uygulamasında,
HAL_TIM_OnePulse_ConfigChannel(&htim3, &sConfig, TIM_CHANNEL_2, TIM_CHANNEL_1);
HAL_TIM_OnePulse_Start(&htim3, TIM_CHANNEL_2);
kodları olmalıdır. Hal kütüphanesinin bu kısmını incelerseniz göreceksiniz.Ben kütüphane de hata olduğunu düşünüyorum ve bulmaya çalışıyorum.

argelojik

Sayın hocam gönderdiğiniz linkte bu sorun konuşulmuş.Teşekkür ederim. Sorun Referance Manuel hatası gibi resimleri paylaşıyorum. TIM5 değil sanırım TIM15 olacakmış. Çok ilginç bir hata.  ITR2 ile  Tim5 e bağlı değilmiş yani. Bu hata Referance Manuelde nasıl olur anlamıyorum.Ben bu tabloya bakarak TIM5 seçmiştim.


 
Alıntı yapılan: muhittin_kaplan - 06 Nisan 2020, 11:17:32Evet.

Ayrıca
https://community.st.com/s/question/0D50X00009sWbv9SAC/masterslave-problem-on-tim3-in-stm32l476-slave-not-counting-when-itr2-selected

muhittin_kaplan

#25
One Pulse Inıt Edip, Normal Int Çalıştırmışım.Haklısınız. Düzelteyim.

argelojik

Sayın hocam dediğiniz gibi Timerlar arasındaki ITR bağlantısı yanlışmış. Timer8'i Master, Timer2'yi Slave yaptım.  Bu şekilde trigger olarak ITR1 olacakmış. Bunu yapınca Cubemx'te ITR1 için yeni bir Trigger bölümü açıldı. Hatayı sayenizde bulmuş oldum. Gün içinde bu modu çalıştırarak sonuçları buradan paylaşacağım. Tekrar çok teşekkür ederim. Referans Manuel hatasına kurban gittim. 5 günüm gitti.

muhittin_kaplan


argelojik

Hocam soruma evet demişsiniz ama bence bu cevabınız da yanlış. Çünkü Master Timer'da (Timer8) meydana gelen Update Event,  ITR1 internal bağlantısı ile Slave Timer (Timer2) tetiklenecektir. Yani benim Timer8'in interrupt fonksiyonuna gidip, Timer2'yi tetikle diye kod yazmama gerek yok. Ne düşünüyorsunuz? 
Alıntı yapılan: muhittin_kaplan - 06 Nisan 2020, 11:17:32Evet.

Ayrıca
https://community.st.com/s/question/0D50X00009sWbv9SAC/masterslave-problem-on-tim3-in-stm32l476-slave-not-counting-when-itr2-selected

muhittin_kaplan

TIM5 ile alaklı olsaydı evet olacaktı.
GRID de TIM15 olunca herhangi bir kod a ihtiyacınız olmayacak.