Forum: Mikrocontroller und Digitale Elektronik Rechtecksignal auswerten


von Oliver (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.