Okay, so I'm trying to transmit my ADC values to my computer using USART using an atmega48. However, when I used my serial monitoring program, I keep getting this output
Here's my code
Here's my code
Rich (BB code):
// Includes and Defines
#define F_CPU 8000000UL
#define BAUD 9600
#define MUBRR (F_CPU/16/BAUD)-1
#include <avr/io.h>
#include <util/delay.h>
// ADC Init
void ADC_INIT(void)
{
ADMUX=(1<<REFS0);
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
}
// ADC Read
unsigned int ADC_READ(int channel)
{
ADMUX=channel;
ADCSRA |= (1<<ADSC);
while(!(ADCSRA & (1<<ADIF)));
ADCSRA|=(1<<ADIF);
return(ADC);
}
// Usart Init
void USART_INIT(unsigned int ubrr)
{
UBRR0H = (unsigned char)(ubrr>>8);
UBRR0L = (unsigned char)ubrr;
/*Enable receiver and transmitter */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* Set frame format: 8data, 2stop bit */
UCSR0C = (1<<USBS0)|(3<<UCSZ00);
}
// Usart Transmit
void USART_Transmit( unsigned int data )
{
while ( !( UCSR0A & (1<<UDRE0)));
UDR0 = data;
return;
}
// Main
int main(void)
{
ADC_INIT();
USART_INIT(MUBRR);
while(1)
{
USART_Transmit(ADC_READ(0));
_delay_ms(1000);
}
return 0;
}
Last edited: