Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Cortex ARM => Konuyu başlatan: sımışka - 17 Haziran 2020, 23:46:54

Başlık: Stm32f103 Timer1 Counter Period
Gönderen: sımışka - 17 Haziran 2020, 23:46:54
Merhaba,

Timer1 16 bitlik,dışarıdan gelen puls leri saydırıyorum __HAL_TIM_GET_COUNTER(&htim1) makrosu ile. Maksimum periyod değeri 16bitlik timer olduğu için 65535 ile sınırlı. 2^32 benim işime yarıyor. Bu hazır makro dışında nasıl bir yol izlemem gerekiyor ?

(https://i.ibb.co/3kdMgG8/Ekran-Al-nt-s.jpg) (https://ibb.co/3kdMgG8)
Başlık: Ynt: Stm32f103 Timer1 Counter Period
Gönderen: RaMu - 18 Haziran 2020, 00:15:18
Bu 32 bit mcu ların 16 bit timerlarının olması aşırı derecede saçma geliyor bana.

Timer 0xFFFF olduğunda kesme verecek ve kesmede bir değişkeni arttıracaksın.
Timer güncel değerine bakarken bu değişkenide hesaba katacaksın.

Bazı timerları birbirine bağlayabiliyorsun.
Biri istediğin değere dolunca (yukarıdaki 0xFFFF gibi)
diğerini bir arttırabiliyor.
Yani ilk söylediğimi otomatik kendi yapıyor.
Sende bu iki timerın CNT değerlerini birleştirip 32 bit kullanıyorsun.
Başlık: Ynt: Stm32f103 Timer1 Counter Period
Gönderen: Mucit23 - 18 Haziran 2020, 00:27:53
https://www.st.com/resource/en/application_note/cd00165509-achieving-32bit-timer-resolution-with-software-expansion-for-stm32cube-and-standard-peripheral-library-stmicroelectronics.pdf

Bu dökümana bakınız
Başlık: Ynt: Stm32f103 Timer1 Counter Period
Gönderen: Tagli - 18 Haziran 2020, 09:09:03
Bazı modellerde bazı timer'lar doğrudan 32 bit olabiliyor. Benim gördüğüm modellerde, olursa TIM2 ve TIM5 32 bit oluyor. F042, F051, F407'de böyle. F103'te yok maalesef. Ancak @RaMu'nun dediği gibi iki timer'ı birbirine bağlayabilirsin.
Başlık: Ynt: Stm32f103 Timer1 Counter Period
Gönderen: sımışka - 18 Haziran 2020, 20:49:30
Bu modelinde ne yazık ki hiç 32 bitlik timer yok. Aslında 2 adet timeri birleştirip yaptım fakat tüm timer kanallarını kendi içinde kullandığım için bu yöntem yerine farklı bir yöntem aradım. Şimdilik timer counter yerine harici dış kesme kullanıyorum. Teşekkür ederim cevaplar ve paylaşımlar için  ::ok