Устройство .NET Micro Framework (в этом случае ChipworkX) отправляет байт через интерфейс SPI в PIC18F. Имея PIE1bits.SSPIE
включен, следующий код выполняется на interrrupt:SPI master to PIC18F4550 ведомая синхронизация (C18) с использованием NETMF
void high_isr (void)
{
PIE1bits.SSPIE = 0;
PIR1bits.SSPIF = 0; //Clear interrupt flag.
LATDbits.LATD5 = 1; //Enables LED for high interrupt activity.
while (!SSPSTATbits.BF); //Wait until cycle complete
red_byte_array[1] = SSPBUF;
SSPBUF = 0x00;
LATDbits.LATD5 = 0;
PIE1bits.SSPIE = 1;
}
При отправке одного байт в несколько раз, данные, кажется, не следует читать последовательно. Оба ведущего и ведомого устройства настроены на низкий уровень холостого хода часов и синхронизацию данных по нарастающему фронту. Я не использую линию выбора микросхемы, потому что это прямая передача. И наконец, ведущий отправляет данные со скоростью 100 кГц, тогда как ПОС работает на частоте 8 МГц.
Как мне улучшить и/или исправить этот код?
Какие у вас установлены регистры SSPSTAT и SSPCON1? Вы также убедились, что выводы SCK, SDO, SDI и ~ SS правильно настроены как вход или выход? Вы используете булавку SS? – MSumulong