Étape 3: Activation interruption
Afin de maximiser ses performances, la charge CPU doit être aussi faible que possible. Toutefois, en raison de la non-1à1 correspondance entre l’axe de la CPU et la broche Due, opération bit est nécessaire.
De plus, vous pouvez optimiser l’algorithme, mais la chambre est très limitée.
Sub TC7_Handler(void)
{TC_GetStatus(TC2,1) ;
t = t % échantillons ; utiliser des échantillons % t au lieu de « si » pour éviter tout débordement de t
phaseAInc = (préréglée * t) % 5376 ; permet d’éviter le débordement d’indice de tableau % 5376
phaseBInc = (phaseAInc + 1792) % 5376 ;
phaseCInc = (phaseAInc + 3584) % 5376 ;
p_A = sin768 [phaseAInc] << 1 ; se référer à PIOC : PC1 à PC8, pin Arduino Due correspondant : broche 33-40, donc shift gauche pour 1 chiffre
p_B = sin768 [phaseBInc] << 12 ; se référer à PIOC : PC12 à PC19, pin Arduino Due correspondant : broche 51-44, c’est pourquoi shift gauche à 12 chiffres
p_C = sin768 [phaseCInc] ; tranche C sortie employe PIOC : PC21, PC22, PC23, PC24, PC25, PC26, PC28 et PC29, pin Arduino Due correspondant : broche numérique : 9,8,7,6,5,4,3,10, respectivement
p_C2 = (p_C & B11000000) << 22 ; Cette opération génère PC28 et PC29
p_C3 = (p_C & B00111111) << 21 ; Cette opération génère PC21-PC26
p_C = p_C2|p_C3 ; Cela génère une sortie parallèle de la phase C
p_A = p_A|p_B|p_C ; sortie 32 bits = phase A (8 bits) |phase B|phase C
PIOC -> PIO_ODSR = p_A ; Registre de sortie = p_A
t ++ ; }