}
implementation
{
-#define pin (*TCAST(volatile uint8_t * SINGLE NONNULL, pin_addr))
-#define port (*TCAST(volatile uint8_t * SINGLE NONNULL, port_addr))
-#define ddr (*TCAST(volatile uint8_t * SINGLE NONNULL, ddr_addr))
+#define pin (*TCAST(volatile uint8_t * ONE, pin_addr))
+#define port (*TCAST(volatile uint8_t * ONE, port_addr))
+#define ddr (*TCAST(volatile uint8_t * ONE, ddr_addr))
inline async command bool IO.get() { return READ_BIT (pin, bit); }
inline async command void IO.set() { SET_BIT (port, bit); }
}
implementation
{
-#define pin (*TCAST(volatile uint8_t * SINGLE NONNULL, pin_addr))
-#define port (*TCAST(volatile uint8_t * SINGLE NONNULL, port_addr))
-#define ddr (*TCAST(volatile uint8_t * SINGLE NONNULL, ddr_addr))
+#define pin (*TCAST(volatile uint8_t * ONE, pin_addr))
+#define port (*TCAST(volatile uint8_t * ONE, port_addr))
+#define ddr (*TCAST(volatile uint8_t * ONE, ddr_addr))
inline async command bool IO.get() { return READ_BIT (pin, bit); }
inline async command void IO.set() { atomic SET_BIT (port, bit); }
inline async command void Irq.enable() { EIMSK |= 1 << bit; }
inline async command void Irq.disable() { EIMSK &= ~(1 << bit); }
-#define ctrl (*(volatile uint8_t *)ctrl_addr)
+#define ctrl (*TCAST(volatile uint8_t * ONE, ctrl_addr))
inline async command void Irq.edge(bool low_to_high) {
ctrl |= 1 << edge1bit; // use edge mode
}
implementation
{
- #define PORTxIN (*TCAST(volatile TYPE_PORT_IN* SINGLE NONNULL, port_in_addr))
- #define PORTx (*TCAST(volatile TYPE_PORT_OUT* SINGLE NONNULL, port_out_addr))
- #define PORTxDIR (*TCAST(volatile TYPE_PORT_DIR* SINGLE NONNULL, port_dir_addr))
- #define PORTxSEL (*TCAST(volatile TYPE_PORT_SEL* SINGLE NONNULL, port_sel_addr))
+ #define PORTxIN (*TCAST(volatile TYPE_PORT_IN* ONE, port_in_addr))
+ #define PORTx (*TCAST(volatile TYPE_PORT_OUT* ONE, port_out_addr))
+ #define PORTxDIR (*TCAST(volatile TYPE_PORT_DIR* ONE, port_dir_addr))
+ #define PORTxSEL (*TCAST(volatile TYPE_PORT_SEL* ONE, port_sel_addr))
async command void IO.set() { atomic PORTx |= (0x01 << pin); }
async command void IO.clr() { atomic PORTx &= ~(0x01 << pin); }
}
implementation
{
- #define TxCCTLx (*TCAST(volatile TYPE_TACCTL0* SINGLE NONNULL, TxCCTLx_addr))
- #define TxCCRx (*TCAST(volatile TYPE_TACCR0* SINGLE NONNULL, TxCCRx_addr))
+ #define TxCCTLx (*TCAST(volatile TYPE_TACCTL0* ONE, TxCCTLx_addr))
+ #define TxCCRx (*TCAST(volatile TYPE_TACCR0* ONE, TxCCRx_addr))
typedef msp430_compare_control_t cc_t;
}
implementation
{
- #define TxIV (*TCAST(volatile TYPE_TAIV* SINGLE NONNULL, TxIV_addr))
- #define TxR (*TCAST(volatile TYPE_TAR* SINGLE NONNULL, TxR_addr))
- #define TxCTL (*TCAST(volatile TYPE_TACTL* SINGLE NONNULL, TxCTL_addr))
+ #define TxIV (*TCAST(volatile TYPE_TAIV* ONE, TxIV_addr))
+ #define TxR (*TCAST(volatile TYPE_TAR* ONE, TxR_addr))
+ #define TxCTL (*TCAST(volatile TYPE_TACTL* ONE, TxCTL_addr))
async command uint16_t Timer.get()
{