2011-06-16 61 views
2

我配置了CTC模式下的定時器2,並在比較匹配時切換端口引腳(TCCR2A = 0x42,TCCR2B = 0x02,OCR2A = 0x20)並設置DDR3輸出。因此,根據ATmega328P文檔(第158-163頁)。 OC2A(又名PB3)應在每次比較匹配時切換。不幸的是,我無法讀取PORTB的引腳狀態。這是預期的嗎?我認爲,即使端口配置爲輸出,我也可以讀取設定值。AVR/Arduino:讀計時器切換的端口引腳

回答

3

有兩個問題:

  1. 在AVR Studio的4.18我不能使用模擬器1,由於它具有定時器2中的錯誤,因此不能正確地切換端口引腳。我需要使用模擬器2或AVR Studio 5.

  2. 我需要讀取PINB而不是PORTB(儘管切換是輸出操作)。

1

我不知道具體的微控制器,但在某些體系結構中,在更改端口引腳和正在更新的鎖存器之間至少需要一個NOP(以便您可以讀取更改)。

另外還有一個引腳可以切換的最大頻率(比微控制器CPU時鐘慢很多倍)。一定不要超過那個頻率。

+0

ATmega處理器可以通過定時器直接切換端口引腳。沒有必要手動執行此操作並等待一小段時間。 – Mot 2011-06-17 10:01:39