December 5, 2021

Blogna Kang U-2 Man

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

ARM Cortex-M3: Manajemen Daya

2 min read

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

Prosesor ARM adalah prosesor yang sejak awal dirancang untuk bekerja dengan konsumsi daya yang rendah. Pemilihan jenis prosesor dengan instruksi yang dikurangi (RISC) menjaga agar pabrikasi prosesor tidak membutuhkan rangkaian logika yang rumit dan jumlah gate yang rendah sehingga konsumsi daya tetap rendah. Selain itu juga menambahkan instruksi-instruksi untuk mode penghemat daya.

Prosesor ARM Cortex-M3 dilengkapi dengan fungsi atau mode ‘tidur’ (sleep mode). Pada saat berada di mode sleep, clock ke core Cortex-M3 berhenti bekerja tetapi ke periperal tetap, sehingga prosesor bisa dibangunkan melalui sebuah interupsi. walaupun demikian apa yang terjadi ketika mode sleep tergantung dari pabrik silikon yang membuat prosesor tersebut. Bisa hanya menghentikan clock ke prosesor, tetapi ke periperal tetatp jalan, atau semua clock dimatikan. Kalau semua clock sudah dimatikan, hanya reset yang bisa membangunkan kembali prosesor dari mode tidurnya.

ARM menyediakan instruksi WFI (Wait For Interrupt) atau WFE (Wait For Event) untuk membuat prosesor masuk ke mode sleep. Ada 2 cara prosesor memasuki mode sleep setelah instruksi WFI dan WFE yang ditentukan oleh bit SLEEPONEXIT register SCR (System Control Register), yaitu:

  1. Jika bit SLEEPONSXIT bernilai 0, maka prosesor akan langsung memasuki mode sleep segera setelah instruksi WFI atauWFE
  2. Jika bit SLEEPONSEXIT di-set, prosesor akan memasuki mode sleep segera setelah keluar dari ISR dengan prioritas palaing rendah.
Register SCR

Untuk keluar dari mode sleep, ditentukan oleh instruksi apa yang menyebabkan prosesor memasuki mode sleep. Jika prosesor memasuki mode sleep karena instuksi WFI, maka semua interupsi periperal yang dikenali oleh kendali interupsi NVIC bisa membangunkan prosesor dari mode sleep. Prioritas interupsi tentunya harus lebih tinggi dari prioritas yang sekarang sedang terjadi atau yang di-set oleh register BASEPRI atau register mask (PRIMASK dan FAULTMASK).

Jika instruksi WFE yang membuat prosesor ke dalam mode sleep, maka untuk membangunkannya diperlukan sebuah event yang bisa berupa interupsi, interupsi yang terpicu sebelumnya atau event dari eksternal berupa pulsa ke sinyal RXEV (Receive Event). Sebuah interupsi masih bisa membangunkan prosesor walaupun prioritasnya lebih rendah daripada register BASEPRI atau register mask asalkan bit SEVONPEND di register SCR di-set.

Selain dengan mengaktifkan mode sleep, penghematan daya pada prosesor ARM Cortex-M3, bisa dilakukan dengan cara:

  • Mengurangi frekuensi clock prosesor
  • Mematikan clock ke periperal-periperal yang tidak digunakan, pada umumnya setelah reset semua periperal dalam kondisi tidak aktif

Semoga bermanfaat…

Visits: 5 Visits: 97937

Leave a Reply

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

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