printf("ho_tari\n");
1일차 본문
2025.03.04
수업을 진행하기 전 C언어 코딩 실력 정도를 가늠하기 위한 문제 풀이를 하였다.
주어진 문제는 다음과 같다.
강의 목적
모든 전자 제품에서 반드시 사용되고 있는 마이크로컨트롤러(MCU) 구조 및 동작 방식 등의 하드웨어에 대한 기본 지식과 C 언어를 이용한 MCU 프로그램 작성 방법을 배워 임베디드 시스템을 구현하는 실무 능력을 배양
오늘의 학습 목표
1. AVR 소개
2. 브레드 보드 + ATmega128a + LED + BUTTON 조립
3. 개발 환경 Setup
4. LED 제어
• 마이크로프로세서 (uP)
– 중앙처리장치(CPU)를 하나의 IC 칩으로 집적시켜 만든 반도체 소자
• uP는 CPU를 구현하는 한 방법
– 1969년 인텔의 4비트 uP인 4004에서 시작
– 4004는 약 2,300 개 TR 사용, i7은 약 22억 개 TR 사용
• 마이크로컨트롤러 (uC)
– uC = uP + 메모리 + 입출력 인터페이스
– 컴퓨터의 메인보드와 하드디스크 기능을 하나의 IC 칩으로 집적시켜 만든 반도체 소자
– 단일 칩 마이크로컴퓨터, 마이컴
– 작고 간단한(마이크로) 제어장치(컨트롤러)를 만들기 위한 목적으로 특화된 마이크로프로세서의 한 종류
• uC의 장점
– 제품의 소형화 경량화
– 저렴한 가격
– 신뢰성 향상
– 융통성
• uC의 단점
– 낮은 처리 능력
– 범용성 부족
• ATmega128 + 크리스탈 + 전원
– 8MHz로 동작시키기 위해서는 크리스탈도 필요하지 않음
– 여기서는 16MHz로 동작
직렬 통신 – 동기식
• 여러 번에 걸쳐 전송되는 데이터 비트 구분을 위해 별도의 동기화 클록 사용
– SPI, I2C
직렬 통신 – 비동기식
• 전송 속도를 약속하여 사용하고 별도의 클록을 사용하지 않음
– 동일한 속도로 송수신 하지 않으면 잘못된 데이터가 전달
– UART
• 전이중 방식 (full duplex)
– 송수신을 위해 2개의 연결선 사용
– 송수신 동시에 가능
• 반이중 방식 (half duplex)
– 송수신을 위해 1개의 연결선 사용
– 송수신 동시에 불가능

교차 개발 환경
• 하드웨어 수준에서 지원되는 명령어의 개수로 구분
– CISC :
• 복잡한 명령을 한 번에 처리 가능하지만 하드웨어는 복잡해짐
• 명령어에 따라 필요로 하는 클록의 수가 다름
– RISC :
• 하드웨어는 간단하지만 복잡한 명령을 여러 번의 간단한 명령으로 처리
• 명령어가 동일한 수의 클록을 필요로 하므로 파이프라인 도입이 간단
• 폰 노이만 구조
– 명령어와 메모리가 하나의 메모리에 저장
– 상대적으로 느린 메모리 속도에 의한 병목 현상
• 하버드 구조
– 명령어와 메모리를 전용의 메모리에 나누어 저장
– 하드웨어는 복잡해지지만 병목 현상 해소의 한 방법
• ROM과 RAM : 전원이 주어지지 않을 때 기록된 내용의 보존 여부로 구분
• SRAM과 DRAM : RAM을 만드는 방식에 따라 리프레시의 필요 여부로 구분
아트멜 사의 마이크로컨트롤러
• 8051
– 인텔이 1980년 발표한 8비트 마이크로컨트롤러
– CISC 구조를 사용
– 다양한 호환 마이크로컨트롤러가 생산되고 있으며 아트멜도 호환 제품을 생산
• ARM Cortex-M
– ARM의 아키텍처를 사용하고 아트멜에서 제작하는 32비트 마이크로컨트롤러
– Cortex-M0, Cortex-M+, Cortex-M3, Cortex-M4, Cortex-M7 등
– SAM (Smart ARM-based Microcontroller unit) 시리즈
• AVR
– 1996년 아트멜이 발표한 고유의 아키텍처를 사용한 8비트 마이크로컨트롤러
– ATmega128은 AVR Mega 시리즈에 속함
• 왜 AVR인가?
– AVR, 8051, PIC 등이 대표적인 8비트 마이크로컨트롤러
– 8비트 마이크로컨트롤러는 간단한 구조를 가지므로 학습용으로 적합함
– AVR은 그 중 가장 최근에 발표된 아키텍처를 사용
– AVR을 위한 다양한 예제를 온라인 상에서 찾아볼 수 있음
– 아두이노 역시 AVR을 기본으로 함
• 왜 ATmega128인가?
– 메가 시리즈 중 가장 적은 핀, 28핀의 ATmega328은 핀 부족으로 주변장치 연결에 제약이 있음
– 메가 시리즈 중 가장 많은 핀, 100핀의 ATmega2560은 동일한 기능을 2개 이상의 핀을 통해 제공하고 있음
– 64핀의 ATmega128은 메가 시리즈 마이크로컨트롤러의 모든 기능을 중복 없이 제공
저항(Register)
- 전류의 흐름을 막는 것 (정격 전류, 전압)
- 사용자가 원하는 전류, 전압을 얻기 위해서 사용
검정 : 0
갈색 : 1
빨강 : 2
주황 : 3
노랑 : 4
초록 : 5
파랑 : 6
보라 : 7
회색 : 8
흰색 : 9
금 은
330옴 : 주황 주황 갈색
100옴 : 갈색 검정 갈색
1k옴 : 갈색 검정 빨강
10k옴 : 갈색 검정 주황
4.7k옴 : 노랑 보라 빨강
Atmel Studio
/*
* 01.LED_CONTROL.c
*
* Created: 2025-03-04 오후 4:25:29
* Author : microsoft
*/
#define F_CPU 16000000UL // 16MHZ Unsigned Long
#include <avr/io.h>
#include <util/delay.h> // _delay_ms, _delay_us 헤더파일
int main(void)
{
DDRA = 0b11111111; // PORTA를 출력 모드(1)로 설정
while (1)
{
PORTA = 0b11111111; // LED 8개 all on
_delay_ms(1000);
PORTA = 0b00000000; // LED 8개 all off
_delay_ms(1000);
}
return 0; // main 함수는 int type을 리턴하는 함수
// 0의 의미는 error없이 정상 종료
}
<실행결과>
https://youtube.com/shorts/pKmE1CbuFnc
'(Telechips) AI 시스템 반도체 SW 개발자 교육 > ATmega128A 마이크로컨트롤러 프로그래밍' 카테고리의 다른 글
6일차 (0) | 2025.03.11 |
---|---|
5일차 (0) | 2025.03.10 |
4일차 (0) | 2025.03.07 |
3일차 (0) | 2025.03.06 |
2일차 (0) | 2025.03.05 |