A/D Converter and CDS Sensor
·
전기전자공학(전공)/마이크로프로세서
본 실습에서는 ATmeta128 내부의 AD 변환기의 구동 및 이를 이용한 광센서의 아날로그 센서값을 A/D 변환기를 통해서 읽고 간단하게는 광량에 따라서 LED를 켜고 끄는 실습 및 보다 정확한 광량을 7 segment 에 16진수로 표시하는 프로그램을 작성하여 본다. - ATmega128 A/D 컨버터와 광센서 빛이 없으면 저항값이 커짐, 전압을 읽어서 광량을 측정 - ATmega128의 A/D Converter는 10bit resolution 외부에서 reference voltage - Free running or Single Conversion Mode - AD 컨버젼 - FLAG컨버젼이 끝날 때마다 interrupt A/D Converter(ADC)에는 3가지의 레지스터가 있다. 1) ADMUX..
PutStringP Subroutine
·
전기전자공학(전공)/마이크로프로세서
str = "abc"라 적으면 메모리에 end of string 0을 인식해서 저장함 스트링을 프린트해서 RS-232C로 내보내는데 EOS가 나타날 때 까지 포인트를 가르킨다. 1. Load a byte data from program memory pointed by Z, and increase Z (lpm rn, Z+) 2. If loaded data is not EOS, then rcall PutChar function with parameters in r0 3. If EOS, Return from sUBROUTINE 4. Jump to 1 z가 설정되어 있다는 가정 하에
Serial Communication
·
전기전자공학(전공)/마이크로프로세서
직렬통신이란 비트 데이터를 두 개의 가장 많이 쓴 비트 데이터를 직렬로 보낸다. 병렬 통신은 한 번에 모든 데이터를 전송함 당연히 비트의 단위를 기가 이상으로 올릴 수있게 되어서 직렬통신의 속도도 병렬 만큼이나 빨라졌다. USART, I2C, 반도체와 반도체 사이의 데이터 통신, SPI(Serial Peripheral Interface), USB(Universal Serial Bus) => AVR안에 있는 USART의 특징 1. Fulll duplex operation, 보내는 동시에 받을 수 있다. 2. Interrupts도 지원한다. -> polling 3. Data Overrun Detection 4. Frame Error Detection Block Diagram of UART 그렇군그렇군 직렬통..
[9.1] External Interrupt Control and application to Clock Control
·
전기전자공학(전공)/마이크로프로세서
external interrupt 에 대한 이해, 및 설정방법을 습득하고 간단히 sw1, sw2 를 외부 interrupt 4번과 5번으로 활용하여 연결된 LED 8개를 동시에 켜거나 끄거나 하는 과정을 실습해 본다. 그리고 sw1, sw2 를 이용하여 지난 주 타이머 인터럽트에 의해 구동되는 시계를 리셋 시키거나 혹은 1/100 초 스탑워치를 만드는 실습을 수행하여 봄으로써 외부 인터럽트의 동작에 대한 이해를 높이도록 한다.
Continuous Segment display using delay routine
·
전기전자공학(전공)/마이크로프로세서
착시효과로 4개의 세그먼트가 동시에 일어나는 효과를 나타냄..타임지연시간이 너무 길면 안됨.. Timer Control & Interrupt 타임지연 시간이 너무 길면 인간의 착시효과를 누릴 수 있다 AVR타이머...매 1/256초마다 알려줘 사람의 눈은 24/sec이상이 되면 계속 켜지는 걸로 보인다.
[AVR 어셈블리어] Various Addressing Modes
·
전기전자공학(전공)/마이크로프로세서
C언어에서 포인터를 활용해서 해당 변수의 주소값을 Indirect하듯이 메모리에서 꺼내오고 저장하는 것이다. ex) Data Memory(SRAM, Register File, I/O Memory), Program memory(Flash) Addressing에 사용되는 레지스터는 R16~R31까지만 허용함. (General Registers의 범위는 R0~R31) operand가 레지스터값 하나 이 때 R0~R31까지 허용한다. 여기서 cp는 위의 cpi처럼 빼기만하고 결과를 저장하지는 않는다. 포트와 주고받기 위한 어드레싱, 여기서 operands는 register value인 Rd와 Port ndml Data이다. 쓰는 명령은 In/Out뿐 직접 주소 대입 메모리에서 데이터를 꺼내올 떼 필요한 어드레싱..