View
6
Download
0
Category
Preview:
Citation preview
□ 제1장: 마이컴(ATmega128) 개요
• 1절: 특징 및 구조
목 차 (상)
□ 제4장: 인터럽트
• 1절: 인터럽트 개요
• 2절: 레지스터
• 3절: 메모리
• 4절: 시스템 클럭
• 5절: 리셋 및 슬립 모드
• 6절: Hexa 파일과 구동
7절 실습
• 2절: 인터럽트 벡터
• 3절: MCU 제어 레지스터
• 4절: 인터럽트 제어 레지스터
• 5절: 상태 레지스터
• 6절: 마이컴과 플립플롭회로
7절 실습• 7절: 실습
□ 제2장: 모델링
• 1절: 마이컴 이해 방법
• 2절: 등장인물과 활동공간
• 3절: 개발 기능 정의
• 7절: 실습
□ 제5장: 타이머카운터
• 1절: 타이머카운터 개요
• 2절: 8비트 TC 레지스터
• 3절: 8비트 TC 동작과 출력3절: 개발 기능 정의
• 4절: 로봇 회로 및 구조
• 5절: LCD 이해
• 6절: 주석문과 변수명 정의
• 7절: 실습
3절: 8비트 TC 동작과 출력
• 4절: 16비트 TC 레지스터
• 5절: 16비트 TC 동작과 출력
• 6절: 워치독 타이머
• 7절: 실습
□ 제3장: 입출력 제어
• 1절: 제어 용어 이해
• 2절: I/O 포트 이해
• 3절: I/O 포트 추가 기능
• 4절: 레지스터 정의
• 5절: LCD 제어 기초
• 6절: 쉬프트 레지스터 활용
• 7절: 실습
□ 제6장: 로봇 모터 제어
• 1절: 모터 일반
□ 제9장: A/C변환기
• 1절: ADC 이해
목 차 (하)
• 2절: DC 모터 제어
• 3절: 서보 모터 제어
• 4절: 스테핑 모터 제어
• 5절: 자율 주행 로봇
• 6절: PID 제어
7절 실습
• 2절: 관련 레지스터
• 3절: 변환 결과
• 4절: 온도 센서
• 5절: 거리 센서
• 6절: 아날로그 비교기
7절 실습• 7절: 실습
□ 제7장: 리모컨 활용
• 1절: 측정기 사용법
• 2절: 오실로스코프 활용
• 3절: 적외선 수신기
• 7절: 실습
□ 제10장: LCD제어(EEPROM)
• 1절: LCD 문자 표현
• 2절: LCD 제어 레지스터
• 3절: LCD 제어 함수3절: 적외선 수신기
• 4절: 삼성 리모컨 코드 이해
• 5절: 코드 수신 C 문법
• 6절: 리모컨 활용
• 7절: 실습
3절: LCD 제어 함수
• 4절: LCD 표준 출력
• 5절: EEPROM 제어
• 6절: EEPROM 읽기 쓰기
• 7절: 실습
□ 제8장: 통신
• 1절: UART 개요
• 2절: UART 레지스터
• 3절: 송신과 수신
• 4절: MFC 프로젝트 생성
□ 부록
• 1절: Lock 비트 설정
• 2절: Fuse 비트 설정
• 3절: 한글 LCD 사용법
• 4절: 영문 찾아보기
• 5절: MFC 화면 설계
• 6절: MFC 제어 구현
• 7절: 실습
• 5절: 한글 찾아보기
• 6절: 레지스터 목록
비유 적용
1 마이컴 이해 방법
4 이 해
ⓐ 항구 ⓑ 부두
비유 적용
① PORT 비유
• 포트: 수출, 수입하는 ( ⓐ )
4
ATmega128
1. (PORTA~PORTG):
• : PORTG0~PORTG4(5 )
2. : (53 )
3. Vcc: (21, 52)
4. MCU :
이 해
PORTG(속초항)
PORTA (인천항)
PORTB
② PIN 비유
• 핀: 각 항구에서 ( ⓑ )
(군산항) PORTF(포항항)
발전소(52, 53)
발전소(21, 22)
PORTC(목포항)
PORTE(부산항)
0
1
2
3
45
67
PORTD(광양항)
비유 적용
1 마이컴 이해 방법
4
ⓐ ICR ⓑ prescaler
비유 적용
③ 타이머/카운터 비유
• TOP & ( ⓐ ) value: 다양한 높이의 산
• TCNT register: 현재 등산 높이값(정수)
• up count: 등산
4
• down count: 하산
• OCR & OVF interrupt: 대피소(산장)
• TCNT initial value: 차량 이동(관리사무소)
• ( ⓑ ) : 주사기 약의 농도, 제어를 위한 적정 주기를 생성
이 해
1.
2. Figure 53
• DC Servo
•
•
3.
• period: ( ) 10ms 0.01sec
• PWM: High
( , Duty Ratio)
☞ 출처: ATmega128 Datasheet(2467R-AVR-06/08), p. 129
프로젝트 정의
3 개발 기능 정의
2
ⓐ T삼거리
프로젝트 정의
① 경로 주행 로봇 개요
• 도로 주행: 출발점에서 도착점까지
• 도로망 구조: 주행 직선 도로, 교차로(사거리, 좌 삼거리, 우 삼거리, ( ⓐ ))
• 주행 중 승객 감지: 로봇 전방 10cm~70cm 이내의 승객(충돌체) 검색
2
• 정보 수집: 출발 시간, 도착 시간, 교차로 마다 온도, 산소 및 인체감지 정보
참고
C
.
교재 프로젝트
3 개발 기능 정의
3 교재 프로젝트
④ 각 장별 실습 내용
3
분류 기능명 대표 기능(단위 함수) 각 장의 7절.실습
템플릿 단위 함수 프로젝트 구현을 위한 단위 함수 템플릿 2장
디지털 시계delay() 함수를 이용한 시간, 분, 초 알고리즘 구현인체 감지 센서 정보 확인
3장
참고
기본기능
인체 감지 센서 정보 확인
메뉴 생성순서도(flowchart)를 활용한 버튼 메뉴 만들기사용자 시간 설정: 인터럽트 및 폴링 방식
4장
타이머 설정 32.768KHz에 의한 1초 생성으로 디지털 시계 완성 5장
로봇모터제어 도로 구조와 충돌체를 감안한 PWM 제어 6장
리모컨 응용 리모컨 수신 코드에 의한 로봇 수동 제어 7장리 컨 응용 리 컨 수신 에 의한 봇 수동 제어 장
PC 자료 전달로봇 제어 명령체계에 따른 Packet 정보 송수신PC에서 무선 통신에 의한 정보 송수신 환경 구축
8장
정보 수집 ADC를 활용: 온도, 거리, 산소 센서 정보 수집 9장
분석기능근접 노드 분석 C교재 과제 내용 활용 C교재
최단 거리 분석 C교재 내용 활용 C교재
종합 소스 종합 순서도(flowchart)에 기반한 단위 함수의 통합 템플릿 10장
기타 한글 표현 한글 LCD 사용법 부록 #3
제5장 : 타이머카운터
타 이 머 카 운 터
타 이 머 카 운 터 개 요타 이 머 카 운 터 개 요
8 비 트 T C 레 지 스 터
8 비 트 T C 동 작 과 출 력
1 6 비 트 T C 레 지 스 터
1 6 비 트 T C 동 작 과 출 력
* 실 습
워 치 독 타 이 머
ATmega128 타이머/카운터
1 타이머카운터 개요
1
ⓐ 동일 ⓑ 없음 ⓒ RTC 가능 ⓓ ICR1 ⓔ ICR3
정의
ATmega128 타이머/카운터
① 2개의 8비트 타이머/카운터 0, 2: 제어에 필요한 레지스터 ( ⓐ )
② 2개의 16비트 타이머/카운터 1, 3: 제어에 필요한 레지스터 ( ⓐ )
③ 동작: 내부 클럭 clkI/O(= clkCPU)를 카운트하는 타이머 또는 외부 클럭을 카운트하는 카운터로 동작
1
타이머/카운터0 타이머/카운터1 타이머/카운터2 타이머/카운터3내 용구 분
구 조 8비트 16비트 8비트 16비트
카운터 동작 시
외부 클럭 입력핀TOSC1 T1 T2 T3
프리스케일러(분주) 1, 8, 32, 64, 128, 256, 1024
1, 8, 64, 256, 1024
1, 8, 64, 256, 1024
1, 8, 64, 256, 1024
Top: 분주비는 주사기 약의 농도8비트 타이머/카운터이지만 16비트 프리스케일러와 분주비 종류가 같음
전체 인터럽트 활성화
관련 레지스터
TCCR0, TCNT0, OCR0, ASSR,TIMSK, TIFR,SFIOR
TCNT1, TCCR1A,TCCR1B, TCCR1C,OCR1A, OCR1B,OCR1C, ICR1,TIMSK, ETIMSK,TIFR, ETIFR, SFIOR
TCCR2, TCNT2, OCR2, ( ⓑ ),TIMSK, TIFR,SFIOR
TCNT3, TCCR3A,TCCR3B, TCCR3C,OCR3A, OCR3B,OCR3C, ICR3,TIMSK, ETIMSK,TIFR, ETIFR,SFIOR #asm(“sei”) //SREG의 7bit 활성화
사용할 외부 인터럽트 활성화TIMSK = 0x01; //Overflow T/I 활성화
분주비, 동작모드, 출력형태
TCCRn Register
‐ Prescaler: 분주비
SFIOR SFIOR
관련 입력핀 TOSC1, TOSC2 T1, IC1 T2 T3, IC3
관련 출력핀 OC0 OC1A, OC1B, OC1C OC2 OC3A, OC3B, OC3C
인터럽트오버플로우,
출력 비교 매치
오버플로우,출력 비교 매치A/B/C, 입력 매치
오버플로우,출력 비교 매치
오버플오우,출력 비교 매치A/B/C, 입력 캡쳐
‐ 동작모드: Normal, CTC, PWM‐ 어느 출력핀?
A/B/C, 입력 매치 A/B/C, 입력 캡쳐
특 징
( ⓒ ),타이머/카운터 모든
프리스케일러 사용
캡쳐 가능( ⓓ ) ‐ 캡쳐 가능( ⓔ )
Top 값: 등산에서 산의 표고(정상)
타이머/카운터0 2 블록도
1 타이머카운터 개요
2
ⓐ 1,024 ⓑ 오버플로우 ⓒ 비교
타이머/카운터0, 2 블록도
① 특징
• 10비트 프리스케일러 내장: 최대값은 ( ⓐ )
• 비교 매치에서 타이머 클리어: 오토 리로드
• 시계 클럭 접속 단자: 32.768KHz를 TOSC1, TOSC2에 연결
2
정의
• 2개 인터럽트 소스 제공: ( ⓑ )와 출력 ( ⓒ ) 매치(Output Compare Match)
Control Logic
TCCRn
count
clear
direction
TOVn (lnt, Req.)
☆ 오버플로우 인터럽트0
이 해
Timer/Counter
32.768KHz
16MHz
Logic
T/COscillator
TOSC1
TOSC2
OCnWaveformGeneration
=
= 0 = 0xFFTCNTn
Prescaler(분주비)
direction
BOTTOM TOP
clk I/OOcn(lnt,Req.)
☆ 비교매치 인터럽트
Synchronization Unit
OCRn
clk Vo
DATABUS
Synchronized Status Flags
동기/비동기
ASSRn
clk ASY
Status Flags
Asynchronous Mode Select(ASn)
☞ 출처: ATmega128 Datasheet
TCCR0(Timer/Counter0 Control Register): 타이어/카운터0 제어 레지스터
2 8비트 TC 레지스터
1
ⓐ 않음 ⓑ 동작
TCCR0(Timer/Counter0 Control Register): 타이어/카운터0 제어 레지스터
① 비트 구조
1
Bit 7 6 5 4 3 2 1 0
FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00 TCCR0읽기/쓰기 R/W R/W R/W R/W R/W R/W R/W R/W
초기값 0 0 0 0 0 0 0 0
② 비트 기능
• Bit7‐FOC0(Force Output Compare)
‐ 이 비트는 PWM 모드가 아닌 경우에만 유효하며, 1이면 비교 출력 단자 OC0 핀을 통해 COM01,
COM00 비트에 의해 설정된 값이 즉시 출력COM00 비트에 의해 설정된 값이 즉시 출력
‐ 인터럽트를 발생시키지 ( ⓐ )
‐ OCR0 레지스터를 TOP으로 사용하는 CTC 모드에서 타이머를 클리어시키지 않음
• Bit6, Bit3‐WGM00, WGM01(Waveform Generation Mode)
‐ 이 비트는 타이머/카운터0의 ( ⓑ ) 모드를 설정
‐ 이 값에 따라 카운트 순서 및 최대 카운터값(TOP)이 표와 같이 결정
여기서, TOP은 타이머/카운터0이 카운트할 수 있는 최대값을 나타냄
모드 WGM01 WGM00 동작모드 TOP OCR0 업데이트 시점 TOV0 플래그 셋 시점
0 0 0 Normal 0xFF 설정 즉시 MAX
1 0 1 Phase Corrrect PWM 0xFF TOP BOTTOM
2 1 0 CTC OCR0 설정 즉시 MAX
3 1 1 Fast PWM 0xFF TOP MAX
TCCR0(Timer/Counter0 Control Register): 타이어/카운터0 제어 레지스터(계속)
2 8비트 TC 레지스터
1 이 해
10‐BIT T/C PRESCALER
TCCR0(Timer/Counter0 Control Register): 타이어/카운터0 제어 레지스터(계속)
③ 타이머/카운터0 프리스케일러 내부 구조
1
clkI/o
clkT0S
Clear
16MHz
이 해
/1
AS0비트
TOSC1
적용
clkTOS/8
적용
clkTOS/32
적용
clkTOS/64
적용
clkTOS/128
적용
clkTOS/256
적용
clkTOS/1024
32.768KHz
미적
용clkTOS/
CS00
CS01
PSR0 정지 0
Timer/Counter0 CLOCK SOURCEclk
T0
CS01
CS02
☞ 출처: ATmega128 Datasheet
PFC PWM 모드(Phase and Frequency Correct PWM mode)5
5 16비트 TC 동작과 출력
ⓐ 분해능 ⓑ 0 ⓒ 1
PFC PWM 모드(Phase and Frequency Correct PWM mode)
① 이 모드로 PC PWM 모드와 같이 높은 ( ⓐ )의 PWM 파형을 발생하는데 유용하며 8,9의 동작 모드 갖음
② 이 모드에서는 TCNTn 값이 0에서 TOP까지 증가하다 0으로 감소하는 카운터 동작을 반복
③ TOP 값은 ICRn, OCRnA로 지정 가능
5
OCnA Interrupt Flag SetOCnA Interrupt Flag Setor ICFn Interrupt Flag Set(Interrupt on TOP)
OCRnx/ TOP UpdateAnd TOVn Interrupt Flag Set(Interrupt on Bottom)
(COMnx1:0 = 2)
(COMnx1:0 = 3)
TCNTn
OCn
OCn
④ 이 모드는 PC PWM 동작 모드와 거의 같지만, 다른 점은 TOP으로 설정되는 레지스터 값이 갱신되는 시점
이 PC PWM 모드에서는 TCNTn이 TOP에서 갱신되고 PFC PWM 모드에서는 Ox0000에서 갱신
⑤ 비반전 비교 출력모드에서 업 카운트 중에 TCNTn과 출력 비교 레지스터 OCRnx의 값이 일치하면 OCnx
1 2 3 4Period ☞ 출처: ATmega128 Datasheet
⑤ 비반전 비교 출력모드에서 업 카운트 중에 TCNTn과 출력 비교 레지스터 OCRnx의 값이 일치하면 OCnx
핀을 통해 ( ⓑ )이 출력. 다운 카운트 중에 일치하면 ( ⓒ )을 출력
⑥ 반전 비교 출력모드에서는 반대의 값이 OCnx 핀 통해 출력
⑦ TOP으로 설정되는 값에 따라 High(또는 Low)인 부분의 펄스폭이 가변되어 PWM 파형 출력
5 연습문제 3번의 결과물에 타이머/카운터2를 적용하여 1ms를 생성
하고 LCD를 이용하여 1초 단위로 값이 증가되도록 프로그램을 구
5 [ 답안: ex51_5_TC2_Make.c ]
ⓐ 0x03 ⓑ 0x06
하 를 이용하여 위 값이 증가되 록 램을 구
현하시오.
[ 구현 설명 ]
① 단계: 3번 프로그램을 그대로 복사한 다음 LCD 활용을 위해
<base.h> 헤더를 포함한다.
화② 단계: 정수형으로 g_udSec 변수를 선언하고 0을 초기화 한다.
③ 단계: main() 함수 내에서 acStr1[17] 문자열형 변수를 선
언하고 lcd_init(16);을 선언한다.
④ 단계: 이제 Timer/Counter0 레지스터를 Timer/Counter2
에서 작동되도록 레지스터를 수정한다.에서 작동되 록 레지 터를 수정한다
⑤ 단계: while(1)에는 lcd_gotoxy(0,0) 함수를 구현한다.
⑥ 단계: acStr1에 g_udSec를 sprintf() 함수로 출력한다.
⑦ 단계: Timer/Counter2 오버플로우 인터럽트 함수 구현부에
는 g_udCnt++;가 되게 하고 값이 1,000일 때마다 g_udSec
(초)가 증가되도록 구현한다.
⑧ 단계: 오류가 없으면 다운로드 한다.
⑨ 단계: 로봇을 작동해 보면 너무나 시간이 오래(7~8배?) 걸릴
것이다. 제공 엑셀 파일을 살펴 보면 TCCR2를 ( ⓐ )으로
TCNT2를 ( ⓑ )으로 1ms를 계산한 부분을 확인해 보자.를 ( ⓑ ) 를 계산한 부분을 확인해 자
⑩ 단계: 2번 예제의 20 line을 본 예제 19 line에 적용해 보
자. 4배 느려진 느낌? 레지스터 설정 중요 합니다.
인 사 말저자 소개독자분들께 !
반갑습니다.
지식인이라면 자신의 지식을 정리해 그 결과를 책으로 출판할 꿈을 갖습니다.
서동진(徐銅辰)
할 을 갖습니다
본 교재는 처음 마이크로 컨트롤러 제어를 접하는 모든 분들에게 도움을 드리기 위해 기획 되었습니다. 공저자가 각분야에서 20여년 간 기초 공학과 실무를 바탕으로 경험한지식을 종합하여 완성하였습니다. 또한 교재의 목표를 감
[ 학 력 ]
조선대학교 제어계측공학과 박사 졸업
Visiting Student Scholar(교환학생연구원): Robotics Institute of Carnegie Mellon
University
전자부품연구원 지능로보틱스연구센터 연구원 지식을 종합하여 완성하였습니다. 또한 교재의 목표를 감히 “For the world best IT education”이라고 했습니다.
독자분들이 책의 내용에서, 소스에서, 구성에서, 그 가치와 가능성을 확인해 주십시오. 영문화 되어 세계의 모든독자분들이 인정할 만큼 Best로 검증되었을 때, 마이크로
노틸러스 효성 로봇개발팀 선임연구원
[ 주요 학술 활동 ]
① 5편의 SCI급 논문을 포함한 8편의 국제학술지 논문 게재독자분들이 인정할 만큼 Best로 검증되었을 때, 마이크로컨트롤러를 실무적으로 입문하기 위해서 반드시 습득해야할 책이 본 교재가 되었을 때에 “For”라는 단어를 삭제하도록 하겠습니다.
본 교재는 항상 독자와 함께하는 모델을 추구할 것임을 약
② 9편의 국내학술지 논문 게재
③ 30편 이상의 국제학회 논문 발표
④ 30편 이상의 국내학회 논문 발표
⑤ 1건 저술
⑦ 소프트웨어 지적재산권 7건 이상 등록 본 교재는 항상 독자와 함께하는 모델을 추구할 것임을 약속드리며 이 책이 출간되기까지 도와주신 모든 분들께 진심으로 감사 드립니다.
2011년 12월 저자 올림
⑦ 소프트웨어 지적재산권 7건 이상 등록
⑧ 대한전자공학회 우수논문 발표상 외 다수 수상
[ 2011년] 수송미디어 출판 도서 소개 [ 2012년] 수송미디어 출판 예정 도서(가칭) 목록
1 임베디드 제어 첫걸음 저자 확정1. 임베디드 제어 첫걸음: 저자 확정
2. 임베디드 제어 첫걸음(영문판, 중국어판): 역자 확정
3. 임베디드 제어 첫걸음(일본어판, 독일어판, 프랑스판): 저자 미확정
4. C언어 첫걸음(영문판, 중국어판): 역자 확정
5. C언어 첫걸음(일본어판, 독일어판, 프랑스판): 저자 미확정
6. 차륜 기반 구동 로봇(AngelRo E‐500) 제어: 저자 확정
7. API 함수를 이용한 그래픽 프로그래밍: 저자 미확정
8. MFC 함수를 이용한 로봇 관제 프로그래밍: 저자 미확정
9. 스마트폰을 활용한 로봇 관제 프로그래밍: 저자 미확정
10 내 기술을 클래스로 만드는 CPP 프로 래밍 저자 확정10. 내 기술을 클래스로 만드는 CPP 프로그래밍: 저자 확정
11. VBA를 활용한 초기자료 구축 기법: 저자 미확정
12. AutoCAD 기초: 저자 미확정
13. 인벤터를 활용한 로봇 기구 설계: 저자 확정
위의 교재 집필에 관심 있으신 분은 출판사로 연락 주세요.
출판사에서 다양한 자료(소스)와 디자인 등을 지원해 드립니다.
위의 교재 외에도 IT(컴퓨터, 전자, 전기, 기계) 분야의 교재
발간에 관심이 있으신 분은 협의 후 출판 가능합니다발간에 관심이 있으신 분은 협의 후 출판 가능합니다.
geo1004.comg
Recommended