2011年7月5日 星期二

2) I/O Ports

I/O Ports

Arduino 板子所用的晶片 (以 ATmega8 和 ATmega168/328 為例) 有三個 8-bit 的 PORTs :

  • B: 對應 Arduino 的 digital pin 8 to 13
  • C: 對應 Arduino 的 analog input pin 0 to 5
  • D: 對應 Arduino 的 digital pins 0 to 7
Arduino 與 AVR 晶片腳位對應表

底下這張圖顯示 Arduino 跟 ATmega8 之間的腳位對應關係:

image_thumb5  
▲ 圖片來源: arduino.cc 

例如,Arduino 的 pin 13 對應的腳位為 PB5。

而底下是 Arduino 跟 ATmega168 的腳位對應關係圖:

image_thumb2
▲ 圖片來源: arduino.cc

Arduino UNO 和 Arduino Duemilanove 用的晶片都是 ATmega328,Arduino Diecimila 用的是 ATmega168,而早期的 Arduino USB 則是使用 ATmega8。

註: ATmega328 跟 ATmega168 的腳位配置 (Pinout) 是一模一樣的。

2013/4/12 補充: 有個叫 Pighixxxx 的義大利人畫了很多 Arduino 的 pinout diagrams,搭配這些圖學習會更方便。

arduino_atmega328_Web_thumb[1]

I/O Ports 暫存器簡介

AVR 晶片每個 port 都受三個暫存器控制,分別是 (x 代表 B, C, D):

  1. DDRx 暫存器: 用來決定腳位是 INPUT 或 OUTPUT。
  2. PORTx 暫存器: 用來控制腳位輸出訊號為 HIGH 或為 LOW
  3. PINx 暫存器: 用來讀取腳位的輸入訊號
下一步

接下來將說明 I/O Ports 暫存器的使用方法,你將透過幾個簡單的例子來學習控制 I/O Ports。

延伸閱讀

0 意見: