SPI는 Serial Peripheral Interface의 머리글자이다. 주변 장치와 직렬 통신을 위한 방법중 한가지를 가리키는 것이다. 이미 앞에서 설명한바 있는 UART와는 다음과 같은 차이점이 있다. UART는 비동기 통신임에 반하여 SPI는 동기 통신 방식이다. 즉, 클럭 신호를 마스터에서 제공하는 것이다. UART는 1:1 통신으로 구성되며 Peer-to-Peer 방식이다. 내 보낼 데이터가 있으면 상대방이 연결되어 있든 없든 무조건 데이터를 주어신 속도에 맞춰 내보낸다. 그러나, SPI는 1:N의 마스터-슬레이브 방식으로 동작된다. 슬레이브는 마스터가 요구하는 동작을 수행하도록 되어 있다. 위의 그림은 하나의 SPI 마스터에 세개의 SPI 슬레이브가 연결되어 예를 보여주고 있다. SPI마스터..
ADC는 아날로그 입력값을 디지털값으로 변환해 주는 모듈이다. 여기서 말하는 아날로그 값이란 다름이 아니고 핀으로 인가되는 전압값을 의미한다. 이 전압값이 ARef값을 기준으로 했을때 어느정도의 비율을 가지는지 숫자로 알려주는것이 ADC인 것이다. AVR의 ADC는 10비트 해상도를 지원한다. 이 말은 아날로그 입력전압이 GND와 같을때 0의 값을 가지고, ARef값과 같으면 2^10-1의 값을 가진다. 즉 0~1023까지의 값으로 표현된다는 의미다. 예를 들어 ARef가 5V 일때 아날로그 입력 전압이 2.5V이면 511의 값으로 표현되는 것이다. 위의 그림이 ADC 블럭이 어떻게 구성되어 있는지 설명해주는 블럭도이다. CPU가 ADC의 동작을 제어하기 위한 레지스터는 Databus에 연결된 ADMUX..
이번 글에서는 타이머/카운터의 PWM 모드 중에서 Phase Correct PWM 모드에 대하여 설명하도록 하겠다. 위의 그림이 Phase correct PWM의 동작원리를 설명한 것이다. 앞에서 설명한 Fast PWM과 비교하여 특이점을 설명하자면, 먼저 TCNT값이 BOTTOM에서 증가하다가 TOP이 되면 다시 BOTTOM에서 새로 시작하는 것이 아니라 BOTTOM을 향해서 1씩 감소해 나가는 것을 볼 수 있다. 이때 OC값은 Non-invert 모드의 경우에 TCNT값이 OCR값과 같아질 때, 증가하는 구간에서 0이 되고, 감소하는 구간에서 1이 된다. 그러므로 OC만 놓고 봤을 때 클럭 구간의 시작 위치가 BOTTOM과는 다른 위치에서 시작되는것을 볼 수 있다. 그래서 이러한 PWM의 이름을 ph..