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:
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:
#include<avr/io.h> #include<util/delay.h> #include<avr/interrupt.h> #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("\r\n"); _delay_ms(1500); } } }