Ich habe ein Problem mit der Servobibliothek.
Ich muss ein PPM-Signal lesen und ein PWM-Signal für jeden Kanal erstellen. Das Problem ist, dass PPM eine höhere Auflösung als PWM hat, daher möchte ich den 16-Bit-Timer1 zum Lesen von PPM verwenden. Die Servobibliothek, die das PWM-Signal schreibt, verwendet jedoch auch Timer1.
Ist es möglich, ein PWM-Signal mit 8 Bit / Timer2 zu erzeugen? Und hat jemand ein Beispiel oder eine Erklärung gegeben, wie das geht?
Antworten:
Ja. Ich habe mehrere Ansätze implementiert, einige auf avrs und einige auf pics, aber die Grundprinzipien sind dieselben: https://dannyelectronics.wordpress.com/2017/02/18/driving-multiple-servos-off-a-pic-timer2- Fernkampf erweitert /
Dieser Beitrag enthielt eine Liste von Links zu anderen Implementierungen - eine davon außerhalb eines Timers 2 auf avr.
quelle
Hier ist ein einfaches Beispiel von meiner Seite über Timer für die Verwendung von Timer 2 zur Ausgabe einer Rechteckwelle von 50 kHz:
quelle
Ja, die Arduino Servo-Bibliothek verwendet Timer1 (und andere, abhängig von Arduino-Karten ), um FastPWM über Software-Interrupts zu verwalten. Timer2 wird von der Funktion ton () verwendet: Seien Sie vorsichtig, wenn Sie diese Funktion verwenden.
Ein gutes Beispiel für die Verwendung von Timer2 zum Generieren von PWM ist die Infrarot-Remote-Bibliothek für Arduino . Wenn IR_USE_TIMER2 definiert ist, wird Timer2 verwendet. Der Schlüsselcode befindet sich in IRremote.cpp, wo der ISR verwaltet wird.
quelle