Цитата(Laptop @ Jul 6 2006, 18:48)

Пытаюсь настроить передачу через SSP. Реакция нулевая...
void SSP_Init(void)
{
PINSEL1 |= 0x88; // configure SPI0 pins
SSPCR0 = 0x0007; // 8 bit
SSPCR1 = 0x02; // enable, master
SSPCPSR = 20; // SCK = 7.5 MHz, counter > 2 and even
}
unsigned char SSP_write (unsigned char data)
{
volatile unsigned char result;
result = SSPDR;
SSPDR = data; // send next SPI channel 0 data
while ((SSPSR & 0x10)) ; // wait for transfer completed
return result;
}
да собственно всё верно. у меня такая же инициализация, правда для 38 и все работает. Правда
MISO в PINSEL1 я все таки разрешил, хотя по идее передача и без него должна быть.
требуется доп. информация типа :
- как смотрите что нет реакции? осциллом? случаем не на SPI0 ноги смотрите?
- немного смущает SSPCPSR = 20; и SCK=7.5М - это же какая тактовая должна быть?

) м.б. развертку у осцилла "сжать"?

- объявлены ли регистры SSP как volatile (правильные ли у них адреса наконец

больше ничего придумать не могу
p.s.
ну и логика работы у меня немного другая
Код
#define SPI_WAIT_BSY0() do {} while ( SPI12138->SSPSR & 0x10)
#define SPI_DR SPI12138->SSPDR
static u8_t spi_mov1 (u32_t b) {
SPI_DR = b;
SPI_WAIT_BSY0();
return SPI_DR;
}