2013-05-04 43 views
1

如果使用Arduino的,那會是什麼,如果我用這樣的代碼:運行時Arduino上的錯誤會發生什麼?

int status; 
void setup() 
{ 
    pinMode(13, OUTPUT); 
} 

void loop() 
{ 
    digitalWrite(13, status); 
} 

什麼會thiscode辦? LED會打開嗎?會損壞芯片嗎?在Arduino IDE中編譯時,它表示沒問題。還有其他問題,編譯器不會捕捉,但他們會做什麼?另一個例子是「digitalRead();」而它被設置爲輸出。

注意:使用Arduino Uno SMD版本R2。

回答

2

你不會損壞Arduino,但你不能確定輸出,因爲這個值沒有被初始化。它擁有內存在其位置上的任何值(將其視爲未知的隨機值)。不過最有可能的是,它會被打開,因爲如果你通過除LOW(= 0)以外的其他任何東西,digitalWrite會將引腳設置爲高電平。看的Arduino的源代碼在wiring_digital.c:

if (val == LOW) { 
     *out &= ~bit; 
    } else { 
     *out |= bit; 
    } 

關於你提到的其他問題:

讀一針值返回PINx寄存器的值,這是物理狀態引腳(高或低),而不管其模式(進入或退出)。

一般來說,損壞Arduino是非常困難的,在大多數情況下,您需要在某些引腳上施加一些高/負電壓來損壞它。

相關問題