Hallo zusammen,
nachdem ich mittlerweile schon einige Zeit in Foren und Tutorien verbracht habe, habe ich jetzt versucht ein Programm zur AD-Wandlung zu schreiben.
Hier der Code:
Allerdings wird hier nur ein Eingang gemessen. Da ich eigentlich einen Beschleunigungssensor auslesen will, müsste ich aber drei Kanäle nacheinander einlesen und die Ergebnisse auch getrennt voneinander ausgeben können.Code:#include <avr/io.h> #include <avr/wdt.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <avr/delay.h> volatile uint16_t ADCRaw = 0; SIGNAL(SIG_ADC) { ADCRaw = ADC; ADCSRA |= (1 << ADSC); } void Init_ADC(void) { DDRF &= ~(1<<DDF0); PORTF |= (1<<PF0); ADMUX = (1<<REFS1); ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); ADCSRA |= (1 << ADSC); sei(); } void Init_Output(void) { DDRA = (1<<DDA0); } int main (void) { Init_Output(); Init_ADC(); while (1) { if(ADCRaw >= 512) { PORTA = (1<<PB0); } else { PORTA &= ~(1<<PB0); } } return 0; }
Kann mir da jemand einen Tipp geben wie das zu realisieren ist, da ich noch nichts dazu gefunden habe was mir wirklich weiterhilft.
Gruß Matthias
Lesezeichen