Hallo, ich versuche gerade mit meinem Arduino Due Mikrocontrollerboard eine PWM Frequenz von 25 kHz auszugeben. Habe auf dem Microcontroller (Atmel SAM3X8E) einen PID Regler programmiert, dessen Ausgangssignal den Duty Cycle des 25 kHz Signals bestimmen soll. Habe folgende Lösung mit der TimerThree Bibliothek versucht anzuwenden: #include <TimerThree.h> const int fanPin = 14; void setup(void) { Timer3.initialize(40); // 40 us = 25 kHz Serial.begin(9600); } void loop(void) { // slowly increase the PWM fan speed // for (float dutyCycle = 30.0; dutyCycle < 100.0; dutyCycle++) { Serial.print("PWM Fan, Duty Cycle = "); Serial.println(dutyCycle); Timer3.pwm(fanPin, (dutyCycle / 100) * 1023); delay(500); } } Jedoch erkennt Arduino den Timer3 nicht, obwohl ich ihn eingebunden habe. Könnte mir vielleicht jemand weiterhelfen, oder einen anderen Lösungsvorschlag geben. Viele Grüße Marius
Gast
#6055021
Konkrete Fehlermeldung des Compilers bitte.
Marius L. schrieb: > edoch erkennt Arduino den Timer3 nicht, obwohl ich ihn eingebunden > habe. Nö, du hast nur das Include-File eingebunden. Das sagt dem Compiler, wie die Objekte Timer??? aussehen. Es fehlt aber die Instanz des Timers! Etwa so, ich kenn die Inludes nicht. timer3_type my_timer3; my_timer3.initialize(40);. Gibt es keine Beispiele zur Nutzung des Timers?
"Timer3 has no member named initialize" kommt immer als Fehlermeldung.
Falk B. schrieb: > Gibt es keine Beispiele zur Nutzung des Timers? Der obige Code ist offenbar eines der Beispiele: https://github.com/PaulStoffregen/TimerThree/blob/master/examples/FanSpeed/FanSpeed.pde Der TimerThree.h aus der gleichen Quelle kann man entnehmen, dass die ganzen Memberfunktionen nur dann definiert sind, wenn entweder das:
1 | |
oder das gilt:
1 | |
In allen anderen Fällen existiert die Klasse zwar, aber ist komplett leer.
Rolf M. schrieb: > In allen anderen Fällen existiert die Klasse zwar, aber ist komplett > leer. Dann sollte man aber auch ne passende Fehlermeldung im HEaderfile generieren!
Gast
#6055515
Je nachdem wie gut du dich mit Register-/Bitmanipulationen und dem lesen von Datenblättern auskennst, kannst du gleich die integrierten PWM Peripheren des ATSAM3X8E nehmen. Dann brauchst du gar keinen Timer und bist je nach Anwemdungsfall flexibler. Das Arduino Framework baut auf CMSIS auf, und dort gibt es auch Funktionen, um ohne Register die Peripherien zu nutzen.
Gast
#6055538
Marius L. schrieb: > Arduino Due https://github.com/ivanseidel/DueTimer leo
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.