作者yuleen123 (.......................)
看板Electronics
標題Re: [問題] arduino 延遲問題
時間Sun Apr 9 11:04:46 2017
我看 Arduino 的原始碼, 這部份有改過了
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring.c
unsigned long millis()
{
unsigned long m;
uint8_t oldSREG = SREG;
// disable interrupts while we read timer0_millis or we might get an
// inconsistent value (e.g. in the middle of a write to timer0_millis)
cli();
m = timer0_millis;
SREG = oldSREG;
return m;
}
在紅色的部份中 cli() 先關閉中斷, 之後才存取 timer0_millis
這樣可以確保讀取到的 timer0_millis 是正確的
-------------------------------------------------------------
所以現在可以確定 milli() 是沒問題的
或許你可以把程式 PO 上來看是哪邊有問題
※ 引述《goodboylin77 (小小翰癡)》之銘言:
: 我程式寫一個亮燈還有啟動碼達一個週期的排程照顧植物
: 其中部分用analogwrite寫了5支腳位給led燈 後寫delay兩小時 再關掉 燈卻1分到兩分多就自己關掉繼續跑下面程式
: 且每次loop關掉的時間都不ㄧ樣
: 有試過只延遲 20秒 也是有提早關掉(有時1秒有時7秒有時正常都不固定)
: 完全無法理解
: 是有啥原因可能造成?
: 是一次太多腳位且用pwm寫
: 暫存問題還是?
: 求解!謝謝
: -----
: Sent from JPTT on my HTC_A9u.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.41.39.57
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1491707088.A.314.html
2F:→ goodboylin77: 中間那段兩小時的會跑一兩分鐘就跑下面程式 04/09 21:08