#define UCxxIe (*TCAST(volatile uint8_t* ONE, Ie_addr))
#define UCxxIfg (*TCAST(volatile uint8_t* ONE, Ifg_addr))
+#if 0
#define ASSIGNBITS(reg, mask, value) \
(reg = ((reg) & ~(mask)) | ((value) & (mask)))
+#endif
#define RENDER(name) \
- command volatile uint8_t* Registers.ptr##name() { \
+ async command volatile uint8_t* Registers.ptr##name() { \
return &UCxx##name; \
} \
- command uint8_t Registers.get##name(uint8_t mask) { \
+ async command uint8_t Registers.get##name(uint8_t mask) { \
return READ_FLAG(UCxx##name, mask); \
} \
- command void Registers.set##name(uint8_t mask) { \
+ async command void Registers.set##name(uint8_t mask) { \
SET_FLAG(UCxx##name, mask); \
} \
- command void Registers.clr##name(uint8_t mask) { \
+ async command void Registers.clr##name(uint8_t mask) { \
CLR_FLAG(UCxx##name, mask); \
} \
- command void Registers.assign##name(uint8_t mask, uint8_t value) { \
- ASSIGNBITS(UCxx##name, mask, value); \
+ async command void Registers.assign##name(uint8_t value) { \
+ UCxx##name = value; \
}
#define RENDER_A(name) \
- command volatile uint8_t* Registers.ptr##name() { \
+ async command volatile uint8_t* Registers.ptr##name() { \
return &UCAx##name; \
} \
- command uint8_t Registers.get##name(uint8_t mask) { \
+ async command uint8_t Registers.get##name(uint8_t mask) { \
if (IS_USCI_Ax) \
return READ_FLAG(UCAx##name, mask); \
+ else \
+ return 0; \
} \
- command void Registers.set##name(uint8_t mask) { \
+ async command void Registers.set##name(uint8_t mask) { \
if (IS_USCI_Ax) \
SET_FLAG(UCAx##name, mask); \
} \
- command void Registers.clr##name(uint8_t mask) { \
+ async command void Registers.clr##name(uint8_t mask) { \
if (IS_USCI_Ax) \
CLR_FLAG(UCAx##name, mask); \
} \
- command void Registers.assign##name(uint8_t mask, uint8_t value) { \
+ async command void Registers.assign##name(uint8_t value) { \
if (IS_USCI_Ax) \
- ASSIGNBITS(UCAx##name, mask, value); \
+ UCAx##name = value; \
}
#define RENDER_B(name) \
- command volatile uint8_t* Registers.ptr##name() { \
+ async command volatile uint8_t* Registers.ptr##name() { \
return &UCBx##name; \
} \
- command uint8_t Registers.get##name(uint8_t mask) { \
+ async command uint8_t Registers.get##name(uint8_t mask) { \
if (IS_USCI_Bx) \
return READ_FLAG(UCBx##name, mask); \
+ else \
+ return 0; \
} \
- command void Registers.set##name(uint8_t mask) { \
+ async command void Registers.set##name(uint8_t mask) { \
if (IS_USCI_Bx) \
SET_FLAG(UCBx##name, mask); \
} \
- command void Registers.clr##name(uint8_t mask) { \
+ async command void Registers.clr##name(uint8_t mask) { \
if (IS_USCI_Bx) \
CLR_FLAG(UCBx##name, mask); \
} \
- command void Registers.assign##name(uint8_t mask, uint8_t value) { \
+ async command void Registers.assign##name(uint8_t value) { \
if (IS_USCI_Bx) \
- ASSIGNBITS(UCBx##name, mask, value); \
+ UCBx##name = value; \
}
#if 0
MSP430REG_NORACE(UCxIfg);
#endif
- command msp430_usci_mode_t Registers.getMode()
+ async command msp430_usci_mode_t Registers.getMode()
{
if (READ_FLAG(UCxxCtl0, UCSYNC)) {
if (READ_FLAG(UCxxCtl0, UCMODE_3) == UCMODE_3)
}
}
- command bool Registers.setMode(msp430_usci_mode_t mode)
+ /* Doesn't really set the mode, but checks the most for the device and inits
+ * the device.
+ */
+ async command bool Registers.setMode(msp430_usci_mode_t mode)
{
if (mode == USCI_UART && IS_USCI_Bx)
return FALSE;
if (mode == USCI_I2C && IS_USCI_Ax)
return FALSE;
- SET_FLAG(UCxxCtl0, UCSYNC);
+ SET_FLAG(UCxxCtl1, UCSWRST);
+ return TRUE;
}
RENDER(Ctl0);
RENDER(Stat);
/* RENDER(Rxbuf); */
- command volatile uint8_t* Registers.ptrRxbuf()
+ async command volatile uint8_t* Registers.ptrRxbuf()
{
return &UCxxRxbuf;
}
- command uint8_t Registers.getRxbuf()
+ async command uint8_t Registers.getRxbuf()
{
return UCxxRxbuf;
}
/* RENDER(Txbuf); */
- command volatile uint8_t* Registers.ptrTxbuf()
+ async command volatile uint8_t* Registers.ptrTxbuf()
{
return &UCxxTxbuf;
}
- command uint8_t Registers.getTxbuf()
+ async command uint8_t Registers.getTxbuf()
{
return UCxxTxbuf;
}
- command void Registers.setTxbuf(uint8_t byte)
+ async command void Registers.setTxbuf(uint8_t byte)
{
UCxxTxbuf = byte;
}
RENDER_B(I2Csa);
/* RENDER(Ie); */
- command bool Registers.getIeRx()
+ async command bool Registers.getIeRx()
{
return READ_FLAG(UCxxIe, UCAxRXIFG);
}
- command void Registers.setIeRx()
+ async command void Registers.setIeRx()
{
SET_FLAG(UCxxIe, UCAxRXIFG);
}
- command void Registers.clrIeRx()
+ async command void Registers.clrIeRx()
{
CLR_FLAG(UCxxIe, UCAxRXIFG);
}
- command bool Registers.getIeTx()
+ async command bool Registers.getIeTx()
{
return READ_FLAG(UCxxIe, UCAxTXIFG);
}
- command void Registers.setIeTx()
+ async command void Registers.setIeTx()
{
SET_FLAG(UCxxIe, UCAxTXIFG);
}
- command void Registers.clrIeTx()
+ async command void Registers.clrIeTx()
{
CLR_FLAG(UCxxIe, UCAxTXIFG);
}
/* RENDER(Ifg); */
- command bool Registers.getIfgRx()
+ async command bool Registers.getIfgRx()
{
return READ_FLAG(UCxxIfg, UCAxRXIFG);
}
- command void Registers.setIfgRx()
+ async command void Registers.setIfgRx()
{
SET_FLAG(UCxxIfg, UCAxRXIFG);
}
- command void Registers.clrIfgRx()
+ async command void Registers.clrIfgRx()
{
CLR_FLAG(UCxxIfg, UCAxRXIFG);
}
- command bool Registers.getIfgTx()
+ async command bool Registers.getIfgTx()
{
return READ_FLAG(UCxxIfg, UCAxTXIFG);
}
- command void Registers.setIfgTx()
+ async command void Registers.setIfgTx()
{
SET_FLAG(UCxxIfg, UCAxTXIFG);
}
- command void Registers.clrIfgTx()
+ async command void Registers.clrIfgTx()
{
CLR_FLAG(UCxxIfg, UCAxTXIFG);
}