Поиск по проблемам c SS на этом форуме ничего не дал, так что заранее извиняюсь что вопрос по всей видимости заезженный.
Проблема в том, что при старте контроллера SS становиться в "0". Если начинаю по SPI гнать байты то всё становиться на круги своя - в режиме паузы "1" а при передаче "0".
Вот куски:
при инициализации порта В там где SS (PORTB.0) конфигурирую на выход:
Код
// SS -> PORTB.0 --> OUTPUT
// SCK --> PORTB.1 --> OUTPUT
// MOSI --> PORTB.2 --> OUTPUT
// MISO --> PORTB.3 --> INPUT
//PORTB=0x05; // 0b00000101 для варианта с софтовым SPI
PORTB=0x00; // для варианта с хардовым SPI
DDRB=0xC7; // 0b11000111
и потом конфигурирую SPI
Код
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 62,500 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x57;
SPSR=0x00;
Почитал литературу - всё вроде делаю правильно - если ставлю в режим мастера то вывод SS перед этим д.б. сконфигурирован на вывод, иначе будут проблемы.
Если заменить код программы где SPI начинаю долбить "в ручную" (софтовый вариант) то никаких проблем нет, обмен с ведомым девайсом есть.
Сообщение отредактировал Halfback - May 23 2009, 13:56