Task 5.2.3 Solution
main.cpp
- Committer:
- noutram
- Date:
- 2019-09-20
- Revision:
- 3:134bd19c5f04
- Parent:
- 2:df9c87ac7704
File content as of revision 3:134bd19c5f04:
#include "mbed.h"
//Global PWM object
#ifdef TARGET_NUCLEO_F429ZI
PwmOut pwmRed(D6); //D7 is not a PWM output on the F429, so use D6 instead
#else
PwmOut pwmRed(D7);
#endif
int T = 100; //100uS
volatile int Tmark = 0; //0us
volatile int delta = 1; //1us
//Timer
Ticker t;
//Function prototype
void doTwinkle();
int main() {
//Initial PWM state
pwmRed.period_us(T);
pwmRed.pulsewidth_us(Tmark);
//Start timer
t.attach(doTwinkle, 0.01);
while(1) {
sleep();
//Update PWM
pwmRed.pulsewidth_us(Tmark);
//printf("Tmark = %d\n", Tmark); //Debug
}
}
//ISR for Timer
void doTwinkle()
{
//Update mark time
Tmark += delta;
//Check bounds - and swap direction
if ((Tmark >= 99) || (Tmark <= 0)) {
delta = -delta;
}
}