아트메가/이론 25

아트메가128 타이머/카운터0 Fast PWM모드 알아보기

안녕하세요. 오늘은 Fast PWM모드에 대해 알아보겠습니다PWM(pulse width modulation)이란 펄스 폭 변조라는 뜻인데, HIGH와 LOW의 비율을 원하는 대로 출력시켜주는것 입니다.예를들어 LED를 A포트에 연결하고 PORTA=0xff; 라고 한다면, LED는 HIGH만 출력 될 것입니다.그러나 PWM을 사용해서 HIGH 50% LOW 50%로 하고 LED를 연결한다면 LED의 밝기는 PWM를 안쓴것에 비해 밝기가 50%가 될 것입니다.이것을 듀티비라고 합니다. 아두이노에서는 analogWrite함수로 PWM을 사용합니다. 이러한 PWM을 가지고 DC모터의 세기를 제어하거나, LED를 밝기를 제어하거나, 서보모터등을 제어할 수 있습니다. PWM의 종류는 2가지가있습니다. Phase C..

아트메가/이론 2017.09.28

아트메가128 타이머/카운터0 CTC 모드 알아보기

안녕하세요. 오늘은 타이머/카운터0 CTC 모드를 알아보겠습니다.CTC란 Clear Timer on Compare Match입니다.앞에서 알아봤던 compare match interrupt가 발생하면 파형이 변합니다. CTC모드 파형 알아보기 TCCR0레지스터중 3,6번비트위의 표를보면 CTC 모드일때 TOP이 OCR0이라 되있고, OCR0업데이트는 즉시라고 나와있는데 이것들의 뜻을 알아보겠습니다. ***참고-BOTTOM : 카운터가 가질 수 있는 최소 값(0x00)-MAX : 카운터가 가질 수 있는 최대 값(0xff 8비트기준)-TOP : 각 동작 모드에 따라서 카운터가 도달하는 최대 값 위의 표를보면 TCNTn = OCR0에서 compare match interrupt가 발생할때 마다 OCn의 모양이..

아트메가/이론 2017.09.27

아트메가128 타이머/카운터0 compare match interrupt사용하기

안녕하세요. 오늘은 타이머/카운터0의 compare match interrupt에 대해 알아보겠습니다. Compare match란?이전 글에서 overflow에 대해 적었었는데 overflow란 TCNTn의 값이 255에서 다음 값으로 될 때 overflow가 발생하는 것이였습니다. Compare match란 TCNTn의 값과 OCRn이라는 값이 같을 때 Compare match가 발생합니다. - Output Compare Unit, Block Diagram 위의 사진에서 OCRn과 TCTNn가 같으면 OCFn이 set됩니다. OCFn은 TIMSK에 있는 플레그입니다. (overflow에서 TOVn같은 플래그) 그 다음 아래보면 Waveform Generator가 있는데 이건 파형OCxy에 파형이 나타나..

아트메가/이론 2017.09.26

아트메가128 타이머/카운터0 overflow interrupt사용하기

안녕하세요. 타이머/카운터0에 대해 알아보겠습니다.이 글에서는 타이머/카운터0번의 overflow interrupt만 보겠습니다.타이머/카운터란? 타이머/카운터0 사용 흐름 이해하기(overflow) 타이머/카운터0은 8비트 계수기입니다. 즉 0부터 255까지 숫자를 셉니다. 이 숫자는 TCNT0에 저장이 되있습니다.타이머/카운터는 기본적으로 이 TCNT0의 값에 따라서 이벤트가 발생합니다.TCNT0가 0부터 255까지 증가하다가 255에서 1이 증가하면 0이됩니다. 이때 overflow interrupt가 발생합니다.TCNT0가 0부터 x값까지 증가하다가 x=y가 되면 compare match interrupt가 발생합니다. 그럼 이제 TCNT0가 1증가할 때 몇초가 걸릴 것인지 정해야 우리가 원하는대..

아트메가/이론 2017.09.21

아트메가128 타이머/카운터란?

안녕하세요. 타이머/카운터의 기본 개념에 대해 알아보겠습니다.기본적으로 타이머/카운터를 사용하는 이유는 펄수를 계수하기 위함입니다.아트메가128에는 4개의 타이머/카운터가 있습니다. 이 4개는 타이머 혹은 카운터가 됩니다. 타이머란?1. 타이머란 시스템 클럭의 변화를 감지합니다.2. 동기모드입니다,3. 일정시간 간격의 펄스를 만들어 내거나 일정한 시간 경과 후에 인터럽트를 발생시키는 기능을 합니다. 카운터란?1. 외부 입력의 변화를 감지 합니다,2. 비동기모드입니다, 3. 외부핀(TOSC1, ROSC2,T1,T2,T3)을 통해 들어오는 펄수의 수를 개수하여 이벤트 카운터로 동작합니다. 위에서 타이머/카운터가 4개있다고했는데, 번호를 0,1,2,3으로 붙인다. 타이머/카운터0,2는 8비트이고 타이머/카운터..

아트메가/이론 2017.08.06

아트메가128 센서제어하기(ADC제어) 2편

안녕하세요. 실제로 ADC를 이용해여 조도센서의 값을 측정해보겠습니다. 아트메가128 센서제어하기(ADC제어) 1편위의 사이트에 레지스터 설명이 있습니다. 조도센서로부터 값을 읽어서 컴퓨터 시리얼모니터로 볼 것입니다. 조도센서는 저항으로써 밝기에 따라 값이 변합니다. 밝으면 저항이 작아지고 어두우면 저항이 올라갑니다. 그림과 처럼 연결해줍니다. 전압분배법칙에 의해서 CDS의 값이 커지면(어두워지면) 전압이 커지게됩니다.(큰값이 감지됩니다.) 실제로 연결한 모습입니다. 연속변환모드를 사용했습니다.1234567891011121314151617181920212223242526272829303132#include #include #include #include "usart.h"#define F_CPU 16000..

아트메가/이론 2017.07.04

아트메가128 usart통신하기(3) 컴퓨터

아트메가128 usart통신하기(1) 안녕하세요. 컴퓨터와 아트메가 통신을 하겠습니다.사용하는 프로그램은 터미널 아무거나 사용하면 됩니다. 컴퓨터에 있는 RS-232에서 나오는 신호는 +-12V입니다. 그러나 아트메가의 RX,TX의 신호는 0~5V입니다. 중간에서 전압을 변환시켜주는 것이 필요한데 MAX232라는것을 보통 사용합니다. 그러나 제가 사용하는 노트북은 RS-232단자가 없습니다. 그래서 USB-TTL변환케이블을 사용하면됩니다. USB-TTL케이블을 연결하면 컴퓨터는 RS-232로 인식을합니다. 또한 따로 전압을 바꿔줄 필요가 없습니다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484..

아트메가/이론 2017.07.03

아트메가128 usart통신하기(2) 블루투스

안녕하세요. 오늘은 아트메가와 핸드폰 앱을통해서 블루투스로 LED를 제어해보겠습니다. 아트메가128 usart통신하기(1) 여기 글에 usart에 대한 설명이 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include #include #include #define F_CPU 16000000UL volatile unsigned char flag; ISR(USART0_RX_vect) { flag=UDR0; } void init() { DDRA=0xff; UCSR0A=0x00; UCSR0B=0x98; UCSR0C=0x06; UBRR0H=0; UBRR0L=103; SREG=0x8..

아트메가/이론 2017.07.03

아트메가128 usart통신하기(1)

안녕하세요. 직렬통신인 usart통신을 해보겠습니다. 통신을 하는 이유는 장치간에 서로 통신을 하려고 하는건데요. usart는 유선,무선으로 사용할수 있습니다.유선을 사용하면 CP2102모듈을 사용하여 컴퓨터 터미널프로그램으로 아두이노의 시리얼모니터처럼 값을 확인할수있고무선을 사용하면 블루투스모듈로 앱으로 AVR를 제어할수 있습니다. -USART(Universal Synchoronous and Asynchronous serial Receiver and Transmitter)의 특징* 전이중 통신 가능. (송신,수신 동시에가능)* 비동기 전송 모드 or 동기 전송모드 가능* 마스터 모드 or 슬레이브 모드 가능* 보레이트 발생기 내장(높은 정밀도)* 패리티 체크 기능-> USART는 전이중통신이 가능합니다..

아트메가/이론 2017.07.03

아트메가128 센서제어하기(ADC제어) 1편

안녕하세요. ADC(Analog to Digital Converter)에대해 알아보겠습니다 - ADC란? 아날로그 신호를 디지털 신호로 변환해주는 장치를 말합니다. 반대로 디지털신호를 아날로그신호로 변환해주는건 DAC라고합니다. 아날로그 신호란 프로세서의 외부에 있는 전기적 신호나 물리적 신호를 수학적으로 2진수가 아닌 실수의 범위 내에서 변하는 신호를 말합니다. 실수의 범위라는게 수학적으로 표현하기 어려운 신호를 프로세서가 인식할 수 있는 정수의 범위로 일정 시간마다 하나의 데이터로 변환하는것을 의미합니다. 예를들어 LED의 밝기를 1비트로 표현한다면 상태는 2가지 일것입니다. 1은 밝은상태 / 0은 어두운상태, 만약 LED의 밝기를 2비트로 표현한다면 상태는 4가지 일것입니다. 00은 완전어두운상태,..

아트메가/이론 2017.06.01