2/47
CPU
(중앙 처리 장치)
<MPU>
Micro Processor Unit
<MCU>
Micro Controller Unit
CPU
ROM
RAM
I/O
Controller
3/47
4/47
* 우리가 무언가를 제어하고 싶다면 MCU를 공부해야 한다 !
5/47
6/47
7/47
- 프로세서, 프로그램 메모리, SRAM, EEPROM, I/O포트, 타이머, 워치독 타이머, ADC, DAC, UART, USART, Interrupts,
Programmable 등
8/47
*크리스탈(X-TAL)과 오실레이터
(OSC)는 수정편을 이용한 발진 소자.
크리스탈은 수정편 자체이고,
오실레이터는 발진 회로를 내장.
9/47
<I/O포트>
10/47
참고 링크
11/47
X-TAL과 OSC가 무엇인지 설명해보자.
Advanced Virtual RISC
1996년 Atmel사에서 개발한 RISC구조의 MCU.
XMEGA, megaAVR, tinyAVR 시리즈 등 6개 그룹으로 구성,
12/47
* CISC : Complex Instruction Set Computer, 복잡한 명령어를 지원하는 컴퓨터.
RISC : Reduced Instruction Set Computer, CISC구조의 CPU가 지니는 전체 명령어의 10% 정도를
지원하는 컴퓨터.
13/47
폰노이만 구조 : CPU가 프로그램을
실행하는데 주기억장치에 명령어와
데이터를 함께 저장한 후에 수행하는
방식
하버드 구조 : 프로그램 메모리와
데이터 메모리를 분리시켜서
명령어들은 프로그램 메모리에
저장하고 데이터들은 데이터 메모리에
저장한 후에 프로그램을
수행하는 방식
1. 명령어가 간단하고 동작 속도가 빠른 MCU
2. ISP(In System Programming)지원.
( ROM Writer 없이 PC에서 AVR내부의 flash(RAM)메모리로 프로그램 코드 바로 저장 )
3. Harvard Architecture으로 C언어에서 우수한 성능을 발휘 : 1 cycle에 1 instruction
( Harvard Architecture : 동시에 데이터와 명령어를 읽을 수 있는 구조방식. )
4. 막강한 각종 컴파일러가 무료로 제공. ADC, PWM, SPI 등의 고기능 손쉽게 구현 가능.
14/47
UART : 범용 비동기화 송수신기 Universal asynchronous receiver/transmitter)는 병렬 데이터의
형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종.
PIC16F688 : AVR ISP 기능 사용할 때 쓰임.
퓨즈비트 : clock 선택, 리셋 벡터 조정용.
* 크리스탈이 두 개인 이유는 다른 하나는 AVR ISP 구동용. 15/47
상세 : 링크 Datasheet 16/47
17/47
CPU에서 메모리나 입출력 기기에
데이터를 송출하거나 반대로 메모리나
입출력 기기에서 CPU에 데이터를
읽어들일 때 필요한 전송로.
이 버스는 CPU와 메모리 또는
입출력기간에 어떤 곳으로도
데이터를 전송할 수 있으므로
‘쌍방향 버스’라 한다.
AVR를 사용하기 위해
Atmel Studio라는 툴을 사용해야 함.
AVR-GCC : Linux용
WIN-AVR : Windows용 → Atmel Studio
• 디버깅 제공
• 강력한 호환성
18/47
19/47
20/47
21/47
22/47
23/47
24/47
자신이 사용하는 장비 선택
컴퓨터와 연결한 곳도 선택
25/47
ATmega128A ISP
26/47
27/47
28/47
29/47
30/47
31/47
32/47
33/47
34/47
디버깅이 왜 필요한지 말해보자.
오픈 소스 기반의 하드웨어 플랫폼 & 소프트웨어 개발환경
이탈리아 북부 전문대학교의 교수가 처음 개발.
현재는 인텔사와 협력하여 개발 중.
https://www.arduino.cc/en/Main/Products
35/47
1. 저비용 : 다른 마이크로컨트롤러 플랫폼에 비해 저렴. (35불)
2. 간단하고 명확한 프로그래밍 환경 :
-초보자 : 사용용이, 실력자 : 다양한 시도를 위한 유연성을 제공.
-소프트웨어 개발을 위한 통합개발환경(IDE) 제공.
-컴파일 된 펌웨어(특정 하드웨어 상에서 동작하는 소프트웨어)를 USB를 통해 손쉽게 업로드.
-가독성 있는 소스
3. 오픈 소스 :
-고급 프로그래머들에 의해 작성된 확장 소프트웨어 라이브러리들을 구하여 사용 가능.
-회로 설계자들이 손쉽게 자신만의 모듈을 만들고 개선 가능.
4. 확장 가능한 쉴드 : 원하는 기능을 추가가능.
5. Processing : 시각화하는 프로그램 활용 가능.
36/47
ARDUINO- Products
와이파이 탑재 쉴드
이더넷 쉴드
다양한 센서탑재 쉴드
블루투스
.
.
.
쉴드(I/O핀)을 이용하여 여러 층의 확장 기능 추가 가능
37/47
수정자
LED : 아두이노의
작동여부 알려줌
USB 커넥터
: 전원인가
콘덴서
CPU칩
:ATmega328P
쉴드 :
디지털 핀
아날로그 핀
DC잭 :
외부 전원부
RESET버튼
38/47
datasheet
39/47
아두이노를 사용하기 위해
아두이노 개발환경인 Arduino IDE를 사용해야 함.
(Windows, Mac OSX, Linux 환경에서 모두 사용 가능함.)
40/47
https://www.arduino.cc/
41/47
42/47
아두이노를 연결하면,
COMx(Arduino/Genuino Uno가 뜬다.
소스 컴파일
버튼
아두이노에
업로드 버튼
시리얼 모
니터
소스 작성하는 부분
43/47
AVR이나 Arduino를 이용하여 LED를 1초 간격으로 점멸해보자.
44/47
#include<avr/io.h> // 레지스터 이름과 레지스터 비트
이름 등이 포함된 헤더파일.
int main() //메인문 함수.
{
DDRA = 0x01;
//DDR은 입력과 출력을 결정하는 레지스터,
PA1출력으로 결정, 0b00000001과 같음.
While(1) // 반복문
{
PORTA = 0x01;
//PORT는 출력 레지스터, 1출력(HIGH)
_delay_ms(1000); //1초 딜레이 ( 실제로 딜레이 사용은
좋지 않음, 타이머/인터럽트 공부하기. )
PORTA = 0x00; //0출력
_delay_ms(1000);
}
Return 0; // int형 함수는 반환해줘야 함,
0은 함수를 종료하는 데 아무 이상 없다는 뜻.
}
//pinMode 출력으로 설정
// 반복 ( while과 같은 역할 )
// 한번만 설정하면 됨
// 3번핀 0V 출력
// 3번핀 5V 출력
// 1초 딜레이
45/47
AVR이나 ARDUINO중 관심 가는 MCU를 골라서 DATASHEET 찾아 읽어본 후,
궁금한 점 세 가지 이상 조사하기
(한글파일이나, 포스트 형식으로, 분량 자유 – 제대로 안 하면 분량 추가됨)
46/47
47/47

