請問這個要求需要使用到multi-task甚至是RTOS嗎?

作者 firststop0 於 2017年09月11日 12:01:17
MCU: PIC16F1824
Compiler: XC8
IDE: X
各位好,小弟我目前在寫一個project。需求"大致"(需求很細故不贅述)如下:

1.輸出一PWM,週期為一秒,duty視情況需求為16% or 32%
2.有兩顆LED,閃爍最短周期0.25秒(duty33%),最長2秒(duty50%)
3.I2C通訊,週期為一秒
4.最高priority的外部中斷(執行後MCU自動沒有電源)

順序:

MCU利用I2C抓取slave端的資料,判定電池在哪個狀態,如果為低電壓,則輸出16%duty之PWM同時控制LED閃爍;如果為中電壓,輸出32%duty之PWM同時控制LED閃爍,在這過程中如果有外部中斷則執行。

困難:

如果LED閃爍的方式是用delay的話,當外部中斷發生時並不能馬上執行,所以不能用delay的方式寫。且在delay中也無法切換PWM的頻率。

上網查了FreeRTOS跟Salvo,想說找寫好的API來呼叫並學習如何使用,但遇到以下困難點:

1.FreeRTOS沒有支援PIC16
2.Salvo有支援PIC16,但所使用的compiler是HI-TECH

如果資訊提供不足,請知會我一聲,小弟會隨後補上。
想請問各位前輩,小弟目前該從哪裡著手比較好?這個程式需要用到Multi-task嗎?如果要用/不用的話,該怎麼樣才能達到硬體時間的要求?

謝謝各位撥冗查看,小弟感激不盡。

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=1&topic_id=21604&post_id=76698