December 5, 2021

Blogna Kang U-2 Man

STM32, Embedded System, Microcontroller, ARM Cortex-M, RTOS, FreeRTOS

Pengenalan Timer STM32 Bagian 1

4 min read

بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم

Pada artikel ini, Insya Allah kita akan membahas tentang timer di mikrokontroler STM32. Pembahasan akan di-fokuskan kepada STM32F207, tetapi pada dasarnya arsitektur timer untuk semua keluarga STM32 adalah sama. Untuk perbedaan detailnya bisa merujuk kepada datasheet dan reference manual dari masing-masing STM32.

STM32F207 mempunyai 14 buah timer yang diberi nama TIM1 – TIM14. Timer-timer ini berdasarkan fungsi dan fitur dikelompokan menjadi 3, yaitu

  1. Timer dasar (basic timer)
  2. Timer fungsi umum (general purpose timer) dan
  3. Timer tingkat lanjut (advanced timer)

Timer dasar merupakan timer yang hanya mempunyai fungsi dasar pewaktuan (time base) dan tambahan fungsi untuk menyulut (triger) DAC. Timer ini tidak mempunyai input atau output. Timer fungsi umum merupakan timer yang selain menyediakan fungsi pewaktuan juga mempunyai input dan output. Inputnya bisa digunakan untuk pengukuran frekuensi sedangkan outputnya bisa digunakan misal untuk mengeluarkan PWM. Sedangkan timer fungsi lanjutan merupakan timer dengan fitur-fitur tambahan secara hardware misal untuk pengendalian motor.

Timer-Timer di STM32F207

Timer-timer tersebut bekerja secara mandiri dan mempunyai sumber (register data dan kendali, vektor interupsi) masing-masing. Tetapi timer-timer tersebut bisa diatur untuk bekerja secara sinkron sehingga bisa membentuk sebuah rangkaian timer dengan fungsi komplek tanpa memerlukan software yang rumit. Selain itu semua timer bisa dihubungkan dengan DMA.

Timer mempunyai struktur, seperti ditunjukan oleh diagram blok TIM1, sebagaiberikut:

  • Unit kendali master/slave
  • Unit time-base
  • Unit timer-channel
  • Unit fitur pengereman (break feature unit)
Diagram Blok TIM1 dan TIM8

Unit kendali master/slave berfungsi terutama untuk pengendalian unit time-base seperti mengatur sinyal clock dan arah pencacahan (naik atau turun) dari unit time-base. Pada fungsi sinkronisasi timer, unit ini akan menentukan apakah timer berfungsi sebagai master atau slave. Unit ini juga bisa digunakan untuk mengeluarkan sinyal sinkronisasi (sinyal TRGO) ke timer lain atau ke ADC/DAC. Tidak semua timer STM32F207 mempunyai unit kendali master/slave yang berfungsi penuh misalnya timer dasar (TIM6 dan TIM7).

Unit time-base merupakan bagian timer yang akan melakukan pencacahan (counting) sinyal clock yang diumpankan dari unit master/slave. Secara umum timer akan mempunyai sebuah pencacah (counter) 16 bit atau 32 bit. Pencacah tersebut bisa diprogram untuk melakukan pencacahan naik (up counter), pencacah turun (down counter) atau bahkan naik dan turun (up/down counter).

Pencacahan dilakukan dari sumber clock yang bisa dipilih dan nilai pembagi clock (pre-scaler) yang bisa diprogram. Pada saat jadi pencacah naik, nilai cacahan akan berhenti di sebuah nilai auto-reload sedangkan saat jadi pencacah turun cacahan di mulai dari nilai auto-reload. Nilai auto-reload ini bisa diprogram dan bisa diperbaharui walau pun timer sedang jalan (on the fly). Setiap akhir cacahan, timer bisa dipogram untuk membangkitkan interupsi atau event. Timer juga bisa mempunyai input atau output yang bisa dihubungkan ke salah satu GPIO, sehingga bisa digunakan untuk mengukur frekuensi sebuah sinyal yang berasal dari sumber luar atau mengeluarkan sinyal dengan frekuensi dan lebar pulsa yang bisa diprogram.

Pada timer tingkat lanjut unit time-base dilengkapi juga dengan pencacah pengulangan (repetition counter). Pencacah ini akan mencacah sudah berapa kali kondisi overflow atau underflow terjadi. Setiap kali terjadi overflow atau underflow, isi pencacah pengulangan akan dikurangi 1 dan akan membangkitkan event jika isi register mencapai nol. Isi register pengulangan akan diisi ulang (auto-reload) dengan nilai yang tersimpan di register TIMx_RCR. Dengan adanya pencacah pengulangan ini, timer hanya akan membangkitkan event saat pencacah pengulangan mencapai nol bukan saat terjadinya overflow atau underflow. Pencacah pengulangan ini berguna terutama saat pembangkitan sinyal PWM.

Unit timer-channel merupakan bagian timer yang berfungsi untuk menghubungkan  dengan eksternal mikrokontroler, sehingga unit ini akan dipetakan ke pin mikrokontroler. Unit ini bisa diatur sebagai masukan untuk menerima sinyal clock dari luar atau sebagai  keluaran untuk mengeluarkan sinyal PWM misalnya.

Unit fitur pengereman (break feature unit) hanya ada di timer tingkat lanjut (TIM1 dan TIM8). Fungsi ini mengharuskan timer mempunyai keluaran yang komplemen. Unit ini bisa digunakan pemadaman yang aman pada inverter daya.

Fitur lengkap timer STM32F207 adalah sebagai berikut:

  1. Mempunyai pencacah isi ulang (auto-reload counter) yang bisa diprogram untuk mencacah naik (up counter), turun (down counter) atau naik/turun. Semua timer mempunyai pencacah 16 bit, kecuali TIM2 dan TIM5 yang mempunyai pencacah 32 bit.
  2. Mempunyai register pra-skalar 16 bit yang bisa digunakan untuk membagi sinyal clock masukan dengan 1 – 65536
  3. Mempunyai sampai 4 kanal input capture, output compare, pembangkitan sinyal PWM dan mode keluaran 1 pulsa.
  4. Keluaran komplemen dengan fitur dead time yang dapat diprogram
  5. Rangkaian sinkronisasi untuk mengendalikan sinyal eksternal dan sinkronisasi denganbebearapa timer lain
  6. Dilengkapi dengan pencacah pengulangan sehingga timer hanya akan membangkitkan sebuah event setelahbeberapa kali terjadi siklus di pencacah timer.
  7. Masukan pengereman (break input) untuk membuat keluaran timer berada di kondisi reset atau kondisi yang diketahui, hanya ada di timer tingkat lanjut.
  8. Pembangkitan interupsi atau DMA saat pencacah mengalami overflow, underflow, inisialisasi atau pencacahan oleh pemicu dari internal atau eksternal.
  9. Mendukung enkoder quadrature/incremental maupun sensor hall untuk keperluan pengukuran atau penentuan posisi.
  10. Masukan triger untuk clock eksternal atau manajemen arus siklus demi siklus.

Fitur-fitur lengkap tersebut hanya dimiliki oleh timer tingakt lanjut (TIM1 dan TIM8), sementara timer dasar dan timer fungsi umum hanya mempunyai sebagian fitut tersebut. Sebagai contoh timer dasar tidak mempunyai input capture maupun output compare sehingga timer dasar tidak dipetakan ke pin mikrokontroler, tetapi timer dasar secara khusus difungsikan untuk memicu kerja DAC yang tidak dimiliki oleh timer lain.

Diagram Blok Timer Dasar

Timer dasar dan juga timer fungsi umum (TIM9 – TIM14) hanya bisa melakukan pencacahan naik (count up), sementara timer lain bisa juga diprogram untuk melakukam cacahan turun (count down) atau cacahan naik/turun (count up/down).

Diagram Blok TIM2 – TIM5

Timer tingkat lanjut (TIM1 dan TIM8) serta timer fungsi umum (TIM2 – TIM5) masing-masing mempunyai sampai 4 input capture dan 4 output compare (TIMx_CH1 – TIMx_CH4) dan sebuah masukan pemicu eksternal (TIMx_ETR).  Sedangkan TIM9 dan TIM12 masing-masing mempunyai 2 input capture dan 2 output capture, sementara di TIM10, TIM11, TIM13 dan TIM14 hanya mempunyai 1 input capture dan 1 output compare. Input capture bisa digunakan untuk pengukuran frekuensi sebuah sinyal atau membaca sebuah enkoder atau sensor hall untuk pengukuran posisi. Sedangkan output compare bisa digunakan untuk mengeluarkan sinyal misal sinyal PWM untuk pengendalian motor.

Diagram Blok TIM9 – TIM12
Diagram Blok TIM10/11/13/14

Semoga Bermanfaat…

Visits: 9 Visits: 98021

Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright © All rights reserved. | Newsphere by AF themes.