Fogeaters, Light The World.

16

2016-Jan

[AVR] I/O 포트 메뉴얼 (ATMega128)

작성자: title: MoonBlonix IP ADRESS: *.148.87.98 조회 수: 1591

데이터 시트에 다 적혀있긴 한데 좀 중구난방식으로 여기저기 띄엄띄엄 적혀있어서 그냥 올린다.

첨부파일로 첨부함.

Port A 부터 F 까지 다 설명 적혀있다. 잘 알고 쓰자.


===============================================

추가 참고자료


출처 :: http://www.newtc.co.kr/dpshop/bbs/board.php?bo_table=m53&wr_id=14


기본적으로 모든 포트는 GPIO로 사용이 가능하다. 하지만, 마다 각각 기능이 있어서, 사용시에 주의가 필요한데, 일반적으로 주의할 사항을 몇가지 기록하여 보았다. 

G포트 : 외부 메모리 사용시에 사용되는 제어신호인 /WR, /RD, ALE를 주의한다.  외부 메모리로 동시에 사용시에 이 부분과 GND 사이에 만약 커패시터가 연결된 회로를 구성하게 되면, 외부 메모리 억세스에 실패할 가능성이 높다. 따라서, 이 경우  이 핀들과 GND 사이에 커패시터를 연결하지 않도록 주의한다. 
          
F 포트 : 
      ADC 용으로 사용 가능하다. ADC 할 때는 만약 외부 전압으로 AREF를 쓴다면,  external AREF에 연결되는 전압을 꼭 센서의 출력 범위와 맞춰 주도록 한다. 
    그래야만 정밀한 결과를 얻을 수 있다.  또한, AVCC, internal 2.56V ref 전압도 사용이 가능한데, 이 경우 AREF가 외부 DC 전압에 고정되어 있다면, 선택할 수 없으므로, 반드시 이 경우 AREF는 연결하지 않아야 한다. 
    또한, 이 경우에는 AREF와 GND 사이에 커패시터를 하나 달아주는 것이 노이즈를 막아주는 역할을 한다. 

   퓨즈 비트의 JTGAEN를 Enable(0) 해 놓을 경우 JTAG 핀들에 해당하는 핀들인 이 포트의 D4~D7이 사용 불가하니, 주의 바란다.  그래서, 본사에서는 출시하는 모든 포트를 사용하기  위하여 퓨즈비트를 JTAGEN이 disable(1)로 되어 있다.    

E포트 : D0, D1 이 각각 RXD0, TXD0 기능도 하도록 되어 있다. 따라서, UART0를 초기화 하게 되면, D0, D1이 각각 평상시에 High 로 전압이 올라가 있게 된다. 즉, 이 경우 포트로 사용이 불가하다. 따라서, 이 경우 왜 이 핀들이 출력이 항상 High로만 나오는가 고민하지 않기 바란다. 

D포트 : D2, D3가 각각 RXD1, TXD1 기능도 하도록 되어 있다. 따라서, UART1을 초기화 하게 되면, D0, D1이 각각 평상시에 High 로 전압이 올라가 있게 된다. 즉, 이 경우 포트로  사용이 불가하다. 따라서, 이 경우 왜 이 핀들이 출력이 항상 High로만 나오는가 고민하지 않기 바란다. 

B 포트 : 
      PB1의 SCK 핀은 매우 민감한 클럭 핀이다. SPI 통신을 할 때, 특히 민감하게 반응한다.  따라서, 이 선을 SPI로 사용할 때는 꼭 가장 가까운 곳에 디바이스를 위치하게 해야 하면,  그렇게 하기 어렵다면, PCB 캐드 작업 시에 바깥쪽으로 그라운드와 연결된 GUARD Line을  양쪽 및 반대면 PCB에 생성하여 그 선을 따라가면서 싸 주어서, 노이즈가 끼지 못하도록 해 주어야 한다. 높은 정도의 속도와 정밀도가 필요한 경우에 이렇게 반드시 해 주어야 한다. 
      4층 정도로 만들어서, 반대면에서의 노이즈를 GND 판으로 막아주는 것도 좋겠다. 
      
      또한, SCK 핀이 있는 PB1와 GND 사이에 커패시터가 회로적으로 연결되게 되면, 클럭이 커패시터로 인하여 떨지 못하게 되어서, SCK를 사용하기 어렵게 되므로, 주의한다.  어쩔 수 없이 커패시터를 써야 할 사용할 상황이거나 다른 회로를 이 핀에 부가하여야 한다면,  반드시 PB1에서 1k옴 정도의 직렬 저항을 하나 거친 후에 커패시터를 쓰거나 다른 회로를 부가 하여 쓰도록 한다. 이렇게 하지 않으면, ISP 다운로딩 자체에도 문제가 생길 수 있다. 
      이런 경우를 종종 보아 왔으며, 반드시 주의하여 방지하도록 한다. 

