Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 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.RU
 
Аватар для Saadov
 
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
Saadov на пути к лучшему
По умолчанию Re: Soft_SPI на MikroC

data_send у вас массив или байт?
Без тела Soft_SPI_Read() трудно сказать, что у вас эта функция возвращает.
Saadov вне форума  
Непрочитано 05.11.2014, 23:00  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
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.RU
 
Аватар для Saadov
 
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
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.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 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.RU
 
Регистрация: 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.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 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, время: 19:06.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot