Arduino Ameba - mbed Ticker
實驗前可以先做 LED 閃爍 來驗證板子 GPIO 是正確的
--
有時需要 Timer function 做多工.
這個 example : https://github.com/neojou/arduino-ameba/tree/master/example/OS/Timer1/TickerApp
是仿造 mbed Ticker API : https://developer.mbed.org/handbook/Ticker
來實踐.
相關的原始碼程式在 hardware/arduino/ameba/cores/arduino/
( 以後可以搬到 library, 就不用每次編譯 )
- Ticker.cpp / Ticker.h
- TimerEvent.cpp / TimerEvent.h
- ticker_api.c
- us_ticker_api.c
hardware/arduino/ameba/system/libameba/sw/lib/sw_lib/mbed/hal
- ticker_api.h
- us_ticker_api.h
- us_ticker.h
底層 HAL 使用的是 32K timer, 上層使用 list 來利用一個 Hardware timer 實現多個 software timer.
---
和 mbed 不同的是, 另外加了 thread 處理在 Ticker.cpp.
這樣一來 Ticker function 並不是在 ISR 中處理, 而是在 Thread 中執行.
可避免許多限制.
如底下範例, 執行 analogRead(), 原本在 ISR 中無法執行, 修改成 Thread 後, 可正確執行
https://github.com/neojou/arduino-ameba/blob/master/example/ticker-adc/ticker-adc.ino
留言
張貼留言