Hmm sollte machbar sein, ja....
Grundsätzlich braucht das einen oder mehrere Interrupts, damits genau ist.
Ansätze wären:
A - Du kennst den genauen Takt der PWM und kannst entsprechend mit einem Vielfachen per µC annähern und dann einfach das Signal ausreichend oft sampeln. Also wenns 8 Bit bei 1kHz wären, dann alle 1/1000tel sekunde nachsehen, was der Pin macht. Das 256 mal und dann den Durchschnitt berechnen. Das wäre dann ein timer-Interrupt - AVRcalc hilft bei der Suche nach passenden Einstellungen!
B - Analog: du klemmst die PWM an einen ADC und schaust, was der so ausspuckt. Sicherlich sehr einfach, aber schon gut. Grad wenn beide 5V haben und vom selben Netz gespeist werden ne Alternative...
C - Holzhammermethode: Jeden Flankenwechsel per INTx oder Pinchange-INT protokollieren und dass dann ausrechnen. Funktioniert gut, wenn man ein relativ gleichmäßiges PWM-Signal hat. Wenns stark schwankt, dann wirds zu ungenau, weil der µC ja nicht weiß, welches die erste und welches die letzte Flanke ist.
Wer Denkfehler findet, darf sie mitteilen
Lesezeichen