看板 Electronics 關於我們 聯絡資訊
我看 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://www.ptt.cc/bbs/Electronics/M.1491707088.A.314.html
goodboylin77: http://i.imgur.com/Cn3EUss.jpg 04/09 21:06
goodboylin77: 中間那段兩小時的會跑一兩分鐘就跑下面程式 04/09 21:08