또한, AVR은 전압에 매우 민감하다. TTL Level의 5V 전압을 사용하는 AVR 시리즈의 경우 4.5~5.5V 까지만 정상동작하며, 그 이상의 전압을 가하게 되면, 경우에 따라 바로 망가지게 될 수도 있으며, 오래 지속될 경우, 고장이 나기도 하는 데, 이 고장의 경우 고장 부위에 따라서 
동작 자체는 잘 되지만, ISP 다운로딩이 안되는 문제가 발생하기도 한다. 
또한, 일부 핀이 동작이 안 되거나, 동작은 되지만, AVR칩에서 열이 많이 나는 고장이 생기기도 한다. 이러한 경우, 어느 정도 시간이 지나면 어떤 상황으로 진행될 지 보장할 수 없는 상황이 되므로, 반드시 칩을 교체하는 것이 좋다. 

8비트 프로세서 중에서 AVR의 많은 기능과 메모리를 잘 활용하고 싶다면, 안정된 회로를 전원부 설계를 하는 것이 필수적인데, 시스템에 따라서 열이 나도 되는 지, 열이 안나야 하는 지, 제품 생산 가격은 얼마선에서 시스템을 설계해야 하는 지에 따라서, 전원부 회로 설계가 달라지겠다. 
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15126
32 [AVR] HC_SR04 초음파센서 사용 file title: MoonBlonix 2016-02-13 1668
31 [AVR] 피에조 부저 활용 file + 1 title: MoonBlonix 2016-02-12 1956
30 칼만필터(Kalman Filter) + 2 title: MoonBlonix 2016-02-11 4377
29 low pass filter, high pass filter (저역통과필터, 고역통과필터) file title: MoonBlonix 2016-02-11 1455
28 [AVR] 루프 실행시간 측정 (아두이노의 Millis(), Micros() 분석) title: MoonBlonix 2016-02-09 1456
27 상보필터(Complementary Filter) file title: MoonBlonix 2016-02-09 1739
26 가속도, 자이로 센서에 대해 title: MoonBlonix 2016-02-09 1571
25 [AVR] UART 통신 file title: MoonBlonix 2016-02-07 1608
24 C++ 과 C 를 같은 프로젝트에서 사용하기 title: MoonBlonix 2016-02-07 1505
23 라즈베리파이 운영체제에 관하여 title: MoonBlonix 2016-02-05 1458
22 [리눅스] 기본 명령어 title: MoonBlonix 2016-02-05 1632
21 [리눅스] C 언어 개발환경 구축 title: MoonBlonix 2016-02-05 1863
20 라즈베리파이 GPIO 핀 배열 file title: MoonBlonix 2016-02-05 2059
19 C++ 멤버 함수 포인터 title: MoonBlonix 2016-01-23 1774
18 AVR 직접만든 DC모터 라이브러리 (C++ Class) file title: MoonBlonix 2016-01-16 1517
» [AVR] I/O 포트 메뉴얼 (ATMega128) file title: MoonBlonix 2016-01-16 1591
16 AVR delay 함수 (_delay_ms, _delay_us) title: MoonBlonix 2016-01-15 1640
15 AVR 멀티채널 PWM (타이머 하나로 여러 PWM 구동) title: MoonBlonix 2016-01-15 1651
14 AVR 초패스트 PWM title: MoonBlonix 2016-01-14 1565
13 AVR 타이머 응용 여러 PWM 방식과 예제 file + 1 title: MoonBlonix 2016-01-14 1651