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
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?
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 | #if defined(__AVR__)
|
oder das gilt:
1 | #elif defined(__arm__) && defined(CORE_TEENSY)
|
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!
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.
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.