roboforum.ru

Технический форум по робототехнике.

SPI не слышит - оглох.

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

SPI не слышит - оглох.

Сообщение hazy » 30 окт 2012, 21:12

Трое суток идут ожесточенные бои с шиной SPI и EEPROM M25P10.
Что только не делал:
Разные конфиги.
Занижал клок до t=20мс.
Разные EEPROM.
Все бесполезно. Не может такого быть. Чувствую что где то косяк, причем детский косяк.
Не могут все SPI EEPROM в протеусе глючить!
Микроконтроллер благополучно отсылает бит RDSR (и не только), но память игнорит и молчит зараза.
На i2c переходить не хочется, но походу придется.
Было замечено, что если отправить бит который память не знает(0b11111111) она начинает ругаться. Мол "ункнован команд" и все дела.
Есть хоть идея у кого???

#define SDO_PIN TRISC5
#define SDI_PIN TRISC4
#define SCK_PIN TRISC3
#define SS_PIN TRISA5

int main(int argc, char** argv){
T0IE=0;
GIE=0;

TRISB=0;
PORTB=0;
TRISA=1;
PORTA=0;
TRISC=0;
PORTC=0;

while(1==1)
{ RB4=0;
init_spi();

spi_send(0b00000101);
PORTB=SSPSTAT;

}

spi_send(unsigned char byte) { //отправка

SSPBUF = byte; //
DelayUs(100);
SSPBUF = 0b00000000;//
DelayUs(100);
byte = SSPBUF; //
DelayUs(100);
return byte;
}

void init_spi() //настройка
{
SSPEN=1;
SDI_PIN =1;
SDO_PIN =0;
SCK_PIN =0;
SS_PIN =1;
SMP=0;
CKE=0;
CKP=0;

SSPM3=0;
SSPM2=0;
SSPM1=1;
SSPM0=0;
}

Я где то касячнул!!!
Вложения
proteus.zip
Протеус проэкт
(32.42 КиБ) Скачиваний: 0
Аватара пользователя
hazy
 
Сообщения: 4
Зарегистрирован: 30 окт 2012, 20:37

Re: SPI не слышит - оглох.

Сообщение Romikgy » 31 окт 2012, 11:45

DelayUs(100); разве это не задержка в 100 мкс ?
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

Re: SPI не слышит - оглох.

Сообщение hazy » 31 окт 2012, 13:36

DelayUs(100); задержка в 100 маш. циклов.
А что?

#define DelayUs(x) {
unsigned char _dcnt; \
_dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
while(--_dcnt != 0) \
continue;
}
Аватара пользователя
hazy
 
Сообщения: 4
Зарегистрирован: 30 окт 2012, 20:37

Re: SPI не слышит - оглох.

Сообщение Romikgy » 31 окт 2012, 16:36

не слишком ли малый промежуток времени ....
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

Re: SPI не слышит - оглох.

Сообщение hazy » 31 окт 2012, 17:02

Я его до секунды растягивал. А так он шире тактового импульса в несколько раз.
В даташите промежутков местами вообще нет.
Идет байт за байтом не различить (когда серия из байтов).

Вот и2ц работает как часы, но медленная зараза.
Аватара пользователя
hazy
 
Сообщения: 4
Зарегистрирован: 30 окт 2012, 20:37

Re: SPI не слышит - оглох.

Сообщение Aseris » 31 окт 2012, 17:06

Мод SPI проверь, чтоб одинаковые были на девайсе и мк. Также проверь входы типа СЕ/CS/ENABLE памяьти...
Аватара пользователя
Aseris
 
Сообщения: 1142
Зарегистрирован: 01 сен 2009, 14:58
Откуда: Чехия
прог. языки: C/С++, VHDL, Verilog, ASM, Python

Re: SPI не слышит - оглох.

Сообщение hazy » 31 окт 2012, 17:15

Моды проверял.
Ставил (1.1) и (0.0) другие девайс не держит.

Хммм...
Есть поддержка 1Мгц.
А какую скорость можно развить? :roll:
Аватара пользователя
hazy
 
Сообщения: 4
Зарегистрирован: 30 окт 2012, 20:37

Re: SPI не слышит - оглох.

Сообщение Angel71 » 31 окт 2012, 19:44

если не запамятовал, максимум половина тактовой + смотря что подключили к контроллеру. :) вы даташит откройте и уточните.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21