Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <util/delay.h>
- #include <avr/interrupt.h>
- #include <string.h>
- #include <stdlib.h>
- #define FOSC 16000000
- #define baud_rate 9600
- #define baud FOSC/16/baud_rate-1
- volatile unsigned int adc_val=0;
- unsigned char adcval[10]={0};
- unsigned char adctext[]="\nADC VAl: ";
- void Transmit(unsigned char c)
- {
- UDR0=c;
- }
- void adc_init()
- {
- sei();
- DDRC=0x00;
- ADMUX = ( (1<<REFS0) | (1<<REFS1) );
- ADCSRA = ( (1<<ADEN) | (1<<ADSC) | (1<<ADIE) | (1<<ADIF) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0)); //Enable ADC, ADC Interrupt, Prescaler
- }
- void usart_init(unsigned int b_rate)
- {
- UBRR0H=0x00;
- UBRR0L=0x00;
- UCSR0B=0x00;
- UCSR0C=0x00;
- UDR0 =0x00;
- UBRR0H =(unsigned char)b_rate>>8;
- UBRR0L =(unsigned char)b_rate;
- //Enable Rx, Tx, Enable Interrupt on UDR empty
- UCSR0B = ( (1<<RXEN0) | (1<<TXEN0) | (1<<UDRIE0) );
- UCSR0C = ( (1<<UCSZ00) | (1 << UCSZ01) );
- sei();
- }
- int main (void)
- {
- usart_init(baud);
- adc_init();
- while(1)
- {
- _delay_ms(1000);
- }
- }
- ISR(ADC_vect)
- {
- adc_val= ADCL | (ADCH<<8);
- //strncat(adctext,itoa(adc_val, adcval,10),10 );
- ADCSRA = ( (1<<ADSC));
- itoa(adc_val,adcval,10);
- }
- ISR(USART_UDRE_vect)
- {
- static int i=0;
- if(adcval[i++]!='\0')
- Transmit(adcval[i]);
- else
- { i=0;
- Transmit('\n');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement