avr - ADC : 조도센서로 밝기를 측정해보자AVR/Atmega128 강좌2015. 3. 3. 16:53
Table of Contents
반응형
- /*
- * ADC.c
- *
- * Created: 2015-03-03 오전 12:37:57
- * Author: webnautes
- */
- #define F_CPU 16000000UL
- //1. baud rate를 선택
- #define USART_BAUDRATE 9600
- //2.시스템 클록과 원하는 baud rate를 이용하여 UBRR 값을 계산한다.
- #define UBRR_VALUE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
- #include <avr/io.h>
- #include <stdio.h>
- void adcInit(void) //ADC 초기화 함수
- {
- ADCSRA |= ((1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)); //16Mhz/128 = 125Khz
- ADMUX |= (1<<REFS0); //AVCC(5V)
- ADCSRA |= (1<<ADEN); //ADC 인에이블
- }
- uint16_t readAdc(uint8_t channel) //값을 읽어오는 함수
- {
- ADMUX &= 0xF0;
- ADMUX |= channel;
- ADCSRA |= (1<<ADSC); //변환 시작
- while(ADCSRA&(1<<ADSC));//변환 완료되기를 기다림.
- return ADCW; //ADC값 반환
- }
- void usartInit()
- {
- //3. UBRR0은 16비트 레지스터이기 때문에 8비트씩 나누어서 넣어야 한다.
- UBRR0H = (uint8_t)(UBRR_VALUE>>8);
- UBRR0L = (uint8_t) UBRR_VALUE;
- //4. USART 설정
- UCSR0C |= (1<<UCSZ00)|(1<<UCSZ01); //Charecter size : 8비트
- UCSR0C &= ~(1<<USBS0); //stop bit : 1비트
- UCSR0C &= ~((1<<UPM01)|(1<<UPM00)); // no parity mode
- //5. 송수신을 가능하게 한다.
- UCSR0B=(1<<RXEN0)|(1<<TXEN0);
- }
- void uart_putchar(uint8_t u8Data, FILE *stream )
- {
- //이전 전송이 끝나기를 기다림
- while(!(UCSR0A&(1<<UDRE0))){};
- UDR0 = u8Data;
- }
- uint8_t uart_getchar( FILE *stream)
- {
- // 수신 되기를 기다림
- while(!(UCSR0A&(1<<RXC0))){};
- return UDR0;
- }
- //http://www.appelsiini.net/2011/simple-usart-with-avr-libc
- FILE uart_output = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
- FILE uart_input = FDEV_SETUP_STREAM(NULL, uart_getchar, _FDEV_SETUP_READ);
- int main(void)
- {
- usartInit();
- stdout = &uart_output;
- stdin = &uart_input;
- adcInit();
- while(1)
- {
- int value = readAdc(0);
- printf( "%d \r\n", value );
- }
- }
반응형
'AVR > Atmega128 강좌' 카테고리의 다른 글
Atmega328 보드 만들기 - 회로 및 부품 확인 (0) | 2015.10.25 |
---|---|
AVR에서 Timer 사용하기 (2) | 2015.10.03 |
AVR 예제2– 세븐 세그먼트 (0) | 2015.03.02 |
AVR 예제 1 – LED 깜빡이기 (0) | 2015.03.01 |
AVR에서 I2C 사용하기 (2) | 2015.02.22 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!