December 5, 2021

Blogna Kang U-2 Man

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

Pengenalan Timer STM32 Bagian 2

5 min read

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

Pada bagian kedua artikel tentang timer ini, Insya Allah kita akan membahas tentang mode kerja di timer STM32, dalam artikel ini mengacu kepada timer-timer yang dimiliki oleh STM32F207. Untuk seri STM32 yang lain bisa mengacu ke datasheet dan reference manual dari masing-masing STM32.

MODE CACAHAN

Timer bisa diprogram untuk melakukan cacahan naik (up counter), cacahan turun (down counter) dan cacahan naik/turun atau central-aligned counter, kecuali TIM9 – TIM14 dan timer dasar yang hanya bisa melakukan cacahan naik.

Pada mode cacahan naik, timer/counter akan melakukan cacahan dimulai dari nol kemudian naik sampai mencapai nilai auto reload. Pada saat ini timer mengalami overflow dan bisa diprogram untuk membangkitkan interupsi atau memicu DMA. Cacahan kemudian diawali lagi dari nol.

Cacahan Naik dengan Nilai Auto-reload 36

Gambar di atas menunjukan timer saat cacahan naik, sumber clock diambil dari sumber internal (CK_INT). Dengan nilai pembagi clock (pra-skalar) 1, sehingga clock timer (CK_CNT) akan sama dengan CK_INT. Cacahan dimulai saat CNT_EN di-set, cacahan dimulai dari 0 dan naik sampai nilai auto-reload (36), saat mencapai nilai auto-reload, timer mengalami overflow dan akan men-set update event (UEV) dan flag interupsi (UIF). Cacahan kemudian diawali lagi dari 0.

Saat mode cacahan turun, timer akan mulai mencacah dari nilai auto reload kemudian turun sampai mencapai nol. Timer dikatakan mengalami underflow dan bisa membangkitkan interupsi atau memicu DMA. Cacahan kemudian akan diawali lagi dari nilai auto reload.

Cacahan Turun dengan Nilai Auto-reload 36

Pada mode central aligned, timer akan memulai pencacahan dari nol dan naik sampai mencapai nilai auto reload – 1. Pada saat ini timer bisa membangkitkan interupsi overflow. Timer kemudian melanjutkan dengan melakukan cacahan turun dimulai dari nilai auto reload dan turun sampai mencapai 1. Interupsi undergflow bisa dibangkitkan. Dan timer akan kembali mencacah naik dari 0.

Mode Central-aligned Counter dengan Auto-reload 37

SUMBER CLOCK

Sumber clock bisa dipilih sebagai  berikut:

  1. Clock internal (C_INT).
  2. Clock eksternal mode 1 (TIx)
  3. Clock eksternal mode 2 (ETR), hanya untuk TIM1, TIM2, TIM3, TIM4 dan TIM8
  4. Picu (trigger) internal (ITRx), kecuali TIM6/7/10/11/13/14

Sumber clock ini kemudian akan dibagi oleh pra-skalar sebelum masuk ke pencacah. Semua timer mempunyai pra-skalar 16 bit.

Clock eksternal mode 1 diumpankan melalui pin TIx (TIMx_CHx). Sumber clock eksternal ini bisa diatur untuk di-filter atau tidak. Counter bisa melakukan pencacahan saat transisi naik (rising) atau transisi turun (falling) dari sinyal clock tersebut.

Clock Eksternal Mode 1

Clock eksternal mode 2 diumpankan ke pin pemicu eksternal (TIMx_ETR). Clock eksternal ini bisa dibagi 1, 2, 4, atau 8. Oleh karena ada pembagi di sisi masukannya, frekuensi clock mode 2 ini bisa lebih tinggi dari pada frekuensi internal timer, misal frekuensi clock bus APB. Clock eksternal mode 2 hanya dimiliki oleh TIM1, TIM2, TIM3, TIM4 dan TIM8. Clock mode 2 hanya bisa melakukan pencacahan di sisi naik sinyal clock.

Clock Eksternal Mode 2

Fungsi filter di sisi masukan adalah untuk memvalidasi sinyal clock sesuai dengan durasi yang telah ditentukan. Jika durasi atau periode sinyal clock kurang dari durasi ambang yang telah ditentukan, sinyal tersebut tidak akan dicacah sebagai 1 perioda.

Mode picu internal, clock berasal dari output timet lain, sehingga beberapa timer bisa bekerja secara sinkron.

UNIT CAPTURE DAN COMPARE

Setiap timer, kecuali timer dasar mempunyai unit capture dan compare. Unit ini dikendalikan oleh sebuah register. Register ini mempunyai fungsi yang berbeda tergantung dari pengaturan, jika sebagai capture, register ini akan menjadi input dengan filter dan mode pengukuran PWM (Pulse Width Modulation) sedangkan sebagai compare register ini akan berfungsi sebagai pembanding dan fungsi untuk menghasilkan sinyal PWM dan mode 1 pulsa.

Unit Capture/Compare

Unit capture dan compare ini sebenarnya terdiri atas sebuah register preload dan register shadow. Tetapi pembacaan dan penulisan ke unit ini akan selalu melalui register preload. Pada mode capture, data hasil capture akan disimpan ke register shadow yang kemudian disimpan juga ke register preload. Pada mode compare, isi register preload akan digandakan ke register compare untuk kemudian dibandingkan dengan pencacah.

MODE INPUT PWM

Mode ini digunakan untuk mengukur frekuensi maupun siklus kerja (duty cycle) sebuah sinyal PWM dari luar. Memanfaatkan mode input capture. Pada mode ini, 2 buah masukan (misal IC1 dan IC2) dan 2 buah register capture digunakan, misal TIMx_CCR1 dan TIMx_CCR2. Kedua masukan ini diprogram untuk menggunakan pin input timer yang sama misal TI1 tetapi kedua unit capture diprogram untuk bekerja pada transisi sinyal yang berlawanan, yang satu aktif saat transisi naik (IC1) sedangkan register capture yang lainnya aktif saat transisi turun (IC2).

Pengukuran Sinyal PWM

Kendali slave diprogram di mode reset. Pada mode ini, sinyal  transisi naik akan menginisialisasi atau mereset pencacah. Pencacah akan mulai melakukan cacahan dari awal. Pada saat transisi turun, akan terjadi capture di IC2, sehingga isi pencacah akan disimpan ke register TIMx_CCR2. Kemudian pada transisi naik berikutnya terjadi capture di IC1 dan isi pencacah akan disimpan di register TIMx_CCR1 dan pencacah pun akan mengalami reset.

Dengan memperhatikan proses di atas, TIMx_CCR2 akan menyimpan periode saat sinyal clock berada pada logika tinggi, dengan kata lain menyimpan lebar pulsa (duty cycle) dan TIMx_CCR1 akan menyimpan periode sinyal yang diukur.

MODE OUTPUT COMPARE DAN PWM

Unit compare bisa digunakan untuk mengeluarkan sinyal atau pun sebagai penanda bahwa sebuah periode waktu telah berjalan. Unit compare ini akan men-set pin yang dipetakan ke timer sebagai output.

Sesuai dengan namanya unit ini akan membandingkan isi pencacah dengan isi TIMx_CCRx, ketika isinya sama (match) maka output timer (OCx) bisa diatur untuk di-set, reset atau togggle. OCx ini bisa dihubungkan dengan pin mikrokontroler, sehingga kondisi di pin tersebut akan sama dengan kondisi OCx. Pada saat match juga timer bisa diatur untuk mengirim sinyal interupsi ke CPU.

Mode Output Compare

Salah satu contoh penggunaan unit compare adalah pembangkitan sinyal PWM (Pulse Width Modulation). Sinyal PWM bisa dihasilkan dengan frekuensi ditentukan oleh register auto-reload (TIMx_ARR) dan siklus kerja (duty cycle) ditentukan dengan nilai yang ada di register TIMx_CCRx.

Sinyal PWM bisa diatur secara mandiri untuk setiap unit compare (satu sinyal PWM untuk setiap output timer OC). Ada 2 mode PWM yang bisa dipilih mode 1 dan mode 2. Di mode PWM mode 1, sinyal OCxREF akan aktif (logika 1), selama nilai pencacah TIMx_CNT<TIMx_CCRx dan menjadi tidak aktif (OCxREF=0) selama TIMx_CNT>TIMx_CCRx. Sedangkan di PWM mode 2, sinyal OCxREF akan menjadi aktif selama TIMx_CNT>TIMx_CCRx dan menjadi tidak aktif saat TIMx_CNT<TIMx_CCRx. Sinyal OCxREF ini akan menjadi referensi untuk sinyal OC, artinya saat OCxREF aktif sinyal OC juga akan aktif. Logika aktif untuk sinyal OC bisa diatur melalui bit CCxP di register TIMx_CCER apakah aktif tinggi atau aktif high.

Berdasarkan arah pencacahan, PWM bisa dibangkitkan sebagai mode edge-aligned saat pencacah diatur untuk pencacahan naik atau pencacahan turun dan mode center-aligned.

Di mode edge-aligned, pencacah diatur untuk mencacah naik atau turun. Gambar di bawah menunjukan diagram pewaktuan PWM edge-aligned pada saat pencacahan naik. Nilai auto-reload adalah 8 dan PWM mode 1. Selama nilai register pencacah TIMx_CNT<TIMx_CCRx, OCxREF akan aktif (berlogika 1) dan menjadi tidak aktif saat TIMx_CNT>TIMx_CCRx. Ketika  nilai compare (CCRx) lebih besar dari nilai auto reload, OCxREF akan menjadi 1 dan ketika CCRx=0 maka OCxREF akan menjadi 0.

PWM Edge-aligned

Saat pencacahan turun, OCxREF akan aktif selama TIMx_CNT>TIMx_CCRx. Ketika nilai CCRx lebib besar dari pada nilai auto-reload, OCxREF akan menjadi 1. Dan karena nilai pencacah akan selalu lebih besar dari pada nilai CCRx, di mode ini tidak bisa membangkitkan 0% PWM.

Di mode PWM center-aligned, pencacah diatur untuk melakukan pencacahan naik dan turun. Konsisi aktif atau tidaknya OCxREF tetap tergantung mode 1 atau mode 2. Gambar di bawah menunjukan diagram pewaktuan PWM center-aligned.

PWM Center-aligned

Semoga Bermanfaat

Visits: 11 Visits: 98026

Leave a Reply

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

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