Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Передача данных PIC->MAXII по SPI
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Feo
С МК я передаю данные в плис по SPI. На данный момент передается 5 байт.
Каждый байт - это значения заполнения 4 каналов ШИМ + 1 байт значение угла поворота шаговика.
Задача организовать передачу не 4 а 10-15 байт, организовать как минимум 10 независимых каналов шим в плис.

Но вот загвоздка: стоит мне убрать строку из главного модуля проекта
output wire [39:0]byte_data_received
как мои шим перестают генерироваться и шаговик перестает двигаться, но пакеты по SPI приходят от МК исправно (проверил анализатором).
Господа подскажите в чем может быть ошибка?

iosifk
Цитата(Feo @ Jul 26 2014, 12:38) *
С МК я передаю данные в плис по SPI. На данный момент передается 5 байт.
Каждый байт - это значения заполнения 4 каналов ШИМ + 1 байт значение угла поворота шаговика.
Задача организовать передачу не 4 а 10-15 байт, организовать как минимум 10 независимых каналов шим в плис.

Но вот загвоздка: стоит мне убрать строку из главного модуля проекта
output wire [39:0]byte_data_received
как мои шим перестают генерироваться и шаговик перестает двигаться, но пакеты по SPI приходят от МК исправно (проверил анализатором).
Господа подскажите в чем может быть ошибка?

Ну, во первых, если убрать выходы модуля, то компилятор все оптимизирует и выкидывает ненужный модуль вообще...
А во вторых, файлы написаны ужасно... Ничего удивительного, что не работает...
Подробнее могу только по скайпу, а так слишком много надо писать...
Feo
В процессе разработки программа принимает данные от МК по SPI, после в плис эти данные разбираются, обрабатываются и ПЛИС должен вернуть данные с датчика в МК в виде 5 байт.
Работа с датчиком описана в модуле Humidity, в данном модуле в регистр HYM побитно набираются данные. После завершения приема данных от датчика переводим данные в регистр HYM2. HYM2 передаем в модуль SPI. Далее, пока передача по SPI не активна, заносим данные в HYM_send. Который уже в процессе обмена по SPI возвращается в МК.

Проблема в том, что если помещаю в HYM2 константу - все работает идеально, процесс передачи мониторю ТТЛ-анализатором. Т.е. и ТТЛ и мк принимают все идеально верно.
Код
HYM2<=40'b1111010101010101010101010101010101010101;


Если отсылаю значение регистра, то приходят только первые 2 байта, хотя ТТЛ-анализатор исправно видит все байты, как и в первом случае.
Код
else if (FSDR_fallingedge==1 & id_gorb!=1 & shet>30 & shet<75)
begin
HYM <= {HYM[38:0], 1'b1}; //заносим 1
shet<=0;
end else if (FSDR_fallingedge==1 & id_gorb!=1 & shet>10 & shet<35)
begin
HYM <= {HYM[38:0], 1'b0}; //заносим 0
shet<=0;
end else if (shet>100) begin
shet<=0;
mstate<=3; //стейт в ожидание новой передачи
HYM2<=HYM;//40'b1111010101010101010101010101010101010101;
end


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.