참고로 인터넷에 ATmeag128을 검색하시면 수두룩 빽빽하게 기본구조와 특징 핀에 대해서 설명을 하고있습니다. 당연히 그 자료를 더 많이 참고하시기 바랍니다.;; (아래그림의 출처는 저입니다 -_-;..물론 색깔입힌것밖에 없지만..ㅋㅋ)

 

『 들어가기에 앞서 알고가면 좋은 상식

  아트메가에서 TTL(Trasistor to Transistor Logic)신호란?

  Low신호 : 0~0.8V

  High신호 : 2~5.0V

  를 뜻하며 하위(0)와 상위(1)를 구분짓는 전압의 크기이다. 』

 

앞에서 AVR AVR 이라 말을 했는데 이건 아래와 같습니다.

 

『AVR 은 Alf(Bogen) Vergard(Wollen) Risc 의 약자로서 ATMEL사에서 제작된 RISC 구조의 MCU를 뜻합니다.. 가격적인 측면에서는 약간 고가라는 단점이 있으나 1 cycle에 1 instruction이 수행되는 고속의 MCU라는 점, ISP (In System Programming)이라는 기능을 통해 매우 저렴하게 개발환경을 구축할수 있다는 점, RISC 타입이고, Harvard Architecture의 특징으로 C언어에서 우수한 성능을 발휘한다는 점, 막강한 각종 컴파일러가 무료로 제공된다는 점, 이밖에 ADC, PWM, SPI 등등의 고기능을 손쉽게 구현할 수 있다는 장점이 있습니다.

또한 AVR의 강점으로 꼽을 수 있는 것은 제작사가 컴파일러 WAVRASM 과 상당히 강력한 디버거인 AVR Studio를 제공한다는 것입니다.  -출처 : 인터넷에 떠도는 내용-  』

 

▶ ATmega128의 주요특징

→ 속도 : 16MHz의 클럭을 사용할 때, 16MIPS의 연산속도를 갖는다.
              ATmega128 과 128L을 나누는 기준(물론 다른차이점도 존재)이기도 합니다.
ATmega128는 2.7V~5.5V의 전원 전압에서 동작하며, 시스템 클럭의 입력 범위        0~16MHz (ATmega128L : 2.7V ~ 5.5V , 0~8MHz)

 
→ 내장 메모리 :
              128K 바이트의 ISP 방식 프로그램용 플래시 메모리 (최대 10,000번 W가능)

               4K 바이트의 EEPROM (최대 100,000번 W가능)
               4K 바이트의 데이터 저장용 SRAM 
               128Kbyte= 플래쉬 메모리 , 4Kbyte = 데이터(SRAM+EEPROM) + 스택(SRAM)


→ 부가 I/O 장치 :
             독립적인 프리스케일러와 비교 모드를 갖는 2개의 8비트 타이머/카운터
             독립적인 프리스케일러, 비교 모드와 캡쳐 모드를 갖는 2개의 확장 16비트 타이머/카운터
             독립적인 오실레이터를 갖고 있는 실시간 카운터
             6개의 PWM 채널
             8채널 10비트 ADC
             2개의 프로그램 가능한 직렬 USARTs
             마스터/슬레이브 모드를 갖는 SPI 직렬 인터페이스
             내장된 오실레이터로 구현된 프로그램 가능한 워치독 타이머
             아날로그 비교기 내장
             53개의 프로그램가능한 입출력 I/O

            
→  기타 :
          전원 투입 리셋과 프로그램 가능한 저전압 검출(BOD : Brown-out Detection) 기능
          조정 가능한 RC 오실레이터의 내장
          리셋벡터와 8개의 외부 인터럽트 소스, 26개의 내부 인터럽트 소스
          슬립모드로서 6개의 전원 절약 모드를 가지고 있음 (아이들, ADC 노이즈 감쇄기, 전원 절감,

          전원 차단, 대기, 확장 대기)
          내장 메모리의 프로그래밍과 온칩 디버깅이 가능한 JTAG(IEEE std. 1149.1) 인터페이스 제공
          64핀의 TQFP(Thin Quad Flat Package) 또는 MLP(Micro Lead Frame) 패키지로 구성되어 있음


 

[외부적으로 보이는 아트메가의 핀의 구성과 용도]

 먼저 위 그림을 보시면 제가 힘들게 네모 반듯하게 색깔을 칠해놨습니다. 이건..머 중요한게 아니고.. 암튼 딱 보시면 구분이 되실겁니다.  ATmega128은 사용하기 편하도록 용도별로 포트들이 나누어져 있습니다. 총 64개의 핀이 존재하며 A~G포트로 분류되어있습니다. 앞으로 어느정도 공부하시고 지식이 쌓이시게 되면 저 그림 한장으로 설계에서부터 코딩까지 다 하시게 될겁니다. 가장 많이 보게될 그림입니다.

 

『내부풀업 : 내부적으로 나오거나 들어가는 신호를 강하게 만들어주는 기능 』

 

*모든 포트A~G핀은 양방향 I/O핀으로의 기능과 괄호안의 다른 중복기능을 가짐

 I/O는 DDRX, PORTX, PINX 의 레지스트리로 제어가능

*PINX로 검색해서 들어오시는 분이 계셔서 혹시나 해서 남겨봅니다^^; (후에 I/O포트로 다시 포스팅할예정입니다)
DDRX 의 경우 (X는 A,B,C~~등등 아트메가의 구분되는 포트명) 해당핀의 입력/출력을 정의하는 레지스터입니다!
이 값이 0값 일경우 해당핀은 입력으로 동작하며 1값일 경우 출력으로 동작이 됩니다.
즉 해당핀에 연결된 I/O가 LED라고 가정해보면 LED에 불을 켜고 싶다면 해당핀의 DDR값은 1값으로 출력으로 정의해야하며
설계하신 회로에서 LED의 다른핀은 GND가 연결되어있으며 반대쪽 핀은 ATmega128의 핀에 연결되어있다면
출력값을 정의하는 PORT레지스터에 1의 값을 주면 High신호인 5V의 값이 ATmega128의 해당핀에 나오게 됩니다.
그래서 LED에는 불이 켜지게 되겠지요 ^^;.. 설명이 장황하고 길었습니다만..요약하자면
ATMEGA128에 연결되는 I/O의 종류에 따라서 ATMEGA를 입력으로 사용할건지 출력으로 사용할건지는 DDRX 명령으로 내린다.
그래서 해당핀에 값을 출력한다면 PORTX레지로, 값을 읽어들인다면 PINX레지를 사용해야한다.
 

 

포트 A(PA7∼PA0) 

외부 데이터 메모리와 데이터 전송시 하위 주소와 데이터 버스로 사용
 - 외부메모리를 둘 경우에는 주소버스(A7-A0)와 데이터버스(D7-D0)로 사용.
8비트의 양방향 I/O 포트로 사용 가능
외부에 메모리를 인터페이스하지 않을 때에는 내부 풀업 저항(20㏀∼50㏀)을 갖음.


포트 B(PB7~PB0)  : 나눠서 다른 기능도 사용이 가능하다. 포트A는 불가.
포트는 중복된 기능을 가지고 있는 포트. 내부적으로 풀업 저항(20㏀∼50㏀)
8비트의 양방향 I/O 포트로 사용 가능

PB7(핀17) OC2,OC1C : 타이머2용의 비교신호 출력 혹은 타이머 1용의 비교신호C 출력
PB6(핀16) OC1B : 타이머 1용의 비교신호B 출력
PB5(핀15) OC1A : 타이머 1용의 비교신호A 출력
PB4(핀14) OC0 : 타이머0 용의 비교신호 출력
PB3(핀13) MISO : SPI 채널의 마스터 데이터 입력 혹은 슬레이브 데이터 출력 신호 단자
PB2(핀12) MOSI : SPI 채널의 마스터 데이터 출력 혹은 슬레이브 데이터 입력 신호 단자
PB1(핀11) SCK : SPI 채널의 마스터 클럭 출력 혹은 슬레이브 클럭 입력 신호 단자
PB0(핀10) SS : SPI 태널의 슬레이브 선택 입력 신호 단자


포트 C(PC7~PC0)
외부 데이터 메모리와 데이터 전송시 상위 주소와 데이터 버스로 사용
외부메모리를 둘 경우에는 주소버스(A15-A8)로 사용된다.
8비트의 양방향 I/O 포트로 사용 가능
외부에 메모리를 인터페이스하지 않을 때에는 내부 풀업 저항(20㏀∼50㏀)을 갖음

 

*ATmega128은 외부메모리 확장시 64K 까지 가능하다. 이는 위의 노랑과 초록으로 표시한 포트A,C 총16핀 을 이용한 주소와 데이터버스 사용이 가능하기 때문이다. 2의 16승은 64K 이기 때문이다.


포트 D(PD7∼PD0)
포트는 중복된 기능을 가지고 있는 포트.  내부적으로 풀업 저항(20㏀∼50㏀)  8비트의 양방향 I/O 포트로 사용 가능

