Gast
#3605777
Hallo Freunde,
ich möchte gerne mit einem Atmega16 zwei verschiedene Analogsignale an
den Pins PA0 und PA1 abtasten.
Leider bin ich noch Anfänger und muss noch viel herum probieren und
lesen dazu. Aber jetzt komme ich wirklich nicht mehr weiter.
Vielleicht kann mir ja mal einer einen Tip geben und sagen, was an dem
unten aufgeführten Code nicht richtig ist. Was muss ich genau machen um
die Kanäle umzuschalten? Ich hatte das irrtümlicherweise schon über
Admux versucht, was ja aber für die Referenzspannung zuständig ist,
worauf mich in meinem vorigen Beitrag netterweise jemand drauf
aufmerksam gemacht hat.
Danke im Voraus.
Jens
#include <avr/io.h>
#ifndef F_CPU
#define F_CPU 4000000UL
#define ADATE 5
#endif
#include <util/delay.h>
int main(void)
{
uint16_t wert1;
uint16_t wert2;
DDRB |= (1 << DDB3); // Setup PB0 as output
while(1)
{
//erstes Abtasten
ADMUX |= (1<<REFS0);
ADCSRA |= (1<<ADEN)|(1<<ADATE)|(1<<ADPS2)|(1<<ADSC);
while(!(ADCSRA&(1<<ADSC))); // Wait until a conversion is finished
wert1 = ADC;
//zweites Abtasten
ADMUX |= (1<<REFS0);
ADCSRA |= (1<<ADEN)|(1<<ADATE)|(1<<ADPS2)|(1<<ADSC);
while(!(ADCSRA&(1<<ADSC))); // Wait until a conversion is finished
wert2 = ADC;
//über PWM Timer1 ausgeben
DDRD |= (1 << DDB4);
DDRD |= (1 << DDB5);
TCCR1A = (1<<WGM10)|(1<<WGM11)|(1<<COM1A1)|(1<<COM1B1);
TCCR1B = (1<<WGM12)|(1<<CS11)|(1<<CS10);
OCR1A = wert1;
OCR1B = wert2;
}
return 0;
}