2014-01-12 29 views
0

在調試我使用類似Arduino的電路板和ATmega328的硬件原型之後,我注意到RF庫VirtualWire禁用了引腳D10中的PWM信號。 這是爲什麼?爲什麼VirtualWire與Arduino/ATmega328引腳D10中的PWM信號衝突?

如果我註釋掉的下面的代碼比特,analogWrite(PWM)上銷D10工作再次:

setup() { 
    ... 
    vw_set_rx_pin(2); 
    vw_setup(2000); // Bits per sec 
    vw_rx_start();  // Start the receiver PLL running 

    analogWrite(10, 180); 
    ... 
} 

回答

1

VirtualWire經由OCR1A,其中兩個完全禁用OC1A PWM操作(在計時器1使用CTC在D9)和OC1B(在D10上),並防止OC1A自由運行。 OC1B仍然可用,但只能在CTC規定的模式下以VirtualWire編程定時器的速率進行。

+0

很高興知道這一點,謝謝!有沒有什麼辦法可以解決這個問題,我的意思是改變VirtualWire並重新編譯它,以便釋放這兩個引腳?我應該把它作爲一個單獨的問題嗎? – Ricardo

+1

不幸的是沒有。 VirtualWire需要一個16位定時器,ATmegaXX8只有1個可用。您需要切換到具有多個設備才能移動的設備。 –