printf("ho_tari\n");

1일차 본문

2025.03.04

 

수업을 진행하기 전 C언어 코딩 실력 정도를 가늠하기 위한 문제 풀이를 하였다.

 

주어진 문제는 다음과 같다.

 

c언어사전TEST.hwp
0.13MB

 

 

강의 목적

모든 전자 제품에서 반드시 사용되고 있는 마이크로컨트롤러(MCU) 구조 및 동작 방식 등의 하드웨어에 대한 기본 지식과 C 언어를 이용한 MCU 프로그램 작성 방법을 배워 임베디드 시스템을 구현하는 실무 능력을 배양

 

오늘의 학습 목표

1. AVR 소개

2. 브레드 보드 + ATmega128a + LED + BUTTON 조립

3. 개발 환경 Setup

4. LED 제어

 

마이크로프로세서 (uP)
중앙처리장치(CPU) 하나의 IC 칩으로 집적시켜 만든 반도체 소자
    • uPCPU를 구현하는 한 방법
1969년 인텔의 4비트 uP4004에서 시작
4004는 약 2,300TR 사용, i7은 약 22억 개 TR 사용

 

마이크로컨트롤러 (uC)
uC = uP + 메모리 + 입출력 인터페이스
컴퓨터의 메인보드와 하드디스크 기능을 하나의 IC 칩으로 집적시켜 만든 반도체 소자
단일 칩 마이크로컴퓨터, 마이컴
작고 간단한(마이크로) 제어장치(컨트롤러)를 만들기 위한 목적으로 특화된 마이크로프로세서의 한 종류

 

uC의 장점
제품의 소형화 경량화
저렴한 가격
신뢰성 향상
융통성
 
uC의 단점
낮은 처리 능력
범용성 부족

 

ATmega128 + 크리스탈 + 전원
8MHz로 동작시키기 위해서는 크리스탈도 필요하지 않음
– 여기서는 16MHz로 동작

 

직렬 통신 동기식

여러 번에 걸쳐 전송되는 데이터 비트 구분을 위해 별도의 동기화 클록 사용
SPI, I2C

 

 

직렬 통신 비동기식

전송 속도를 약속하여 사용하고 별도의 클록을 사용하지 않음
동일한 속도로 송수신 하지 않으면 잘못된 데이터가 전달
UART

 

전이중 방식 (full duplex)
송수신을 위해 2개의 연결선 사용
송수신 동시에 가능

 

반이중 방식 (half duplex)
송수신을 위해 1개의 연결선 사용
송수신 동시에 불가능
 

 

교차 개발 환경

 

하드웨어 수준에서 지원되는 명령어의 개수로 구분
CISC :
    • 복잡한 명령을 한 번에 처리 가능하지만 하드웨어는 복잡해짐
    • 명령어에 따라 필요로 하는 클록의 수가 다름
 
RISC :
    • 하드웨어는 간단하지만 복잡한 명령을 여러 번의 간단한 명령으로 처리
    • 명령어가 동일한 수의 클록을 필요로 하므로 파이프라인 도입이 간단

 

노이만 구조
명령어와 메모리가 하나의 메모리에 저장
상대적으로 느린 메모리 속도에 의한 병목 현상

 

하버드 구조
명령어와 메모리를 전용의 메모리에 나누어 저장
하드웨어는 복잡해지지만 병목 현상 해소의 한 방법

 

 

ROMRAM : 전원이 주어지지 않을 때 기록된 내용의 보존 여부로 구분
SRAMDRAM : 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비트 마이크로컨트롤러
ATmega128AVR 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