Цитата:
Сообщение от mono
Вот, пожалуйста посмотрите, наверняка где-то глюк
|
Посмотрел, Вы были правы, глюки, причем все рукотворные. Вот смотрите:
Код:
/*
Надо настроить проект: в Project -> Edit Project должны стоять галки
_MCLRE_ON;
_WDT_OFF;
_INTRC_OSC_NOCLKOUT; у Вас же стоял кварц HS
остальные не должны стоять.
*/
unsigned short take, buffer; // надо правильно определить тип данных,
// в данном случае не влияет, но все же
void main() {
ANSEL = 0;
CMCON = 7;
//TRISIO = 0x00000010; // неверная запись, какой бит хотели установить? GPIO.4
//TRISIO = 0b000010; // если GPIO.1, то надо так или 0x02
TRISIO=0; // нас интересует только GPIO.2 назначенный как CS,
// остальные компилятор сам назначит как надо под SPI и UART, поэтому я вот так написал
GPIO = 0;
Soft_Spi_Config(&GPIO,4,1,5); // надо переопределить SDI и SDO, у Вас SDO-SDO, SDI-SDI, надо SDI-SDO, SDO-SDI
Soft_Uart_Init(GPIO, 3, 0, 9600, 0);
do {
GPIO.F2=0; // выставили CS (при цикле обращения должен быть равен 0)
Delay_ms(50);
Soft_Spi_Write(0x15); // команда чтения идентификатора
Delay_ms(5);
take=Soft_Spi_Read(buffer);
Delay_ms(50);
Soft_Uart_Write(take);
GPIO.F2=1; // убрали CS
Delay_ms(50);
} while(1);
}
И все, по UART постоянно идет 1F, что и надо было. Так?
У меня такой памяти нет, поэтому смотрел в Протеусе.