Paso 3: Habilitación de interrupción
Para maximizar su rendimiento, carga de la CPU debe ser tan bajo como sea posible. Sin embargo, debido a la correspondencia no 1to1 entre patillas de la CPU y el debido, poco es necesario.
Usted puede optimizar aún más el algoritmo pero la habitación es muy limitada.
void TC7_Handler(void)
{TC_GetStatus(TC2,1);
t = muestras de % t; utilizar muestras de % t en vez de 'si' para evitar desbordamiento de t
phaseAInc = (preset * t) % 5376; utilizar % 5376 para evitar desbordamiento de índice de matriz
phaseBInc = (phaseAInc + 1792) % 5376;
phaseCInc = (phaseAInc + 3584) % 5376;
p_A = sin768 [phaseAInc] << 1; Consulte PIOC: PC1 al PC8, pin Arduino Due correspondiente: pin 33-40, por lo tanto cambio izquierda de 1 dígito
p_B = sin768 [phaseBInc] << 12; Consulte PIOC: PC12 a PC19, pin Arduino Due correspondiente: pin 51-44, por lo tanto cambio izquierda 12 dígitos
p_C = sin768 [phaseCInc]; fase C salida empleado PIOC: PC21 PC22, PC23, PC24, PC25, PC26, PC28 y PC29, pin Arduino Due correspondiente: pin digital: 9,8,7,6,5,4,3,10, respectivamente
p_C2 = (p_C & B11000000) << 22; Esto genera PC28 y PC29
p_C3 = (p_C & B00111111) << 21; Esto genera PC21 PC26
p_C = p_C2|p_C3; Esto genera salida en paralelo de fase C
p_A = p_A|p_B|p_C; salida de 32 bits = fase A (8 bits) |phase C B|phase
PIOC -> PIO_ODSR = p_A; registro de salida = p_A
t ++; }