Сдвиговый регистр подключен к "SDI" (PORTC4) в PIC18F4520. Сам регистр тактируется сигналом CLK с проца. Если не подключать пин непосредственно ко входу SDI, и смотреть осцилом - все четко, но если подключаю - лажа.
Вот сейчас подключил 2х канальный осцил: 1й канал к тактовому сигналу , 2й канал к выходу данных. К входам параллельной загрузки (11,12,13,14,3,4,5,6) микросхемы 74HС165 подключены подтягивающие к плюсу резисторы. Притягиваю (корочу) входы на выходе нет изменения уровня, только лишь заметны маленькие пички. Попробовал притянуть вход спиая к плюсу/земле резистором - то же самое.
...
TRISC = 0b11010000; /* настроим пины UART/SPI (watch datasheet) */
PORTC = 0b11111111;
...
void SPIHardInit(CHAR mode, CHAR speed){
TRISC3 = 0;
TRISC4 = 1;
TRISC5 = 0;
switch (mode)
{
case SPI_MODE0 : CKP = 0; CKE = 1; break;
case SPI_MODE1 : CKP = 0; CKE = 0; break;
case SPI_MODE2 : CKP = 1; CKE = 1; break;
case SPI_MODE3 : CKP = 1; CKE = 0; break;
}
SMP = 0;
speed &= 0x0F;
SSPCON1 = (SSPCON1 & 0xF0) | speed;
SSPEN = 1;
SSPIP = 1; /* Установка высокого приоритета прерывания от SPI */
SSPIE = 1;
}
INT08U SPIRWChar(INT08U spi_out) {
SSPBUF = spi_out;
while (!SPI_FLAG);
SPI_FLAG = 0;
return SSPBUF;
}
Шо делать? Спасибо!