Du hast CAPTENx gesetzt. Damit hast du den Capture-Mode eingestellt!
Der macht Counter-Stamps, wenn eine Triggerquelle vorhanden ist.
Du willst aber PWM und das ist der Compare-Mode. deshalb dürfen CAPTENx
nicht gesetzt sein.
Und ja, in Atmel Studio etc. verwendet man tunlichst die vordefinierten
Header. Ich habe mir diese PWM-Init-Routine geschrieben. Mit Rechtsclick
und "Goto Implementation" siehst du wo und wie die definiert sind:
#include "sam.h"
void TcPwm8Init(Tc* const tctimer, const uint8_t clkdiv, const uint8_t
channel, uint8_t effper, uint8_t pulse)
{
if(!effper)
return;
// Timer Reset
tctimer->COUNT8.CTRLA.bit.SWRST= 1;
while(tctimer->COUNT8.CTRLA.bit.SWRST) ;
// Enable the TC bus clock (CLK_TCx_APB)...
TcTimerPowerUp(tctimer);
tctimer->COUNT8.CTRLA.reg= TC_CTRLA_PRESCSYNC_RESYNC |
(TC_CTRLA_PRESCALER_Msk & (clkdiv << TC_CTRLA_PRESCALER_Pos)) |
TC_CTRLA_WAVEGEN_NPWM | TC_CTRLA_MODE_COUNT8;
while(tctimer->COUNT8.STATUS.bit.SYNCBUSY) ;
tctimer->COUNT8.PER.reg= effper - 1;
while(tctimer->COUNT8.STATUS.bit.SYNCBUSY) ;
tctimer->COUNT8.CC[channel].reg= pulse;
while(tctimer->COUNT8.STATUS.bit.SYNCBUSY) ;
}
Ich hoffe, das hilft dir.