So nach dem dem ganzen streß läuft es auch nur fasst, Daten kommen vom dem PC auch an. Da wollte ich mich jetzt an den Internen AD-Wandler heran wagen,
am PC bekomme ich 1023 also 10-bit was ja eigentlich richtig ist.
Nur der wert ändert sich nicht wenn ich nochmal den Befehl schicke zum lesen.
Hier mal der Auszug, weil der Rest läuft ja.
Code:
uint16_t adc_Value = 0;
uchar Buffer[11];
void adc_init(void)
{
//ReferenzSpannung AVcc | Kanal 0 ADC0(PC0)
//ADC enable| Singel Mode| Frequenzvorteiler F_CPU/128
uint16_t result;
ADMUX = (1<<REFS0);
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
ADCSRA |= (1<<ADSC);
while (ADCSRA & (1<<ADSC) ) {}
result = ADCW;
}
/*ADC-channel-Funktion*/
uint16_t ADC_Read( uint8_t channel )
{
ADMUX = (ADMUX & ~(0b00001111)) | (channel & 0b00001111);
ADCSRA |= (1<<ADSC);
while (ADCSRA & (1<<ADSC) ) {}
return ADCW;
}
case USB_ADC:
adc_Value = ADC_Read(0);
itoa(ADCW, Buffer, 10);
usbMsgPtr = Buffer;
return sizeof(Buffer);
Danke für die Tipps
MfG exkluski
Lesezeichen