簡體   English   中英

無法加快arduino

[英]Trouble speeding up arduino

我試圖通過直接寫入寄存器來加快Arduino代碼的速度。 我寫了一個簡短的測試腳本,但似乎沒什么用。 如果使用“ digitalWrite()”函數,則可以在示波器上看到輸出,但使用此代碼,它將保持為0。我將此鏈接用作參考。 我不太明白我錯過了什么。

byte *outputRegister;
byte bitMask;

void setup() {
  pinMode(8,OUTPUT);
  outputRegister = portOutputRegister(8);
  bitMask = digitalPinToBitMask(8);
}

void loop() {
  *outputRegister |= bitMask;
  delay(1);
  *outputRegister &= ~bitMask;
  delay(1);
}

編輯: portOutRegister應該返回設置了輸出引腳的端口。 digitalPinToBitmask函數返回一個位掩碼(類似於相應端口上的第一個引腳的0b00000001)。 經過一些進一步的測試,我得出的結論是,digitalWrite函數似乎並沒有真正改變這些寄存器中的值,這無非是使我感到困惑。

Arduino,如果其型號= Uno,則為ATmega-328 AVR,這是解決關鍵時序問題並實現更好的執行時間和代碼優化的最佳方法,您應該通過直接寄存器修改進行編程。 話雖這么說,使用AVR-GCC,包含然后再進行位旋轉。 您的代碼不可讀也不易理解。 IMO,您應該在Arduino IDE中用C ++編寫>>慢但容易的選項,或者在IDE inC和直接在AVR外部開始編程,>>性能提高數個數量級。 了解AVR Freaks論壇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM