На PIC16F886 / 7 :
Если вы не используете /SS
, то данные изменяются по переднему фронту и выбираются по заднему фронту для SCK
холостого хода при 0: CKE = 0
, CKP = 0
(или 1
), SMP = 0
.
Байт, перемещающийся из регистра сдвига в регистр буфера, вызывает BF
бит и SSPIF
прерывание, поэтому обычно вы не зацикливаетесь на ожидании прерывания BF
.
Не должно быть необходимости отключать SSP
прерывания (SSPIE = 0
), но вам, вероятно, необходимо очистить SSPIF
перед возвратом из прерывания.
Полагаю, вам следует прервать SSP
(SSPIF = 1
):
red_byte_array[x] = SSPBUF
SSPIF = 0
Возможно, вам придется проверить WCOL
и SSPOV
на наличие ошибок.