Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Soft_SPI на MikroC

Непрочитано 05.11.2014, 22:19  
feo
Временная регистрация
 
Регистрация: 30.03.2005
Адрес: Нижний Новгород
Сообщений: 75
Сказал спасибо: 29
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
feo на пути к лучшему
По умолчанию Soft_SPI на MikroC

Господа, использую Soft_SPI для общения PIC с ПЛИС.
PIC отправляет 11 байт, потом должен бы принять 5 байт от ПЛИС.
ПЛИС соответственно выставляет на шину MISO свои 5 байт только после приема 11 байт по MOSI.
В итоге по ТТЛ виден вполне верный обмен, но в массив DHT1 заносится почему-то только 2 байта, а потом нули.
В чем может быть дело?

Код:
 Zaslonka_Select = 0;        // Select CPLD
    for (i=0;i‹11;i++){
    Soft_SPI_Write(CPLD[i]);
    }
    for (i=0;i‹5;i++){
    DHT1[i]= Soft_SPI_Read(data_send);
    }
    Zaslonka_Select = 1;               // Deselect CPLD
Миниатюры:
Нажмите на изображение для увеличения
Название: data.png
Просмотров: 199
Размер:	183.6 Кб
ID:	71435   Нажмите на изображение для увеличения
Название: data1.png
Просмотров: 184
Размер:	298.0 Кб
ID:	71436  
Реклама:
feo вне форума  
Непрочитано 05.11.2014, 22:55  
Saadov
Почётный гражданин KAZUS.RUN
 
Аватар для Saadov
 
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,010
Сказал спасибо: 348
Сказали Спасибо 1,023 раз(а) в 551 сообщении(ях)
Saadov на пути к лучшему
По умолчанию Re: Soft_SPI на MikroC

data_send у вас массив или байт?
Без тела Soft_SPI_Read() трудно сказать, что у вас эта функция возвращает.
Saadov вне форума  
Непрочитано 05.11.2014, 23:00  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Soft_SPI на MikroC

Вообще должно работать. Но раз не работает, значит какие-то проблемы с этой функцией. Напишите свою. Благо всего несколько строчек.
Easyrider83 вне форума  
Непрочитано 06.11.2014, 01:13  
feo
Временная регистрация
 
Регистрация: 30.03.2005
Адрес: Нижний Новгород
Сообщений: 75
Сказал спасибо: 29
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
feo на пути к лучшему
По умолчанию Re: Soft_SPI на MikroC

Переписал код, теперь вроде верно использую функцию, но все равно вижу только 2 байта первые с линии MISO.

Код:
unsigned short DHT1[11];
char CPLD[i];
//-----
  unsigned int CPLD_softSPI3() {
 char i;
    Zaslonka_Select = 0;        // Select SS
    for (i=0;i‹11;i++){
    DHT1[i]= Soft_SPI_Read(CPLD[i]);
    }
    Zaslonka_Select = 1;               // Deselect SS
     }
     }
Миниатюры:
Нажмите на изображение для увеличения
Название: 2014-11-06 00-12-26 Скриншот экрана.png
Просмотров: 55
Размер:	233.4 Кб
ID:	71438  
feo вне форума  
Непрочитано 06.11.2014, 03:06  
Saadov
Почётный гражданин KAZUS.RUN
 
Аватар для Saadov
 
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,010
Сказал спасибо: 348
Сказали Спасибо 1,023 раз(а) в 551 сообщении(ях)
Saadov на пути к лучшему
По умолчанию Re: Soft_SPI на MikroC

Просмотрел функцию Soft_SPI_Read().
Получается по последнему вашему коду так, PIC отправил байт CPLD[] ПЛИС, читаем ответ в приемнике и заносим в DHT1[], и так 11 раз.
По идее смотрите, что ПЛИС шлет в ответ. Сделайте тест, отправили 0, получили в ответ 3, если есть отклонения, ищите баг там, кто первый отправили или ответил неправильно.
Saadov вне форума  
Сказали "Спасибо" Saadov
feo (06.11.2014)
Непрочитано 06.11.2014, 11:22  
feo
Временная регистрация
 
Регистрация: 30.03.2005
Адрес: Нижний Новгород
Сообщений: 75
Сказал спасибо: 29
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
feo на пути к лучшему
По умолчанию Re: Soft_SPI на MikroC

Спасибо за комментарии!

То, что плис шлет в ответ видно на диаграмме ТТЛ на линии MISO, что интересно сам софт ТТЛ-анализатора ВСЕГДА расшифровывает ответ ПЛИС верно.
А в массив DHT1 всегда верно заносятся первые два значения, а потом нули. Я подумал, даже если рассинхрон (что невозможно теоретически и не подтверждается ТТЛ анализатором), то заносились бы какие-нибудь левые данные или сдвинутые на бит положим. Тут же просто 0.
feo вне форума  
Непрочитано 06.11.2014, 11:27  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Soft_SPI на MikroC

вот эта конструкция Вас не смущает?
char CPLD[i];

Чему i равно?
Boba_spb вне форума  
Сказали "Спасибо" Boba_spb
feo (06.11.2014)
Непрочитано 06.11.2014, 11:29  
feo
Временная регистрация
 
Регистрация: 30.03.2005
Адрес: Нижний Новгород
Сообщений: 75
Сказал спасибо: 29
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
feo на пути к лучшему
По умолчанию Re: Soft_SPI на MikroC

Вроде не смущает, i равно когда как - от 0 до 10. В соответтствии с конструкцией:

Код:
for (i=0;i‹11;i++){}
Понял, вы про объявление массива! Там конечно 11, а не i. Это я неправильно участок кода скопировал. В программе char CPLD[11]; конечно.

Последний раз редактировалось feo; 06.11.2014 в 11:32.
feo вне форума  
Непрочитано 06.11.2014, 12:28  
3d cube
Гражданин KAZUS.RUN
 
Регистрация: 27.11.2012
Адрес: 30км от Софии
Сообщений: 732
Сказал спасибо: 89
Сказали Спасибо 310 раз(а) в 180 сообщении(ях)
3d cube на пути к лучшему
По умолчанию Re: Soft_SPI на MikroC

Прерывания запретили во время Soft_SPI ?
3d cube вне форума  
Непрочитано 06.11.2014, 12:42  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Soft_SPI на MikroC

Сообщение от feo Посмотреть сообщение
Понял, вы про объявление массива! Там конечно 11, а не i. Это я неправильно участок кода скопировал. В программе char CPLD[11]; конечно.
Посмотрите "здесь", почему не работает "там" - занятная ситуации
Исходники бы показали подпрграмм чтения и записи.
Интересно что за аргумент в чтении Soft_SPI_Read(CPLD[i])?
Или при копировании аргумент вставился ?
Boba_spb вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MIkroC 5 - demo limit cavebear Микроконтроллеры, АЦП, память и т.д 5 29.12.2011 12:00
Ошибка компиляции mikroC PRO for PIC v4.60 O_kazus Микроконтроллеры, АЦП, память и т.д 3 31.01.2011 20:20
Описание команд mikroC for dsPIC30F Anthony.Ti Микроконтроллеры, АЦП, память и т.д 32 29.06.2010 17:23
PG240x62 t6963c mikroC PRO for AVR strelok1962 Микроконтроллеры, АЦП, память и т.д 0 14.01.2010 03:11
mikroC компилятор для пиков как его крякнуть ctefan Proteus, KiCAD и другие ECAD 7 01.01.2008 16:22


Часовой пояс GMT +4, время: 20:46.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.