Moin, ich möchte ein Audiosignal am ADC des AT90CAN128 einlesen. Dazu habe ich einen Tiefpassfilter 1. Ordnung mit einer Grenzfrequenz von 10kHz vor den AD Wandlereingang gelegt. Nach dem Tiefpassfilter habe ich mit Hilfe eines Spannungsteilers mit hilfe der Referenzspannung das Signal in den positiven Bewreich verschoben um auch die negative Halbwelle mitzulesen. Wenn ich an den Eingang eine Gleichspannung Anlege funktioniert es auch soweit, bei 0V --> ADC_wert=0 2,56V --> ADC_wert = 1023 Ach ja, habe die interne Referenzspannung gewählt, und den Areff Pin mit einem 100nF Kondensator an GND gehangen. Wenn ich jetzt ein Audiosignal darauf gebe, lese ich verschiedene ADC_werte Hierzu habe ich den ADC_wert über die USART ausgegeben. Gebe ich den ADC_wert über den DAC LTC1257 wieder aus, habe ich im Hintergrund ein Rauschen. Der LTC1257 funktioniert einwandfrei. Habe ich mehrfach getestet. Ich denke mal, das der Fehler beim einlesen des Audiosignals liegt. Anbei noch der Quelltextauschnitt für den ADC: void ADC_init(void) { uint8_t result; // Kanal AD0 gewählt ADMUX = 0; // Interne Referenzspannung verwenden ADMUX |= (1 << REFS0) | (1 << REFS1); // Ergebnis Linksbündig ausgeben //ADMUX |= (1 << ADLAR); // ADC aktivieren, Teilungsfaktor auf 64 // mit ADPS0 entspricht 128 ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Auto Triggering aktiviert //ADCSRA |= (1 << ADATE); ADCSRA |= (1 << ADSC); // Eine ADC Wandlung zum Warmlaufen ohne den Wert zu übergeben while (ADCSRA & (1 << ADSC)) { ; } // Ergebnis muß einmal gelesen werden, da weiteren WAndlungen nicht ausgeführt // werden. result = ADCW; } //unsigned char ADC_read() uint16_t ADC_read() { // eine Wandlung ADCSRA |= (1<<ADSC); // auf Abschluss der Konvertierung warten while ( ADCSRA & (1<<ADSC) ) { ; } // Wandlungsergebnisse zurückgeben return ADCW; } Gruß Mike
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.