Показать сообщение отдельно
Старый 10.04.2009, 12:12   #86   
Форумец
 
Сообщений: 1,532
Регистрация: 19.02.2009
Возраст: 54
Записей в дневнике: 1

petrd вне форума Не в сети
Цитата:
Сообщение от 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, что и надо было. Так?
У меня такой памяти нет, поэтому смотрел в Протеусе.
  Ответить с цитированием