Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
TivaPWM.hxx
Go to the documentation of this file.
1
35#ifndef _FREEERTOS_DRIVERS_TI_TIVAPWM_HXX_
36#define _FREEERTOS_DRIVERS_TI_TIVAPWM_HXX_
37
38#include "PWM.hxx"
39
40#include "driverlib/timer.h"
41
42
43class TivaPWM : public PWM {
44public:
45 TivaPWM(unsigned timer_base, unsigned timer, unsigned period, unsigned duty)
46 : base_(timer_base), timer_(timer) {
47 set_period(period);
48 set_duty(duty);
49 MAP_TimerControlLevel(base_, timer_, true);
50 MAP_TimerEnable(base_, timer_);
51 }
52
53 void set_period(uint32_t counts) override {
54 MAP_TimerLoadSet(base_, timer_, counts);
55 }
56 virtual uint32_t get_period() override {
57 return MAP_TimerLoadGet(base_, timer_);
58 };
59 void set_duty(uint32_t counts) override {
60 MAP_TimerMatchSet(base_, timer_, counts);
61 }
62 virtual uint32_t get_duty() override {
63 return MAP_TimerMatchGet(base_, timer_);
64 }
65 virtual uint32_t get_period_max() override {
66 // @TODO figure out what is the max period
67 return 0;
68 }
69 virtual uint32_t get_period_min() override {
70 return 2;
71 }
72
73private:
74 unsigned base_;
75 unsigned timer_;
76};
77
78#endif // _FREEERTOS_DRIVERS_TI_TIVAPWM_HXX_
Abstract interface for a PWM driver.
Definition PWM.hxx:43
virtual uint32_t get_duty() override
Gets the duty cycle.
Definition TivaPWM.hxx:62
virtual uint32_t get_period_min() override
Get min period supported.
Definition TivaPWM.hxx:69
virtual uint32_t get_period() override
Get PWM period.
Definition TivaPWM.hxx:56
void set_duty(uint32_t counts) override
Sets the duty cycle.
Definition TivaPWM.hxx:59
void set_period(uint32_t counts) override
Set PWM period.
Definition TivaPWM.hxx:53
virtual uint32_t get_period_max() override
Get max period supported.
Definition TivaPWM.hxx:65