Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: Mucit23 - 18 Mayıs 2022, 18:25:39

Başlık: 32 Bit Timer
Gönderen: Mucit23 - 18 Mayıs 2022, 18:25:39
Selamlar

STM32F103C8 çipimdeki Timer'lar 16 bit çözünürlüğe sahip. Benim  1us veya adım aralığında 32 bit'lik timer'a ihtiyacım var. Şuanda 0-65535 us aralığında 1uS aralıklarla kesme oluşturabiliyorum ama daha geniş bir aralıkta çalışmam gerekiyor. Bu yüzden 32 bit timer ihtiyacım var. Bu ihtiyacı 16 bit timer ile optimize bir şekilde karşılamak istersek ne yapmamız gerekiyor?
Başlık: Ynt: 32 Bit Timer
Gönderen: z - 18 Mayıs 2022, 18:56:46
Tahmminen timerlarin kaskat baglanabiliyor olmasi lazim.
Başlık: Ynt: 32 Bit Timer
Gönderen: e-zeki - 18 Mayıs 2022, 18:57:20
Link (https://www.google.com/url?sa=t&source=web&rct=j&url=https://www.st.com/resource/en/application_note/an2592-achieving-32bit-timer-resolution-with-software-expansion-for-stm32cube-and-standard-peripheral-library-stmicroelectronics.pdf&ved=2ahUKEwi5geT-s-n3AhW5Q_EDHaWjCV8QFnoECBAQAQ&usg=AOvVaw33rrZya1Av62Cat7gw2_Dl)
Hocam dosyayı Bi inceleyin input capture mode ile ıki timer kullanarak yapılıyor
Başlık: Ynt: 32 Bit Timer
Gönderen: Mucit23 - 18 Mayıs 2022, 23:03:26
Timer da repetion counter ne için kullanılıyor?
Başlık: Ynt: 32 Bit Timer
Gönderen: magnetron - 18 Mayıs 2022, 23:50:07
void TIM2_IRQHandler(void){ // ENCODER ICIN
 TIM_ClearFlag(TIM2, TIM_FLAG_Update);
 TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
   uint16_t current = TIM2->CNT;
      if ( current < 0x7FFF ) counterhi += 1; // Roll over in upwards direction
      else counterhi -= 1; // Roll over in downwards direction

hocam ben timer update interupt içinde böyle kod yazdım enkoder okudum
üst 16 bit wordu software olarak oluşturdum çünkü orası daha yavaş değişiyor
Başlık: Ynt: 32 Bit Timer
Gönderen: e-zeki - 19 Mayıs 2022, 00:05:32
Alıntı yapılan: Mucit23 - 18 Mayıs 2022, 23:03:26Timer da repetion counter ne için kullanılıyor?
hocam repetition counter'a yazacağınız değer kadar timer interruptını öteler. örneğin 1 us interrupt kurdunuz repetiona 3 yazdınız her 1us de bir kesmeye girmeden repetionu bir azaltır ve 0 olduğunda interrupt tetikler.