Hallo zusammen! Ich noch ein ziemlicher Neuling. Ich habe die Aufgabe bekommen, ein Analogsignal einzulesen und mit einem Min/Max zu vergleichen. Dies konnte ich auch umsetzen. Leider handelt es sich in Wirklichkeit bei dem Signal um ein Rechtecksignal. Für Analogsignale habe ich im Forum eine Funktion gefunden. Kann man diese umschreiben, so dass diese das Rechecksignal auswertet? Das ganze sollte nach Möglichkeit ohne externen Quarz funktionieren. Die Information wird durch die Pulsbreite bestimmt, also die Frequenz. Der Frequenzbereich liegt zwischen 30Hz und 90Hz Bin für jede Hilfe dankbar. Viele Grüße Oliver PS: Die Funktion zur Analogwertausgabe: uint16_t readADC(uint8_t channel) { uint8_t i; uint16_t result = 0; ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1); // Den ADC aktivieren und Teilungsfaktor auf 64 stellen ADMUX = channel | (1<<REFS0); // Kanal des Multiplexers waehlen; AVCC mit externen Kondensator am AREF Pin ADCSRA |= (1<<ADSC); // Den ADC initialisieren und einen sog. Dummyreadout machen while(ADCSRA & (1<<ADSC)); for(i=0; i<3; i++) { // Jetzt 3x die analoge Spannung and Kanal auslesen und dann Durchschnittswert ausrechnen. ADCSRA |= (1<<ADSC); // Eine Wandlung while(ADCSRA & (1<<ADSC)); // Auf Ergebnis warten... result += ADCW; } ADCSRA &= ~(1<<ADEN); // ADC wieder deaktivieren result /= 3; return result; }
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.