아두이노(11)
-
[Atmega128] 11. DATA Memory - EEPROM
이번엔 데이터 메모리 EEPROM을 다루는 방법을 알아보자. EEPROM은, Electrically Erasable Programmable Read-Only Memory의 약자로 ROM에 전기적으로 지우고, 프로그램 가능한 ROM을 말한다. 특징으로는 최대 10만번 쓰기가 가능한 4K바이트가 내장되었다는 점이다. 그럼 제어하는 레지스터를 알아보자 1. EEAR (EEPROM Address Register) EEAR0...11 : 읽고 쓸 EEPROM의 주소 지정에 사용된다. 초기에는 임의값이 들어가니 항상 접근 전에 주소값 지정이 필요하다. 2. EEDR (EEPROM Data Register) 쓰기의 경우에는 EEAR의 주소에 쓰여질 값을 임시로 저장하고, 읽기의 경우에는 읽힌 값을 저장한다. 3. E..
2019.08.06 -
[Atmega128] 8. UASRT 통신 (Universal Synchronus Receiver Transmit)
USART (Universal Synchronus Receiver Transmit)에 대하여 알아보자. 스타트 비트 : 1비트로 이루어 졌으며 항상 0레벨이다. 송신시에 자동적으로 생성된다. 데이터 비트 : 5,6,7,8,9비트가 가능하다. 패리티 비트 : 패리티를 사용하지 않을 수도 있고 사용하는 경우 홀수 혹은 짝수 패리티 1비트를 사용한다. 스탑 비트 : 1,2개의 비트가 가능하며 항상 1레벨이다. 송신시에 자동적으로 생성된다. 이 데이터 프레임으로 통신하며, 완전 이중방식이며 동기 및 비동기 전송이 가능하다. 송신완료, 송신 데이터 레지스터 준비완료, 수신완료등 3가지의 인터럽트를 제공한다. 그럼 바로 레지스터를 알아보도록 하자 1. UDRn (Usart i/o Data Register) 데이터 ..
2019.08.05 -
[Atmega128] 7. SPI 통신 (Serial Peripheral Interface Bus)
이번엔 atmega128에 있는 SPI (Serial Peripheral Interface Bus) 통신을 알아보도록 하자. 직렬 주변기기 인터페이스 버스라는 뜻으로, 전이중 통신이며 마스터 슬레이브 형식으로 통신한다. MHz 단위까지 통신이 가능하며 전송완료 인터럽트를 제공한다. 먼저 SS핀으로 슬레이브를 지정하고, SCK를 통해 송신할 데이터를 시프트 레지스터에 준비하여 마스터에서 슬레이브에게 MOSI를 보내고 슬레이브가 마스터에게 MISO를 보낸다. 레지스터를 알아보자. 1. SPCR (SPI Control Register) SPIE (SPI Interrupt Enable) : 1로 설정시 전송완료 인터럽트 허용 SPE : (SPI Enable) : 1로 설정시 SPI 통신 허용 DORD (Data..
2019.08.05 -
[Atmega128] 6. 아날로그 변환기 ADC (Analog to Digital Converter)
atmega128의 ADC에 대하여 알아보도록 하자. atmega128 ADC의 특징으로는, 10비트 8채널의 변환기가 있고 7채널의 차동입력 변환기로 사용가능하다. 그리고 변환완료 인터럽트를 사용할 수 있다. 먼저 adc가 아날로그신호를 디지털신호로 바꾸는 과정에 대해 알아보자. 1. 전처리 : 아날로그 신호에 포함된 잡음을 제거하고 신호의 대역폭을 제한하여 엘리어싱 을 줄인다. 2. 표본화 : 신호 대역폭 두배이상의 일정한 샘플링 주파수에 따라 신호값을 취하여 즉 신호에 포함된 최고 주파수 성분 주기의 보다 작은 주기로 신호값을 취하여 저장한다. 3. 양자화 : 표본화된 아날로그 신호는 연속적인 양으로 이를 진화하면 무한한 자리수를 요구할 수도 있다. 그러므로 표본화된 값을 소구간으로 분할하여 유한한..
2019.08.05 -
[Atmega128] 5. 아날로그 비교기 (Analog Comparator)
analog comparator에 대하여 알아보자. 용도는 인터럽트를 발생시키거나 / 타이머(카운터)를 트리거할 때 사용된다. AIN0(+)와 AIN1(-)로 들어온 아날로그 값을 비교하여 AIN0이 더 전압이 클 경우 발생한다. AIN0에서는 ACBG를 통해 bandgap reference의 고정 전압을 사용하거나 외부 전압을 사용할 수 있고, AIN1에서는 ACME, ADEN, 그리고 ADC 멀티플렉서에서의 아웃풋을 받아 결정한다. 그럼 이제 Analog Comparator의 레지스터를 알아보자 1. ADCSRB : ADC control and status register B (ADCSRA 는 ADC에서만 사용) ACME는 analog comparator multiplexer enable bit로, ..
2019.08.03 -
[Atmega128] 4. 타이머 인터럽트 (clk/Timer mode/OC 단자 출력)
이번에 알아볼 것은, 분주 설정하기 , 타이머 모드, OC 단자 출력을 하는 방법이다. 분주 설정하기 CS00.. 02는 TCCR0 레지스터 안에 포함되어있는 비트들로, 이를 통하여 분주를 설정할 수 있다. 분주로 주기를 만들려면 몇 개의 과정이 필요하다. ※ 8 분주로 가정하고 과정을 설명하겠습니다. 1. 기본 16 Mhz이므로 8 분주로 쪼개면 2 Mhz가 된다. 2. 2 Mhz는 0.5us마다 진동하는 것을 표현하는 단위이다. 이렇게 되면, 0.5us마다 TCNT의 값이 증가하게 되는 것이다. 3. TCNT는 255가 넘으면 인터럽트를 발생시키기 때문에 0.5*256 = 128 -> 128us마다 인터럽트 발생 이런 식으로, 8... 1024분 주의 주기를 알 수 있다. Timer Mode WGMn..
2019.08.03