I want to accurately set the output timing of data by detecting the timer period flag , CPCS in TC_SR, but I’m having no luck. The code seems to run as if the timing controls were not in place, so I suspect the flag is permanently set:
//in setup PIOC->PIO_OWER = 0X1E; //data out on C1-4 REG_PIOB_PDR = 1<<25; // disable pio then enable peripheral REG_PIOB_ABSR = 1<<25; // select peripheral B REG_TC0_WPMR = 0x54494D00; //enable write to registers REG_TC0_CMR0 = 0x0009C400; //set channel mode REG_TC0_RC0 = symps; //counter period REG_TC0_RA0 = 10; //pwm value REG_TC0_CCR0 = 0b101; // start counter
(Most code was shamelessly lifted from other parts of this forum!)
//Main loop while (!REG_TC0_SR0 & 0x10); //check for end of period CPCS TC_GetStatus(TC1, 0); //clear status reg PIOC->PIO_ODSR = data1; //output data while (!REG_TC0_SR0 & 0x10); //repeat ad nauseam dummy=REG_TC0_SR0; PIOC->PIO_ODSR = data2; etc.
I’ve also tried detecting other flags such as MT1OA. Anyone any ideas, please?