MEGA64 SPI Slave нужна помощь

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вт июл 10, 2007 23:15:17
Откуда: Магнитогорск

Сообщение ipkin »

Привет всем.
Все запарился поэтому прошу помощи.
есть мега которая по спи должна принимать пакет 44байта.
вот формат:
A2 xx xx xx xx xx xx xx xx xx 00 A2 xx xx xx xx xx xx xx xx xx 01 A2 xx xx xx xx xx xx xx xx xx 02 A2 xx xx xx xx xx xx xx xx xx 03
в пакете все A2 и 00 01 02 03 неизменные значения.
нужно принять этот пакет и записать в буфер.
пакет крутится по кругу.
затем (к примеру 19 ячейка буфера ОЗУ если считать с 0) нужно сравнить с условием и если оно совпадает зажечь светодиод на PORTD.0 если значение этой ячейки совпадает по другому условию то потушить светодиод PORTD.0 и зажечь на PORTD.1 и так в цикле.
Я написал прогу всё вроде бы работает но когда меняется значение в пакете то переключение светиков происходит с задержкой примерно 1-1.5 сек
во вложении прога с которой у меня вот так работает
Вложения
spi slave.rar
(648 байт) 171 скачивание
Реклама
Опытный кот
Аватара пользователя
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Сообщение asteroid7 »

Связь по SPI это не только slave приёмник.
SS для синхронизации используете?
Реклама
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вт июл 10, 2007 23:15:17
Откуда: Магнитогорск

Сообщение ipkin »

asteroid7 писал(а):Связь по SPI это не только slave приёмник.
SS для синхронизации используете?
нет SS не используется он постоянно на земле через резюк.
но устройство которое передаёт пакет имее вывод CE .
на нём происходит следующее:
когда на CE лог 0 то передаётся A2 когда на СЕ лог 1 то передаются остальные 10 байт данных
Опытный кот
Аватара пользователя
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Сообщение asteroid7 »

Получается, что нет синхронизации. А она нужна.
Попробуйте ответить на вопрос: Как слейв МК поймёт, что этот бит и есть начало байта?

Вижу два пути решения:
1. Самый простой. Схемотехнически инвертировать СЕ от мастера и задействовать SS на слейве. Код А2 выпадает из разбора пакета. По последнему байту восстанавливается очерёдность.
2. Сложнее. По таймауту синхронизировать программно на слейве. Надо знать интервалы времени обмена.
Реклама
Эиком - электронные компоненты и радиодетали
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»