},
},
},
- .spi = {
-
- .r_spdr = SPDR,
- .r_spcr = SPCR,
- .r_spsr = SPSR,
-
- .spe = AVR_IO_REGBIT(SPCR, SPE),
- .mstr = AVR_IO_REGBIT(SPCR, MSTR),
-
- .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) },
- .spi = {
- .enable = AVR_IO_REGBIT(SPCR, SPIE),
- .raised = AVR_IO_REGBIT(SPSR, SPIF),
- .vector = SPI_STC_vect,
- },
- },
+ AVR_SPI_DECLARE(0, 0),
.usb = {
.name='1',
.disabled=AVR_IO_REGBIT(PRR1, PRUSB),// bit in the PRR
.vector = TIMER3_CAPT_vect,
},
},
- .spi = {
-
- .r_spdr = SPDR,
- .r_spcr = SPCR,
- .r_spsr = SPSR,
-
- .spe = AVR_IO_REGBIT(SPCR, SPE),
- .mstr = AVR_IO_REGBIT(SPCR, MSTR),
-
- .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) },
- .spi = {
- .enable = AVR_IO_REGBIT(SPCR, SPIE),
- .raised = AVR_IO_REGBIT(SPSR, SPIF),
- .vector = SPI_STC_vect,
- },
- },
-
+ AVR_SPI_DECLARE(0, 0),
.twi = {
.r_twcr = TWCR,
},
},
- .spi = {
- .disabled = AVR_IO_REGBIT(PRR0,PRSPI),
-
- .r_spdr = SPDR,
- .r_spcr = SPCR,
- .r_spsr = SPSR,
-
- .spe = AVR_IO_REGBIT(SPCR, SPE),
- .mstr = AVR_IO_REGBIT(SPCR, MSTR),
-
- .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) },
- .spi = {
- .enable = AVR_IO_REGBIT(SPCR, SPIE),
- .raised = AVR_IO_REGBIT(SPSR, SPIF),
- .vector = SPI_STC_vect,
- },
- },
-
+ AVR_SPI_DECLARE(PRR0, PRSPI),
.twi = {
.r_twcr = TWCR,
.vector = TIMER3_CAPT_vect,
},
},
- .spi = {
- .disabled = AVR_IO_REGBIT(PRR0,PRSPI),
-
- .r_spdr = SPDR,
- .r_spcr = SPCR,
- .r_spsr = SPSR,
-
- .spe = AVR_IO_REGBIT(SPCR, SPE),
- .mstr = AVR_IO_REGBIT(SPCR, MSTR),
-
- .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) },
- .spi = {
- .enable = AVR_IO_REGBIT(SPCR, SPIE),
- .raised = AVR_IO_REGBIT(SPSR, SPIF),
- .vector = SPI_STC_vect,
- },
- },
-
+ AVR_SPI_DECLARE(PRR0, PRSPI),
.twi = {
.r_twcr = TWCR,
.vector = TIMER3_CAPT_vect,
},
},
- .spi = {
- .disabled = AVR_IO_REGBIT(PRR0,PRSPI),
-
- .r_spdr = SPDR,
- .r_spcr = SPCR,
- .r_spsr = SPSR,
-
- .spe = AVR_IO_REGBIT(SPCR, SPE),
- .mstr = AVR_IO_REGBIT(SPCR, MSTR),
-
- .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) },
- .spi = {
- .enable = AVR_IO_REGBIT(SPCR, SPIE),
- .raised = AVR_IO_REGBIT(SPSR, SPIF),
- .vector = SPI_STC_vect,
- },
- },
-
+ AVR_SPI_DECLARE(PRR0, PRSPI),
.twi = {
.r_twcr = TWCR,
},
},
},
- .spi = {
- .disabled = AVR_IO_REGBIT(PRR,PRSPI),
-
- .r_spdr = SPDR,
- .r_spcr = SPCR,
- .r_spsr = SPSR,
-
- .spe = AVR_IO_REGBIT(SPCR, SPE),
- .mstr = AVR_IO_REGBIT(SPCR, MSTR),
-
- .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) },
- .spi = {
- .enable = AVR_IO_REGBIT(SPCR, SPIE),
- .raised = AVR_IO_REGBIT(SPSR, SPIF),
- .vector = SPI_STC_vect,
- },
- },
-
+ AVR_SPI_DECLARE(PRR, PRSPI),
};
static avr_t * make()
},
},
- .spi = {
- .disabled = AVR_IO_REGBIT(PRR0,PRSPI),
-
- .r_spdr = SPDR,
- .r_spcr = SPCR,
- .r_spsr = SPSR,
-
- .spe = AVR_IO_REGBIT(SPCR, SPE),
- .mstr = AVR_IO_REGBIT(SPCR, MSTR),
-
- .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) },
- .spi = {
- .enable = AVR_IO_REGBIT(SPCR, SPIE),
- .raised = AVR_IO_REGBIT(SPSR, SPIF),
- .vector = SPI_STC_vect,
- },
- },
-
+ AVR_SPI_DECLARE(PRR0, PRSPI),
.twi = {
.r_twcr = TWCR,
},
},
},
- .spi = {
-
- .r_spdr = SPDR,
- .r_spcr = SPCR,
- .r_spsr = SPSR,
-
- .spe = AVR_IO_REGBIT(SPCR, SPE),
- .mstr = AVR_IO_REGBIT(SPCR, MSTR),
-
- .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) },
- .spi = {
- .enable = AVR_IO_REGBIT(SPCR, SPIE),
- .raised = AVR_IO_REGBIT(SPSR, SPIF),
- .vector = SPI_STC_vect,
- },
- },
-
+ AVR_SPI_DECLARE(0, 0),
.twi = {
.r_twcr = TWCR,
}
},
#endif
- .spi = {
- .disabled = AVR_IO_REGBIT(PRR0,PRSPI),
-
- .r_spdr = SPDR,
- .r_spcr = SPCR,
- .r_spsr = SPSR,
-
- .spe = AVR_IO_REGBIT(SPCR, SPE),
- .mstr = AVR_IO_REGBIT(SPCR, MSTR),
-
- .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) },
- .spi = {
- .enable = AVR_IO_REGBIT(SPCR, SPIE),
- .raised = AVR_IO_REGBIT(SPSR, SPIF),
- .vector = SPI_STC_vect,
- },
- },
-
+ AVR_SPI_DECLARE(PRR0, PRSPI),
.twi = {
.disabled = AVR_IO_REGBIT(PRR0,PRTWI),
}
}
},
- .spi = {
- .disabled = AVR_IO_REGBIT(PRR,PRSPI),
-
- .r_spdr = SPDR,
- .r_spcr = SPCR,
- .r_spsr = SPSR,
-
- .spe = AVR_IO_REGBIT(SPCR, SPE),
- .mstr = AVR_IO_REGBIT(SPCR, MSTR),
-
- .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) },
- .spi = {
- .enable = AVR_IO_REGBIT(SPCR, SPIE),
- .raised = AVR_IO_REGBIT(SPSR, SPIF),
- .vector = SPI_STC_vect,
- },
- },
-
+ AVR_SPI_DECLARE(PRR, PRSPI),
.twi = {
.disabled = AVR_IO_REGBIT(PRR,PRTWI),
},
},
},
- .spi = {
- .disabled = AVR_IO_REGBIT(PRR,PRSPI),
-
- .r_spdr = SPDR,
- .r_spcr = SPCR,
- .r_spsr = SPSR,
-
- .spe = AVR_IO_REGBIT(SPCR, SPE),
- .mstr = AVR_IO_REGBIT(SPCR, MSTR),
-
- .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) },
- .spi = {
- .enable = AVR_IO_REGBIT(SPCR, SPIE),
- .raised = AVR_IO_REGBIT(SPSR, SPIF),
- .vector = SPI_STC_vect,
- },
- },
-
+ AVR_SPI_DECLARE(PRR, PRSPI),
};
#endif /* SIM_CORENAME */
void avr_spi_init(avr_t * avr, avr_spi_t * port);
+#define AVR_SPI_DECLARE(_prr, _prspi) \
+ .spi = { \
+ .disabled = AVR_IO_REGBIT(_prr, _prspi), \
+ \
+ .r_spdr = SPDR, \
+ .r_spcr = SPCR, \
+ .r_spsr = SPSR, \
+ \
+ .spe = AVR_IO_REGBIT(SPCR, SPE), \
+ .mstr = AVR_IO_REGBIT(SPCR, MSTR), \
+ \
+ .spr = { AVR_IO_REGBIT(SPCR, SPR0), AVR_IO_REGBIT(SPCR, SPR1), AVR_IO_REGBIT(SPSR, SPI2X) }, \
+ .spi = { \
+ .enable = AVR_IO_REGBIT(SPCR, SPIE), \
+ .raised = AVR_IO_REGBIT(SPSR, SPIF), \
+ .vector = SPI_STC_vect, \
+ }, \
+ }
+
#ifdef __cplusplus
};
#endif