2
#include <tiny_ostream.h>
7
#include <drivers/servo.h>
11
typedef Usart1 MyUsart;
22
typedef basic_ostream<UsartOut> ostream;
28
typedef Timers::Timer1 ServoTimer;
29
typedef IO::PinList<IO::Pc0, IO::Pc1> ServoPins;
30
Servo<ServoPins, ServoTimer> servo;
33
const int ServoTable[] = {
52
static const int Elements = sizeof(ServoTable) / sizeof(ServoTable[0]);
58
MyUsart::SelectTxRxPins(0, 0);
61
cout << "Hello, world!\r\n";
62
cout << "Clock = " << Clock::SysClock::ClockFreq() << "\r\n";
64
servo.UpdateTimings();
66
cout << "servo._pulseDivider = " << servo._pulseDivider << "\r\n";
67
cout << "servo._pulseMaxReload = " << servo._pulseMaxTicks << "\r\n";
68
cout << "servo._pulseMinReload = " << servo._pulseMinTicks << "\r\n";
69
cout << "servo._pauseDivider = " << servo._pauseDivider << "\r\n";
70
cout << "servo._pauseReload = " << servo._pauseTicks << "\r\n";
73
ServoTimer::EnableInterrupt(ServoTimer::OverflowInt);
75
int pos = 0, prev = 0;
80
delay_ms<10, F_CPU>();
81
servo.SetPosition(0, (ServoTable[pos] + ServoTable[prev]) / 2);
83
delay_ms<10, F_CPU>();
84
servo.SetPosition(0, ServoTable[pos]);
86
servo.SetPosition(1, 127);
98
ServoTimer::ClearInterruptFlag();
100
ServoTimer::EnableInterrupt(ServoTimer::OverflowInt);