Не входит в прерывание. Мож чёт не так делаю???
Инициализация:
AT91S_AIC * pAIC = AT91C_BASE_AIC;
*AT91C_PIOA_PDR = AT91C_PA12_MISO | AT91C_PA13_MOSI | AT91C_PA14_SPCK;
pSPI->SPI_CR = AT91C_SPI_SPIDIS | AT91C_SPI_SWRST;
pSPI->SPI_IDR = 0xffffffff;
/* Set SPI mode */
pSPI->SPI_MR = AT91C_SPI_MSTR | //Set master mode
AT91C_SPI_PS_FIXED | //Fixed peripheral select
AT91C_SPI_MODF |
// AT91C_SPI_PCS | //Chip select directly
(delay_between_cs << 24); //No periferal selected
pSPI->SPI_IER = AT91C_SPI_RDRF | AT91C_SPI_TDRE; //| AT91C_SPI_TXEMPTY; //Enable interrupt on Receive full fnd Transmit Empty
pAIC->AIC_SMR[AT91C_ID_SPI] = AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE | 6; // Set type and priority
pAIC->AIC_SVR[AT91C_ID_SPI] = (unsigned long) spi_int;
pAIC->AIC_IECR = (1 << AT91C_ID_SPI);
Функция передачи данных:
pSPI->SPI_CR = AT91C_SPI_SPIEN;
pSPI->SPI_TDR = 0x0055;
Конфигурация такая:
spi_cfg.cpol = 0; //0 or 1 Clock polarity
spi_cfg.ncpha = 0; //0 or 1 Clock phase
spi_cfg.csaat = 1; //0 or 1 Chip select active after transfer
spi_cfg.bits = 0; //0-8bit 8-16bit Bits per transfer
spi_cfg.csbr = 1; //1..255 Serial clock clock baudrate
spi_cfg.dlybs = 20; //1..255 Delay before SPCK
spi_cfg.dlybct = 1; //1..255 Delay between consecutive transfers
Памагите....
Сообщение отредактировал VIRt - Jul 9 2007, 07:39