AVR study
-
[AVR] 여러가지 센서를 통해 ADC 이해하기AVR study 2013. 2. 17. 11:20
작년에 아두이노 스타터킷을 샀을 때 같이 들어있었던 여러가지 센서들을 통해서 여러가지 동작들을 확인 해 보았습니다. 맨 좌측에 있는 센서는 기울기 센서입니다. 내부 구조와 Schematic은 위의 그림과 같습니다. 보통 이 기울기 센서는 전압값을 Analog로 분배해주기 보다는 위의 스케메틱처럼 스위치로써 많이 사용됩니다. 위 동영상을 보시면 LED의 밝기가 디지털값으로써 변하는 것을 알 수 있습니다. 실제로 브레드보드를 흔들면 센서 안에서 소리가 나며 스위치가 ON/OFF 되는 것을 확인할 수 있습니다. 두번째 센서는 많이들 알고 계시겠지만 CdS 광도전 셀 입니다. 세부 Spec과 구조는 다음과 같습니다. 밝은 곳(10럭스)에서의 저항값은 대략 5~10k 정도이며 어두은 곳에서의 저항은 대략 200k..
-
[AVR] 가변저항을 이용해서 ATmega 128의 ADC 다뤄보기AVR study 2013. 2. 10. 00:58
가지고 있는 센서가 마땅치 않아서 일단 가변저항으로 ADC의 기본 동작을 확인했습니다. 그런데 AVR 내부 2.56전압을 사용한 경우와 AVCC 전압을 사용한 경우 둘 다 최대 2.56V 까지만 올라가는데.. 원인을 도저히 잡아내질 못하겠네요. 코드상의 문제인지, 아니면 ADC 내부구조에 대해서 뭔가 잘못 이해하고 있는지 혹시 해결책을 아시는 분은 답변을 달아주시면 감사드리겠습니다 (__) 제가 사용하는 atmega128 모듈 회로도 같이 올려드릴게요. 위 회로는 M.A.I 사의 ATmega128 모듈 회로도입니다. 자세한 정보는 이곳을 따라 들어가시면 볼 수 있습니다. //-------------------------------------------------------------------------..
-
[AVR] ADC 내부 블럭도 및 관련 레지스터AVR study 2013. 2. 10. 00:40
다음은 ATmega128 datasheet에 있는 ADC의 블럭다이어그램입니다. 위쪽에 보시면 Data Line과 직접 통신을 하는 3개의 레지스터가 있습니다. ADC 멀티플렉서 선택 레지스터 (ADMUX), ADC제어 및 상태 레지스터(ADCSRA), ADC 데이터 레지스터(ADCH, ADCL) 이 세가지의 레지스터에 대해서 정확하게 파악하고 있어야 ADC를 사용할 수 있습니다. 1. ADMUX (ADC Multiplexer Selection Register) : ADC 멀티플렉서 선택 레지스터 ◎ 비트 7:6 - REFS1:0 : 기준 설정 비트 이 비트 설정에 따라 아래 표와 같이 ADC 변환에 사용하는 기준 전압을 선택한다. ADC 변환 중에 이 비트들을 바꾸면 변환이 완료될 때까지 영향을 미치지..
-
[AVR] 타이머/카운터0 와 CLCD를 이용한 디지털 시계AVR study 2013. 2. 3. 00:39
AVR 내부 인터페이스 중 가장 사용 빈도가 높은 것 중 하나인 타이머를 이용해서 디지털 시계를 만들어 보았습니다. 자리수가 넘어가는 부분에서 딜레이가 생기는데 원인은 저 지저분한 코드에 있는 것 같네요. 실제로 핸드폰 스탑워치로 시간을 재봐도 계속해서 조금씩 딜레이가 생기는 걸 확인했습니다. 원인은 while문에서 불필요한 코드의 수행이나, 여러 줄의 instruction을 수행하는 과정에서 타이머가 설정한 1ms를 정확하게 맞추지 못하는 거라고 생각이 드네요. 그리고 실제로 이 코드에서 사용된 타이머는 System clock을 사용했기 때문에 외부의 RTC IC를 사용한 경우에 비해서 미세한 오차나 딜레이가 발생할 수 있을 것이라고 생각이 듭니다. 그나저나 부족한 코딩실력 때문에 간단한 구현 하나 하..
-
[AVR] 사용자 정의 문자 선언을 통해 간단한 그림 출력AVR study 2013. 1. 30. 19:20
CGRAM의 주소값을 설정하고 사용자 정의 문자열을 선언해서 간단한 생선 그림을 만들어봤습니다. //----------------------------------------------------------------------------------------LCD 옵션 설정문 #define CMD_CREAR_DISPLAY 0x01 //1. Clear Display #define CMD_RETURN_HOME 0x02 //2. Return Home //3. Entry Mode Set #define CMD_ENTRY_MODE_SET_OPTION1 0x04 // cursor [left], Display shift[none] #define CMD_ENTRY_MODE_SET_OPTION2 0x05 // cursor..
-
[AVR] 간단한 LCD 구동 코드 예제AVR study 2013. 1. 29. 18:38
#include #include #define RS 0 #define RW 1 #define E 2 #define DATA PORTA #define LCD_CLEAR 0x1f #define LCD_RTH 0x02 #define LCD_RSH 0x07 #define LCD_LSH 0x06 #define LCD_NOMAL 0x04 #define LCD_on 0x0c #define LCD_off 0x08 #define LCD_8bit 0x30 #define LCD_ALLon 0x0e #define LCD_5X8 0x38 //#define LCD_ unsigned char a[]="IHATEAVR"; unsigned char c[]="hellomysemina"; void LCD_CR(unsigned char c..
-
[AVR] CLCD의 Instruction Table을 통한 헤더파일 작성AVR study 2013. 1. 29. 17:38
이번 포스팅에서는 LCD의 명령을 통해서 비트를 설정하고 원하는 문자열을 출력하기 위한 헤더파일을 작성해 보겠습니다. ♣ LCD의 구조 이전 포스팅에서와 같은 그림입니다. (1) 레지스터 LCD 모듈은 2개의 8비트 레지스터, Istruction Register(IR)와 Data Register(DR)를 가지고 있다. ▶ Istruction Register (IR) : 명령 레지스터 화면의 지움, 화면 시프트 등 LCD 동작 명령을 내리거나 드라이버 내의 DDRAM, CGRAM 주소를 설정하는데 사용한다. ▶ Data Register (DR) : 데이터 레지스터 화면에 표시할 데이터, 새로운 글꼴에 대한 데이터를 임시로 저장하는 레지스터이다. DR에 데이터를 쓰면 IR로 지정된 주소의 DDRAM또는 CG..
-
[AVR] CLCD 내부구조 및 핀설명 / WH1602B-YYH-JT#AVR study 2013. 1. 29. 15:56
이번 포스팅에선 CLCD의 내부구조와 함께 제가 구매한 CLCD의 데이터시트를 바탕으로 간단한 LCD 제어 헤더파일을 작성해보도록 하겠습니다. ♠LCD의 내부구조 및 핀 설명 위의 블럭도가 LCD의 구조를 가장 잘 표현해주고 있습니다. 좌측에 블럭 안으로 들어오는 화살표들은 LCD의 pinout을 나타냅니다. 아래 표에 더 자세히 정리했습니다. 1,2번핀 : LCD마다 조금씩 차이가 있지만 대체로 1번핀은 Vss 혹은 GND이고 2번핀은 5V Vcc전원입니다. 3번핀 : VEE 또는 Vo라고 많이 표시하며 LCD에 표시되는 글씨의 Contrast를 결정하는 핀 입니다. 좌측과 같이 Vo(VEE) 핀에 가변저항을 연결해서 LCD의 글씨밝기를 조정할 수 있습니다. 이 때 중요한 것은 가변저항을 사용하는것입니..