MCU(nanheekim)

  • 2.
  • 3.
    CPU (중앙 처리 장치) <MPU> MicroProcessor Unit <MCU> Micro Controller Unit CPU ROM RAM I/O Controller 3/47
  • 4.
  • 5.
    * 우리가 무언가를제어하고 싶다면 MCU를 공부해야 한다 ! 5/47
  • 6.
  • 7.
    7/47 - 프로세서, 프로그램메모리, SRAM, EEPROM, I/O포트, 타이머, 워치독 타이머, ADC, DAC, UART, USART, Interrupts, Programmable 등
  • 8.
    8/47 *크리스탈(X-TAL)과 오실레이터 (OSC)는 수정편을이용한 발진 소자. 크리스탈은 수정편 자체이고, 오실레이터는 발진 회로를 내장.
  • 9.
  • 10.
  • 11.
  • 12.
    Advanced Virtual RISC 1996년Atmel사에서 개발한 RISC구조의 MCU. XMEGA, megaAVR, tinyAVR 시리즈 등 6개 그룹으로 구성, 12/47 * CISC : Complex Instruction Set Computer, 복잡한 명령어를 지원하는 컴퓨터. RISC : Reduced Instruction Set Computer, CISC구조의 CPU가 지니는 전체 명령어의 10% 정도를 지원하는 컴퓨터.
  • 13.
    13/47 폰노이만 구조 :CPU가 프로그램을 실행하는데 주기억장치에 명령어와 데이터를 함께 저장한 후에 수행하는 방식 하버드 구조 : 프로그램 메모리와 데이터 메모리를 분리시켜서 명령어들은 프로그램 메모리에 저장하고 데이터들은 데이터 메모리에 저장한 후에 프로그램을 수행하는 방식
  • 14.
    1. 명령어가 간단하고동작 속도가 빠른 MCU 2. ISP(In System Programming)지원. ( ROM Writer 없이 PC에서 AVR내부의 flash(RAM)메모리로 프로그램 코드 바로 저장 ) 3. Harvard Architecture으로 C언어에서 우수한 성능을 발휘 : 1 cycle에 1 instruction ( Harvard Architecture : 동시에 데이터와 명령어를 읽을 수 있는 구조방식. ) 4. 막강한 각종 컴파일러가 무료로 제공. ADC, PWM, SPI 등의 고기능 손쉽게 구현 가능. 14/47
  • 15.
    UART : 범용비동기화 송수신기 Universal asynchronous receiver/transmitter)는 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종. PIC16F688 : AVR ISP 기능 사용할 때 쓰임. 퓨즈비트 : clock 선택, 리셋 벡터 조정용. * 크리스탈이 두 개인 이유는 다른 하나는 AVR ISP 구동용. 15/47
  • 16.
    상세 : 링크Datasheet 16/47
  • 17.
    17/47 CPU에서 메모리나 입출력기기에 데이터를 송출하거나 반대로 메모리나 입출력 기기에서 CPU에 데이터를 읽어들일 때 필요한 전송로. 이 버스는 CPU와 메모리 또는 입출력기간에 어떤 곳으로도 데이터를 전송할 수 있으므로 ‘쌍방향 버스’라 한다.
  • 18.
    AVR를 사용하기 위해 AtmelStudio라는 툴을 사용해야 함. AVR-GCC : Linux용 WIN-AVR : Windows용 → Atmel Studio • 디버깅 제공 • 강력한 호환성 18/47
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
    24/47 자신이 사용하는 장비선택 컴퓨터와 연결한 곳도 선택
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
    오픈 소스 기반의하드웨어 플랫폼 & 소프트웨어 개발환경 이탈리아 북부 전문대학교의 교수가 처음 개발. 현재는 인텔사와 협력하여 개발 중. https://www.arduino.cc/en/Main/Products 35/47
  • 36.
    1. 저비용 :다른 마이크로컨트롤러 플랫폼에 비해 저렴. (35불) 2. 간단하고 명확한 프로그래밍 환경 : -초보자 : 사용용이, 실력자 : 다양한 시도를 위한 유연성을 제공. -소프트웨어 개발을 위한 통합개발환경(IDE) 제공. -컴파일 된 펌웨어(특정 하드웨어 상에서 동작하는 소프트웨어)를 USB를 통해 손쉽게 업로드. -가독성 있는 소스 3. 오픈 소스 : -고급 프로그래머들에 의해 작성된 확장 소프트웨어 라이브러리들을 구하여 사용 가능. -회로 설계자들이 손쉽게 자신만의 모듈을 만들고 개선 가능. 4. 확장 가능한 쉴드 : 원하는 기능을 추가가능. 5. Processing : 시각화하는 프로그램 활용 가능. 36/47
  • 37.
    ARDUINO- Products 와이파이 탑재쉴드 이더넷 쉴드 다양한 센서탑재 쉴드 블루투스 . . . 쉴드(I/O핀)을 이용하여 여러 층의 확장 기능 추가 가능 37/47
  • 38.
    수정자 LED : 아두이노의 작동여부알려줌 USB 커넥터 : 전원인가 콘덴서 CPU칩 :ATmega328P 쉴드 : 디지털 핀 아날로그 핀 DC잭 : 외부 전원부 RESET버튼 38/47
  • 39.
  • 40.
    아두이노를 사용하기 위해 아두이노개발환경인 Arduino IDE를 사용해야 함. (Windows, Mac OSX, Linux 환경에서 모두 사용 가능함.) 40/47
  • 41.
  • 42.
  • 43.
    아두이노를 연결하면, COMx(Arduino/Genuino Uno가뜬다. 소스 컴파일 버튼 아두이노에 업로드 버튼 시리얼 모 니터 소스 작성하는 부분 43/47
  • 44.
    AVR이나 Arduino를 이용하여LED를 1초 간격으로 점멸해보자. 44/47
  • 45.
    #include<avr/io.h> // 레지스터이름과 레지스터 비트 이름 등이 포함된 헤더파일. int main() //메인문 함수. { DDRA = 0x01; //DDR은 입력과 출력을 결정하는 레지스터, PA1출력으로 결정, 0b00000001과 같음. While(1) // 반복문 { PORTA = 0x01; //PORT는 출력 레지스터, 1출력(HIGH) _delay_ms(1000); //1초 딜레이 ( 실제로 딜레이 사용은 좋지 않음, 타이머/인터럽트 공부하기. ) PORTA = 0x00; //0출력 _delay_ms(1000); } Return 0; // int형 함수는 반환해줘야 함, 0은 함수를 종료하는 데 아무 이상 없다는 뜻. } //pinMode 출력으로 설정 // 반복 ( while과 같은 역할 ) // 한번만 설정하면 됨 // 3번핀 0V 출력 // 3번핀 5V 출력 // 1초 딜레이 45/47
  • 46.
    AVR이나 ARDUINO중 관심가는 MCU를 골라서 DATASHEET 찾아 읽어본 후, 궁금한 점 세 가지 이상 조사하기 (한글파일이나, 포스트 형식으로, 분량 자유 – 제대로 안 하면 분량 추가됨) 46/47
  • 47.