Need Help With Code - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Need Help With Code

I need some help with my project. Im reading a accelerometer with ADC on port PA0 on a Atmega16. Im reading only X-axes. I want to add Y and Z also, but I dont know how.
Im reading the input with TeraTerm, line by line downwards. I want the y and Z to be added on the side of the X value.
IM using AVR studio 4.

Can anyone help me with thsis?

Code:

[code]
#include
#include
#include



#define LONGOUT 7
char buffer[LONGOUT];

void adc_init(void);
unsigned int adc_read(void);
void adc_conversion(uint16_t);




// ADC configuration
void ADC_init(void) {
ADMUX=(1<<REFS0);
ADCSRA=(1<<ADEN)|(7<<ADPS0);
}

uint16_t ADC_get_reading(void) {
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC));
return ADC;
}

uint16_t ADC_read(void) {
uint8_t i;
uint16_t retval = 0;
ADC_get_reading(); // dummy read - just discarded
for (i=0; i<8; i++) {
retval += ADC_get_reading();
}
return retval / 8;
}


void init_UART(void)
{
UCSRB = ((1 << RXCIE) | (1 << RXEN) | (1 << TXEN));
UCSRC = ((1 << UCSZ1) | (1 << UCSZ0));

//Baud rate till 19200.
UBRRL = 25;
UBRRH = 0;
}


void uart_sendchar(char c) {
while(!(UCSRA & (1<<UDRE)));
UDR = c;
}

void uart_printstring(char * str) {
while (*str) {
uart_sendchar(*str++);
}
}


void main(void) {

DDRC = 0x00;
init_UART();
ADC_init();


while(1)
{
if (PINC & 0x01) //If PortC pin 0 is True, program stops.
{
ADC_read();

char buffer[8];
itoa(ADC, buffer, 10);
uart_printstring(buffer);
uart_printstring("
");
_delay_ms(1500);

}
}
}
[/code]
Sign In or Register to comment.