PD7(핀32) T2 : 타이머2 클럭 입력
PD6(핀31) T1 : 타이머1 클럭 입력
PD5(핀30) XCK : USART1 외부클럭 입출력
PD4(핀29) ICP1 : 타이머1 입력 캡춰
PD3(핀28) INT3/TXD1 : 외부인터럽트 3 혹은 USART1 송신
PD2(핀27) INT2/RXD1 : 외부인터럽트 2 혹은 USART1 수신
PD1(핀26) INT1/SDA : 외부인터럽트 1 혹은 2선 방식의 직렬 인터페이스용 데이터 단자
PD0(핀25) INT0/SCL : 외부인터럽트 0 혹은 2선 방식의 직렬 인터페이스용 클록 단자



포트 E(PE7~PE0)
내부 풀업 저항이 있는 8비트 양방향 입출력 단자. 타이머용 단자, 외부인터럽트, 아날로그 비교기, USART용 단자로도 사용된다
내부적으로 풀업 저항(20㏀∼50㏀) 8비트의 양방향 I/O 포트로 사용 가능

PE7(핀9) INT7/ICP3 : 외부인터럽트 7 혹은 타이머3 입력 캡춰
PE6(핀8) INT6/T3 : 외부인터럽트 6 혹은 타이머3 클럭 입력
PE5(핀7) INT5/OC3C : 외부인터럽트 5 혹은 타이머 3용의 비교신호C 출력
PE4(핀6) INT4/OC3B : 외부인터럽트 4 혹은 타이머 3용의 비교신호B 출력
PE3(핀5) AIN1/OC3A : 비교기 -입력 혹은 타이머 3용의 비교신호A 출력
PE2(핀4) AIN0/XCK0 : 비교기 +입력 혹은 USART0 외부 클럭 입출력
PE1(핀3) PDO/TXD0 : 프로그램 데이터 출력(ISP 케이블의 MISO와 연결) 혹은 USART0 송신
PE0(핀2) PDI/RXD0 : 프로그램 데이터 입력(ISP 케이블의 MOSI와 연결) 혹은 USART0 수신



포트 F(PF7∼PF0)
포트는 중복된 기능을 가지고 있는 포트 . 내부적으로 풀업 저항(20㏀∼50㏀)  A/D 컨버터의 입력포트로 사용
8비트의 양방향 I/O 포트로 사용 가능

PF7(핀54) ADC7/TDI : ADC 입력채널 7 혹은 JTAG 테스트용 데이터 입력 단자
PF6(핀55) ADC6/TDO : ADC 입력채널 6 혹은 JTAG 테스트용 데이터 출력 단자
PF5(핀56) ADC5/TMS : ADC 입력채널 5 혹은 JTAG 테스트용 모드 선택 단자
PF4(핀57) ADC4/TCK : ADC 입력채널 4 혹은 JTAG 테스트용 클럭 단자
PF3(핀58) ADC3 : ADC 입력채널 3
PF2(핀59) ADC2 : ADC 입력채널 2
PF1(핀60) ADC1 : ADC 입력채널 1
PF0(핀61) ADC0 : ADC 입력채널 0



포트 G(PG4~PG0)
포트는 중복된 기능을 가지고 있는 포트 . 내부적으로 풀업 저항(20㏀∼50㏀)
외부 메모리 접속을 위한 스트로브 신호용, RTC(Real Time Counter) 타이머용 발진기 단자로도 사용된다
5비트의 양방향 I/O 포트로 사용 가능
           : 마스터 리셋 입력(액티브 LOW 신호)

PG4(핀19) TOSC1 : 타이머 0의 RTC 기능 사용시 클럭 발생을 위한 수정발진자 접속단자
PG3(핀18) TOSC2 : 타이머 0의 RTC 기능 사용시 클럭 발생을 위한 수정발진자 접속단자
PG2(핀43) ALE : 외부 메모리에 접근할 때 하위주소값을 래치하도록 신호를 출력
PG1(핀34) RD : 외부 테이터 메모리를 읽을 때 사용되는 스트로브 신호 출력 단자로 사용
PG0(핀33) WR : 외부 데이터 메모리에 쓸 때 사용되는 스트로브 신호 출력 단자로 사용


기타핀 (11개핀)
AVCC : A/D 컨버터 및 포트 F의 전원 (아날로그 장치에 공급하는 별도의 전원)
AREF : A/D 컨버터의 참조전압
PEN : SPI를 활성화 시키는 프로그래밍 인에이블 핀

RESET : 리셋신호, 최소 50Ns이상 low 상태유지 필요
XTAL1, XTAL2  : 크리스탈이나 오실레이터가 연결되어야 함.
VCC, GND : 작동을 위한 필수연결.

(VCC와 GND가 2~3개씩 존재한 이유는 원활한 공급을 위해서입니다)

+ Recent posts