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.