реклама на сайте
подробности

 
 
> SPI для ATMega32, Нужна помощь
Юран
сообщение Jan 29 2011, 16:44
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 29-01-11
Пользователь №: 62 562



Здравствуйте! Очень нужна помощь. Мне нужно реализовать обмен данными по
протоколу SPI между мастером и моим устройством на ATMega32 (slave). От
мастера идёт пакет данных 12 байт, мне нужно их принять и в ответ
выслать свой пакет 12 байт.
В связи с этим несколько вопрос:
Если в режиме slave флаг прерывания выставляется не по низкому SS, а по
окончанию сдвига 1 байта (если я правильно понял) ,то как понять какой
это байт по счёту пришёл? И какой соответственно слать мне.

Я бы был очень признателен ,если бы кто-нибудь привёл пример кода с
пояснениями ,как реализовать данную передачу sm.gifПишу в CodeVisionAVR.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Юран
сообщение Jan 30 2011, 03:53
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 29-01-11
Пользователь №: 62 562



Ну да, SPI это интерфейс.
Обмен стандартный через SPDR, т.е одновременная сдвиговая передача.
Была у меня идея поставить счётик, но тогда нет никакой синхронизации по началу передачи получается. Что будет если по какой-либо причине собьётся счётчик? Например, slave включиться на середине передачи. Или помеха на линии. И он будет считать 1й байт , например, как 3й, 2й как 4й и т.д. Бывает такое?
Спрашивайте какие ещё нужны данные, я уточню sm.gif
Go to the top of the page
 
+Quote Post
GDI
сообщение Jan 30 2011, 18:07
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата(Юран @ Jan 30 2011, 06:53) *
Была у меня идея поставить счётик, но тогда нет никакой синхронизации по началу передачи получается. Что будет если по какой-либо причине собьётся счётчик? Например, slave включиться на середине передачи. Или помеха на линии. И он будет считать 1й байт , например, как 3й, 2й как 4й и т.д.

А сигнал CS вас на каждый байт будет или на всё сообщение? Какова длина линии передачи и в каких условиях она будет работать, цех, лаборатория и т.п., где будет использоваться ваше устройство? Вообще то нормальные протоколы имеют признаки начала пакета, это может быть какой-то специальный символ или пауза в передаче, как в ModbusRTU, или, в вашем случае это может быть отдельный сигнал CS, тогда он должен переходить в "0" в начале пакета, и подниматься в "1" после передачи последнего 12го байта. Еще нормальные протоколы имеют контроль целостности пакета в виде какой-то контрольной суммы, передаваемой в конце пакета.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 17:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016