原因: 使用 arduino 的 digitalWrite() 及 digitalRead() 的速度不夠快, 直接對 register 控制.
用到的 register:
PORTD: set data output
DDRD : set input/output mode
PIND : read data input . if write 1 , the port will toggle.
方法:
-- 找出對應的 pin 腳 --
input pin:
digital pin 6, PORTD6
output pin:
digital pin 2, PORTD2
-- 設定 --
output mode:
DDRD |= (0x04); // 1: output, 0:input
input mode:
DDRD &= (~0x40)
PORTD |= (0x40); // input pull-high
-- 讀值 --
Data = PIND; // read PORTD input data
ex: // 反向輸出
..
noInterrupts();
while(1){
if(PIND & 0x04){
PORTD &= (~0x40);
}
else{
PORTD |= (0x40);
}
}
沒有留言:
張貼留言