전체 글
-
[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 변환 중에 이 비트들을 바꾸면 변환이 완료될 때까지 영향을 미치지..
-
OP AMP의 Offset Voltage에 대해서..Circuit Basics 2013. 2. 7. 13:01
이번 포스팅에서는 OP AMP의 DC 결함중 하나인 offset voltage에 대한 주제입니다. OP AMP의 이상적인 특성에 따르면 두 입력 단자로 들어가는 차동 전압이 0V 이면 무한대의 Open Loop Gain을 곱해도 여전히 출력은 0이 되어야 하는게 맞습니다. 그러나 실제로는 두 입력 단자를 모두 접지시켰다고 해도 미세한 전압 차이가 발생할 수 있습니다. 또한, 수십개의 Bipolar Transistor로 구성된 741 op amp는 구동을 위해서 반드시 입력 터미널로 전류가 들어가야 합니다. 이를 Input Bias Current라고 하는데, 이 전류에 의해서 각 터미널 단자에 전압강하가 일어나게 되고 결국 offset 전압폭을 더 크게 하는 효과를 냅니다. 위의 datasheet를 보면 ..
-
오실로스코프의 프로브와 커플링에 대해서Circuit Basics 2013. 2. 5. 12:19
다음은 오실로스코프의 구조를 나타낸다. 신호가 들어오는 선에 물릴 수 있는 클립이 있고, GND 클립이 있다. 주파수 특성에의해 들어오는 신호의 노이즈를 제거하기위해서 동축 케이블로 구성되어 있다. 보통 장비에 많이 사용하는 것은 BNC 연결단자이다. ▶ BNC 커넥터란? BNC커넥터는 동축케이블을 MAU에 연결하는 커넥터이며,BNC는 Byinet-Neil-Concelamn의 준말로서 거의 모든CCTV와 방송용장비에서 동축케이블에 영상신호를 전송하는 기본적인 커넥터로 사용되고 있다. 프로브에는 1x 와 10x 를 선택하는 스위치가 있다. 오실로스코프로 측정을 할 때 입력 전압의 크기에 대해서 가능하기 힘든 경우 순간적으로 높은 전압이 들어오면 오실로스코프가 파손될 우려가 있다. 따라서 먼저 10x로 설정..
-
[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..