|
Дабы не открывать новую тему, спрошу здесь. Уже какую неделю мучаюсь с аппаратным SPI-модулем у МК PIC16F72 в режиме slave. Я настроил модуль SSP на прерывание после получения данных. В результате преывание возникает не после 8-ми тактовых импульсов (как должно быть). А чаще всего после 9го, иногда после 10 или 11го (в последующих байтах после притягивания SS к земле). Много раз лопатил настройки, отлаживал вручную. Смотрел фронты. Изменял время высокого и низкого сигнала SCL от 1 до 250 мкс. Сигнал на ножке SDO выставляется в правильный момент (т.е. фазы импульсов настроены верно). С МК я считываю 6 байт, в результате через один я получаю "0", а в остальных "кашу". Первый байт приходит правильным, т.к. я его устанавливаю заранее, когда SS=1. Если в цикле непрерывно писать в буфер SSPBUF некое число, то в результате на выходе получаем правильное, но мне нужно знать окончание приема и вовремя загрузить в буфер следующее число. Уже думаю писать программный slave-SPI модуль, но тут нужно будет очень часто опрашивать ножку SCK, чтобы успевать за тактами. |
|