Hello,
I want to use SPI on my Atxmega64A1U, but it doesnt work. I measure it with osciloscope and any signals appear on MOSI, MISO or SCK.
I dont have many experience with xmega, but everything exept SPI works.
Only SS goes LOW and then HIGH.
#define MOSI PIN5_bm #define MISO PIN6_bm #define SCK PIN7_bm #define SS PIN4_bm char spi_write(char data) { SPID.DATA = data; //send while(!(SPID.STATUS & SPI_IF_bm)); //wait completion return SPID.DATA; } void RC522_write(char reg, char value) { SPID.CTRL = SPI_ENABLE_bm | SPI_MASTER_bm | SPI_CLK2X_bm | SPI_MODE_0_gc; // set SPI comunication with RFID PORTD.OUTCLR = SS; //slave select (inverted) spi_write(reg & 0x7E); spi_write(value); PORTD.OUTSET = SS; SPIC.CTRL = 0; } void init_RC522() { PORTD.DIRSET = (MOSI | SCK | SS); PORTD.DIRCLR = MISO; PORTD.PIN6CTRL = PORT_OPC_PULLUP_gc; PORTD.OUTSET = SS; //slave unselect (inverted) SPID.INTCTRL = 0x00; } void main() { init_RC522(); RC522_write(0xFF, 0xFF); return 0; }
Thank you for your time.
Best Regards,
Petrlinux