동기식 통신 동기식은 일정의 클록에 동기하여 데이터를 송수신하는 통신방식입니다. ATmega128에서 동기식 모드가 사용될 때(UMSEL=1)에는 XCK핀이 동기 클록 입력(slave) 또는 동기 클록 출력(master)으로 동작합니다. 이 때 클록에지와 데이터 샘플링, 그리고 클록에지와 데이터 변화간의 상호의존 관계는 같습니다. RxD상의 데이터 입력은 TxD상의 데이터 출력이 바펄 때의 에지와 반대 에지에서 샘플링됩니다. UCRSC 레지스터의 UCPOL 비트는 어떤 XCK 클록에지가 데이터 샘플링에 사용되고 어떤 것이 데이터 변화에 사용되는지를 지정합니다. UCPOL=0이면 입력데 이터는 XCK의 상승에지에서 변화하고 하강에지에서 샘플됩니다. 그리고 UCPOL=1이면 입력데이터는 XCK의 하강에지에서..
USART의 개요 ATmegal28은 전이중 방식의 USART 모듈을 두 개(USARTO, USARTI) 내장하고 있습니다. ATmega103 호환 모드에서는 USARTI을 사용할 수 없습니다. USART(Universal Synchronous and Asynchronous Receiver Transmitter)는 거의 모든 마이크로컨트롤러가 갖추고 있는 범용 동기식 비동기식 송수신장치로서, 송신의 경우에는 8비트 병렬 데이터를 동기식 또는 비동기식으로 직렬 데이터로 바꾸고, 역으로 수신의 경우에는 직렬 데이터를 동기식 또는 비동기식으로 8비트 병렬 데이터로 바꿉니다. ATmegal28의 USART는 동기식 또는 비동기식으로 동작한다고는 하나 일반 마이크로컨트롤러에서와 같이 ATmega128에서도 동기식..
외부 인터럽트 외부 인터럽트(External interrupt)에 대해서는 앞에서 부분적으로 설명했지만 여기서 종합 설명합니다. 외부 인터럽트는 핀 INT7~핀 INT0의 레벨 또는 에지 트리거 인터럽트입니다. 즉 이 인터럽트는 외부장치가 ATmega128의 핀 INT7~INTO에 전압 레벨을 바꿀 때 low level(0 Volt)이나 논리 변화나 상승에지나 하강에지에서 발생되는데, low level에서 발생되 느냐, 논리 레벨의 변화에서 발생되느냐, 상승에지(rising edge)에서 발생되느냐 아니면 하강에지(falling edge)에서 발생되느냐는 전술한 바와 같이 EICRA 및 EICRB 레지스터의 내용에 따라 결정됩니다. 아무튼 INT7~INT0에 유효한 레벨 또는 에지가 들어오면 EIFR 레..
인터럽트 우선순위 인터럽트 우선순위는 동시에 2개 이상의 인터럽트가 발생하는 경우에 어느 것부터 인정해주느냐의 문제입니다. 일반적으로 하드웨어 방법과 소프트웨어 방법이 있습니다. 하드웨어 방법에서는 daisy-chain이라는 회로를 써서 상위의 인터럽트 소스로부터 인터럽트 요청이 없는 경우에 한해서 하위의 인터럽트가 허용되도록 되어 있습니다. 이에 반하여 소프트웨어 방법에서는 polling이라는 기법으로 어느 인터럽트 플래그가 세트되어 있는지를 차례로 조사하는데, 이 때 먼저 조사하는 것의 우선순위가 더 높습니다. Z80은 전자의 방법에 의하고 PIC는 후자의 방법에 의합니다. AVR에 있어서는 daisy-chain도 아니고 polling도 아니고, 우선순위가 하드웨어적으로 미리 지정되어 있습니다. AV..
인터럽트 발생 조건 ATmega 128 인터럽트 3요소 중 제 1은 앞에서 언급한 인터럽트 소스입니다. 그러나 인터럽트 소스로 부터 인터럽트 요청이 있기만 하면 바로 인터럽트가 발생되느냐 하면 그렇지는 않습니다. 인터럽트가 개별적으로 허용(enable)되어 있어야 하고, 전체적으로도 허용 되어 있어야 합니다. 문제는 어떻게 해야 해당 인터럽트가 개별적으로 허용되고, 전체적으로 허용되느냐에 있습니다. 전제적으로 허용되는 것은 SEI라는 명령으로 SREG 레지스터의 비트7(I비트)을 1로 하면 되지만, 개별적으로 허용되는 것은 그렇게 쉽지 않습니다. 그 방법을 알기 위해서는 인터럽트 관련 레지스터를 알아야 합니다. 외부 인터럽트 및 관련 레지스터 ATmegal28 외부 인터럽트는 핀 INT7:0에 의해서 트..
인터럽트 소스 인터럽트(interrupt)란 앞에서 언급한 바와 같이, 외부 또는 내부로부터의 긴급 서비스 요청에 의하여 CPU가 현재 실행중인 일을 잠시 중단하고 그 요청에 합당한 서비스를 해주는 기법입니다. ATmega128의 외부핀 중에는 INTO(pin no.25)이라는 외부 인터럽트 핀이 있어서 여기에 외부장치로부터의 긴급 서비스 요청선이 연결됩니다. 예컨대 ATmega128을 화재경보기로 사용하는 경우 핀 INTO(PD0)에는 화재감지기가 연결되어 있어서 화재가 나면 이를 감지하고 핀 INT0의 논리 레벨을 +5V에서 OV로 바꿉니다. 구체적인 예로서 화재감지기로 바이메탈 (bi-matal)을 쓰는 경우를 봅시다. 바이메탈은 열팽창 계수가 서로 다른 두 장의 금속판[황동 (cu, zn 합금)과..
I/O포트의 기능 ATmega128은 포트 A, 포트 B, 포트 C, 포트 D, 포트 E, 포트 F, 포트 G 등 7개의 I/O포트에 53개의 I/O라인을 내장하고 있습니다. 이들 외부핀은 타이머/카운터, USART, ADC 등 다른 내장 주변장치의 외부핀 기능을 겸하기도 합니다. I/O포트(Input/Out Port)는 외부장치와 CPU를 연결해 주는 병렬 입출력 인터페이스입니다. 외부장치를 CPU에 연결할 때 직접 연결할 수 있으면 좋겠지만, 일반적으로 그럴 수가 없습니다. 외부장치와 CPU는 동작 속도가 다르고 전압 레벨도 다르며 전송 사이클도 다르기 때문입니다. 그래서 외부장치와 CPU 사이에는 이들을 조정해주는 장치가 필요한데, 이것이 병렬 입출력 인터페이스입니다. I/O포트는 입출력 인터페이스..
하드웨어 롤 AVR 마이크로컨트롤러에 대한 하드웨어 개발지원 툴에는 트레인 키트와 ROM 라이터 그리고 하드웨어 툴 인서키트 에뮬레이터가 있습니다. Z80이나 i8031과 같이 외부 ROM이 있는 시스템에서는 이외에도 ROM 에뮬레이터가 있지만, AVR에는 이것이 없습니다. ROM 에뮬레이터는 신제품 개발 중 타깃 시스템의 임시 ROM 역할하는 장치이고, 트레인 키트(training kit)는 마이크로컨트롤러의 원리와 응용 프로그램을 교육 할 목적으로 개발된 교육용 마이크로컨트롤러 시스템입니다. ROM 라이터(ROM writer)는 ROM 프로그래머(ROM programmer) 또는 다운로더라고도 하는 것으로서, 작성된 프로그램을 칩 내장의 EEPROM 는 EPROM 또는 플래쉬 메모리에 기록하는 장치입..
마이크로컨트롤러 개발지원툴 마이크로컨트롤러 개발지원툴은 MDS(microcontroller development system)라고도 하는 것으로, 마이크로컨트롤러 메이커 및 협력업체가 제공하는 각종 하드웨어 및 소프트웨어 개발 지원 시스템을 의미합니다. 이것은 매우 고가였지만, 지금은 과거에는 개발지원툴이 MDS 전용 장비로 나왔기 PC 보급에 힘입어 PC 중심의 MDS로 바뀌고 있어 매우 저렴해 졌습니다. 특히 AVR의 경우에는 다른 것과 비교가 되지 않을 정도로 MDS가 저렴합니다. 개발지원툴은 크게 소프트웨어 툴과 하드웨어 툴로 분류됩니다. 소프트웨어툴은 마이크로컨트롤러 개발지원툴 중 소프트웨어 툴이 PC상에서 운용되는 개발용 프로그램을 말합니다. 대표적인 것으로 에디터, 크로스 어셈블러, 크로스 ..
프로그램의 실행 과정 알아보기 문제의 해석, 순서도의 작성, 코딩 등의 과정을 밟아서 작성된 소위 원시프로그램은 그대로 실행될 수 없습니다. 원시프로그램을 컴퓨터에 입력하여 소위 소스 파일을 만들어야 하고, 어셈블러의 힘을 빌어 기계어로 번역도 해야 하며, 오류가 있으면 디버깅도 해야 하고, 기계어로 번역된 프로그램이 여 러 모듈로 되어 있는 경우에는 링커라는 프로그램에 의하여 이들을 링크도 해야 합니다. 또한 AVR 트레인 키트나 타깃 시스템에 전송하기 위한 형태로 고쳐서, 이것을 전송해야 합니다. 그런 뒤에야 AVR 트레인 키트나 타깃 시스템에서 실행시킬 수 있습니다. 여기서 타깃 시스템이란 마이크로컨트롤러 제어장치를 말합니다. 즉 기계를 제어하는 장치를 마이크로컨트롤러로 만들 경우 그 제어장치를 타..