16 #ifdef __MSP430_HAS_MPY32__
21 void MPY32_setWriteDelay (uint16_t writeDelaySelect)
23 HWREG16(MPY32_BASE + OFS_MPY32CTL0) &= ~(MPYDLY32 + MPYDLYWRTEN);
24 HWREG16(MPY32_BASE + OFS_MPY32CTL0) |= writeDelaySelect;
27 void MPY32_enableSaturationMode (
void)
29 HWREG8(MPY32_BASE + OFS_MPY32CTL0_L) |= MPYSAT;
32 void MPY32_disableSaturationMode (
void)
34 HWREG8(MPY32_BASE + OFS_MPY32CTL0_L) &= ~(MPYSAT);
37 uint8_t MPY32_getSaturationMode (
void)
39 return (
HWREG8(MPY32_BASE + OFS_MPY32CTL0_L) &(MPYSAT));
42 void MPY32_enableFractionalMode (
void)
44 HWREG8(MPY32_BASE + OFS_MPY32CTL0_L) |= MPYFRAC;
47 void MPY32_disableFractionalMode (
void)
49 HWREG8(MPY32_BASE + OFS_MPY32CTL0_L) &= ~(MPYFRAC);
52 uint8_t MPY32_getFractionalMode (
void)
54 return (
HWREG8(MPY32_BASE + OFS_MPY32CTL0_L) &(MPYFRAC));
57 void MPY32_setOperandOne8Bit (uint8_t multiplicationType,
63 void MPY32_setOperandOne16Bit (uint8_t multiplicationType,
69 void MPY32_setOperandOne24Bit (uint8_t multiplicationType,
72 multiplicationType <<= 1;
74 HWREG8(MPY32_BASE + OFS_MPY32H + multiplicationType) = (
operand >> 16);
77 void MPY32_setOperandOne32Bit (uint8_t multiplicationType,
80 multiplicationType <<= 1;
82 HWREG16(MPY32_BASE + OFS_MPY32H + multiplicationType) = (
operand >> 16);
85 void MPY32_setOperandTwo8Bit (uint8_t
operand)
90 void MPY32_setOperandTwo16Bit (uint16_t
operand)
95 void MPY32_setOperandTwo24Bit (uint32_t
operand)
101 void MPY32_setOperandTwo32Bit (uint32_t
operand)
107 uint64_t MPY32_getResult (
void)
111 result =
HWREG16(MPY32_BASE + OFS_RES0);
112 result += ((uint64_t)
HWREG16(MPY32_BASE + OFS_RES1) << 16);
113 result += ((uint64_t)
HWREG16(MPY32_BASE + OFS_RES2) << 32);
114 result += ((uint64_t)
HWREG16(MPY32_BASE + OFS_RES3) << 48);
118 uint16_t MPY32_getSumExtension (
void)
120 return (
HWREG16(MPY32_BASE + OFS_SUMEXT) );
123 uint16_t MPY32_getCarryBitValue (
void)
125 return (
HWREG16(MPY32_BASE + OFS_MPY32CTL0) | MPYC);
127 void MPY32_clearCarryBitValue (
void)
129 HWREG16(MPY32_BASE + OFS_MPY32CTL0) &= ~MPYC;
131 void MPY32_preloadResult (uint64_t result)
133 HWREG16(MPY32_BASE + OFS_RES0) = (result & 0xFFFF);
134 HWREG16(MPY32_BASE + OFS_RES1) = ((result >> 16) & 0xFFFF);
135 HWREG16(MPY32_BASE + OFS_RES2) = ((result >> 32) & 0xFFFF);
136 HWREG16(MPY32_BASE + OFS_RES3) = ((result >> 48) & 0xFFFF);