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




留言

熱門文章