Are the eTPU application note APIs misleading about eTPU link channels?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Are the eTPU application note APIs misleading about eTPU link channels?

543 Views
peterdufault
Contributor III

After pulling my hair out about why a current controller eTPU function wouldn't run, and after verifying it would properly execute a step if I used a host service request to invoke it, I just decided to change the channel it was running on to the same eTPU.  It worked properly.  I found that links from eTPU A to eTPU B don't work.

To make a long story short, I think where the application notes (this is from Analog Sensing for DC converters) say something like:

 

CC_innerloop_chan (uint8_t) – Number of the channel on which an inner-loop controller (in slave mode) runs. In order to not activate any inner-loop controller, set the number to a channel with priority disabled. This parameter should be assigned a value of 0-31 for ETPU_A and of 64-95 for ETPU_B.

 

is not correct, I think this gets directly loaded into the link register:

+-------------------------------------------------------+
| Engine Select |        Channel number                 |

+-------------------------------------------------------+

|   6   |   5   |   4   |   3   |   2   |   1   |   0   |

+-------------------------------------------------------+

Engine select:

 

0 0: Select this engine

0 1: Select engine A

1 0: Select engine B

1 1: Select other engine

 

and so 0-31 is Select this engine while 64-95 is Select engine B.

 

Am I right?  Is this well-known?  I had to dig into the eTPU reference manual to figure this out, which a consumer of the API in the application notes shouldn't need to do.  Google searches didn't help.

 

 

 

Labels (1)
0 Kudos
1 Reply

437 Views
peterdufault
Contributor III

Sorry, I meant links from eTPU B to eTPU don't work.  Links to eTPU B work if you follow the API since it specifies Run on engine B.  Link to eTPU A from eTPU B don't work because it specifies to run on the same engine.

So links A->A, A->B, B->B all would work, only B->A wouldn't work (using the channel number from the documentation).

0 Kudos