이미 소장하고 있다면 판매해 보세요.
|
|
I부 ATmega328 프로그래밍 준비하기
1장 마이크로컨트롤러? 마이크로컨트롤러! 3 1.1 마이크로컨트롤러란 무엇인가? 3 1.2 마이크로프로세서? 마이크로컨트롤러? 6 1.3 마이크로컨트롤러는 어디에 사용할 수 있을까? 8 1.4 마이크로컨트롤러를 어떻게 공부해야 할까? 11 1.5 주변장치와 어떻게 데이터를 교환하나? 14 1.6 프로그램은 어떻게 만들어지나? 18 1.7 마이크로컨트롤러가 꼭 필요한가? 19 1.8 요약 21 연습문제 22 2장 메모리 이야기 23 2.1 ATmega328의 메모리 23 2.2 ROM과 RAM 25 2.3 ROM은 정말 읽을 수만 있나? 26 2.4 플래시 메모리 27 2.5 SD 카드 28 2.6 eMMC 29 2.7 SSD 30 2.8 DRAM과 SRAM 30 2.9 요약 32 연습문제 33 3장 ATmega328 마이크로컨트롤러 34 3.1 AVR 34 3.2 ATmega328 소개 35 3.3 ATmega328의 핀 배치 37 3.4 레지스터 41 3.5 ATmega328의 메모리 45 3.6 요약 52 연습문제 52 4장 ATmega328 프로그래밍 준비 53 4.1 왜 ATmega328인가? 53 4.2 ATmega328 프로그래밍을 위한 하드웨어 54 4.3 ATmega328 프로그래밍을 위한 소프트웨어 59 4.4 요약 61 연습문제 62 5장 아두이노 프로그래밍 63 5.1 아두이노 통합 개발 환경 설치 63 5.2 아두이노 우노에 시리얼 방식으로 업로드하기 66 5.3 아두이노 우노에 ISP 방식으로 업로드하기 69 5.4 부트로더 굽기 72 5.5 브레드 보드 기본 회로에 부트로더 굽기 74 5.6 요약 76 연습문제 77 6장 아트멜 스튜디오 설치 78 6.1 아트멜 스튜디오 78 6.2 아트멜 스튜디오 설치 79 6.3 요약 87 연습문제 88 7장 Hello Blink 89 7.1 C 스타일 89 7.2 아두이노 스타일 97 7.3 C 스타일 대 아두이노 스타일 107 7.4 요약 109 연습문제 109 8장 프로그램의 기본 구조 111 8.1 C 스타일 프로그램의 구조 112 8.2 아두이노 스타일 프로그램의 구조 117 8.3 C 스타일과 아두이노 스타일 120 8.4 요약 122 연습문제 123 9장 비트 연산자 124 9.1 포트? 핀? 124 9.2 8개의 LED 제어하기 126 9.3 비트 연산자 130 9.4 비트 패턴 만들기 141 9.5 요약 143 연습문제 143 II부 ATmega328 프로그래밍 시작하기 10장 시리얼 통신 147 10.1 UART 148 10.2 UART 통신을 위한 레지스터 151 10.3 아두이노의 시리얼 통신 163 10.4 UART 라이브러리 만들기 167 10.5 문자열 수신 및 처리 173 10.6 printf 함수 사용하기 177 10.7 요약 179 연습문제 180 11장 버튼 입력 181 11.1 풀업 저항과 풀다운 저항 182 11.2 버튼 입력 184 11.3 디바운스 188 11.4 디바운스 회로 193 11.5 요약 195 연습문제 196 12장 아날로그-디지털 변환 197 12.1 ATmega328의 ADC 197 12.2 가변저항 값 읽기 199 12.3 AD 변환을 위한 레지스터 202 12.4 아두이노의 AD 변환 208 12.5 가변저항으로 LED 제어하기 209 12.6 VCC는 5V인가? 212 12.7 난수 생성 216 12.8 요약 219 연습문제 220 13장 인터럽트 221 13.1 폴링 대 인터럽트 221 13.2 인터럽트 223 13.3 인터럽트 처리 225 13.4 인터럽트 사용에서의 주의 사항 230 13.5 외부 인터럽트 232 13.6 핀 변화 인터럽트 238 13.7 요약 242 연습문제 242 14장 타이머/카운터 243 14.1 타이머/카운터 243 14.2 오버플로 인터럽트 245 14.3 비교일치 인터럽트 248 14.4 파형 출력 252 14.5 아두이노의 타이머 255 14.6 요약 259 연습문제 260 15장 PWM 262 15.1 PWM 262 15.2 PWM 모드 268 15.3 PWM을 이용한 LED 밝기 제어하기 273 15.4 아두이노의 PWM 279 15.5 요약 281 연습문제 282 16장 SPI 283 16.1 SPI 283 16.2 SPI 방식의 EEPROM 288 16.3 아두이노에서 25LC010A 사용하기 300 16.4 요약 303 연습문제 304 17장 I2C 307 17.1 I2C 307 17.2 DS1307, RTC 칩 311 17.3 아두이노 ? Wire 라이브러리 323 17.4 아두이노 ? RTClib 라이브러리 327 17.5 요약 329 연습문제 330 18장 컴퓨터와의 시리얼 연결 331 18.1 ATmega328의 UART 통신 331 18.2 RS232-UART 변환기 335 18.3 USB-UART 변환기 339 18.4 컴퓨터의 시리얼 포트 340 18.5 요약 344 연습문제 345 III부 ATmega328 활용하기 19장 7 세그먼트 표시장치 349 19.1 한 자리 7 세그먼트 표시장치 349 19.2 한 자리 7 세그먼트 표시장치 ? 아두이노 스타일 356 19.3 네 자리 7 세그먼트 모듈 358 19.4 네 자리 7 세그먼트 표시장치 ? 아두이노 스타일 365 19.5 요약 366 연습문제 367 20장 LED 매트릭스 368 20.1 LED 매트릭스 368 20.2 LED 매트릭스 제어 374 20.3 LED 매트릭스 제어 ? 아두이노 스타일 381 20.4 요약 382 연습문제 383 21장 텍스트 LCD 384 21.1 텍스트 LCD 384 21.2 8비트 모드 텍스트 LCD 제어 388 21.3 4비트 모드 텍스트 LCD 제어 394 21.4 텍스트 LCD 제어 - 아두이노 스타일 401 21.5 요약 405 연습문제 406 22장 키 매트릭스 408 22.1 키 매트릭스 409 22.2 4×4 키 매트릭스 413 22.3 키 매트릭스 ? 아두이노 스타일 418 22.4 키패드 라이브러리 419 22.5 고스트 현상이 없는 키 매트릭스 422 22.6 요약 427 연습문제 428 23장 DC 모터와 서보 모터 429 23.1 모터 429 23.2 DC 모터 430 23.3 모터 제어 434 23.4 서보 모터 437 23.5 서보 모터 제어 440 23.6 아두이노의 서보 모터 제어 444 23.7 요약 447 연습문제 447 24장 직렬 입력 병렬 출력 레지스터 - 74595 448 24.1 74595 449 24.2 아두이노에서 74595 사용하기 456 24.3 요약 458 연습문제 458 25장 센서 459 25.1 온도 센서 460 25.2 초음파 거리 센서 465 25.3 요약 471 연습문제 471 26장 블루투스 472 26.1 블루투스 모듈 설정 473 26.2 스마트폰 설정 476 26.3 블루투스 통신 480 26.4 아두이노의 블루투스 통신 481 26.5 요약 485 연습문제 485 27장 EEPROM 486 27.1 EEPROM 레지스터 487 27.2 EEPROM 라이브러리 ? GNU 라이브러리 490 27.3 EEPROM 라이브러리 ? 아두이노 스타일 495 27.4 요약 496 연습문제 497 28장 워치독 타이머 499 28.1 워치독 타이머를 위한 레지스터 500 28.2 워치독 타이머 사용하기 503 28.3 워치독 타이머 사용하기 ? 아두이노 스타일 507 28.4 요약 509 연습문제 509 29장 퓨즈 비트 511 29.1 하이 퓨즈 512 29.2 로 퓨즈 514 29.3 확장 퓨즈 518 29.4 퓨즈 프로그래밍 519 29.5 요약 522 연습문제 522 부록 ATmega328 입출력 레지스터 523 미주 531 찾아보기 534 필요 부품 리스트 543 |
|
마이크로컨트롤러는 하나의 칩일 뿐이다. 이 책에서 다루게 될 ATmega328 마이크로컨트롤러의 경우 28개의 핀을 가진 약 3.5cm × 1cm 크기의 칩에 불과하다. 사용의 편이를 위해 보드 위에 빼곡히 들여놓은 부가 장치들에 지레 겁을 먹지만 않는다면 마이크로컨트롤러는 ‘보기보다’ 어렵지 않다. _11
아두이노 우노의 경우 외부 크리스털을 이용하여 16MHz로 동작하도록 설정되어 있지만, 8MHz의 내부 발진기를 사용하도록 설정하는 것도 어렵지 않다. 작은 크기의 제어 장치를 구성하기 위해 크리스털도 없애고 싶다면 8MHz 내부 클록도 고려해 볼 수 있다. 하지만 내부 발진기를 사용하는 경우 최대 클록은 8MHz이며 외부 크리스털에 비해 정확도가 떨어지는 것으로 알려져 있으므로 이러한 점들은 감수하여야 한다. _75p 아날로그 데이터를 디지털 값으로 변환하여 받아들이기 위해서는 앞 절에서 살펴본 것처럼 3~4개의 레지스터를 사용하여야 한다. UART 시리얼 통신을 위해 5개의 레지스터를 사용하여야 하지만 아두이노에서는 Serial 클래스를 통해 간단히 UART 통신을 수행할 수 있었던 것을 기억하는가? AD 변환 역시 마찬가지이다. 아두이노에서는 analogRead라는 함수를 통해 간단하게 아날로그 데이터를 디지털로 변환하여 읽어들일 수 있다. _208p SPI는 고속의 주변장치와 통산을 위해 만들어진 전이중 방식의 동기식 시리얼 프로토콜이다. SPI는 데이터와 클록을 위해 3개의 데이터 선 연결을 필요로 하며 이 3개의 선은 모든 SPI 슬레이브 장치들이 공통으로 사용한다. 여러 개의 슬레이브 장치 중 하나를 선택하기 위해서는 별도의 연결이 필요하며, 이를 슬레이브 선택(Slave Select, SS) 또는 칩 선택(Chip Select, CS)이라 한다. SPI 통신의 특이한 점은 송신과 수신이 항상 함께 일어난다는 점이다. _303p 7 세그먼트 표시장치는 8개의 LED를 사용하여 숫자나 간단한 문자를 표시할 수 있도록 만들어진 출력 장치의 일종이다. 7 세그먼트 표시장치의 8개 세그먼트는 개별적으로 제어되므로 8개의 범용 입출력 핀을 사용하여 제어하여야 한다. 하지만 자릿수가 증가하면 제어를 위해 필요로 하는 핀의 개수가 증가하여 입출력 핀이 제한된 경우 사용에 어려움이 있을 수 있다. _366p 초음파 거리 센서는 초음파를 이용하여 거리를 측정하는 센서로 초음파를 발신하는 부분과 반사파를 수신하는 부분으로 구성된다. 발신부는 함수 발생기에서 (+)와 (?)전압을 번갈아 압전소자에 가해 주면 압전소자의 변형에 의해 진동이 발생하고 진동에 의해 초음파가 발생하는 역압전현상을 이용한다. 수신부는 초음파가 물체에 반사되어 돌아오는 파동에 의해 압전소자가 진동하고 진동에 의해 전압이 발생되는 정압전현상을 이용하여 시간을 측정할 수 있으며 이를 기초로 거리를 계산할 수 있다. _465p ___본문 중에서 |
|
아두이노 우노의 심장, ATmega328을 뛰게 하는 두 가지 방법!
베스트셀러 《아두이노 상상을 스케치하다》의 저자가 공개하는 마이크로컨트롤러의 새로운 학습법! 이 책은 아두이노 우노에서 사용되는 마이크로컨트롤러인 ATmega328을 위한 두 가지 프로그램 작성 방법을 다룬다. 그중 하나는 레지스터를 사용하여 프로그램을 작성하는 ‘C 스타일’이며, 다른 하나는 추상화된 함수를 사용하여 스케치를 작성하는 ‘아두이노 스타일’이다. 독자는 이들 두 가지 방법을 통해 쉽고 빠른 프로토타이핑 시스템으로서의 아두이노는 물론, 아두이노를 넘어 보다 다양한 마이크로컨트롤러의 기능을 활용할 수 있는 방법을 경험할 수 있다. ATmega328 프로그래밍 준비하기 ATmega328을 위한 ‘C 스타일’과 ‘아두이노 스타일’의 프로그램 작성에 필요한 하드웨어 및 소프트웨어 준비 과정을 다룬다. ATmega328 프로그래밍 시작하기 ATmega328의 기본적인 기능인 디지털 및 아날로그 데이터 입출력 방법을 배우고, 이를 바탕으로 ‘C 스타일’과 ‘아두이노 스타일’의 프로그램을 통해 다양한 통신 방법을 알아본다. ATmega328 활용하기 ATmega328을 포함하여 마이크로컨트롤러에서 흔히 사용되는 7세그먼트, 텍스트 LCD, 모터, 센서, 블루투스 등 주변장치의 사용 방법을 ‘C 스타일’과 ‘아두이노 스타일’의 프로그램을 통해 알아본다. |