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

 
 
> SPI у ATMEGA8515, прием данных в режиме slave
Grave711
сообщение Jan 13 2006, 12:28
Сообщение #1





Группа: Новичок
Сообщений: 10
Регистрация: 26-08-05
Пользователь №: 7 987



Доброго времени суток.
Столкнулся с такой проблемой. SPI в режиме slave у ATMEGA8515 почему-то не хочет передавать данные, когда тактовые импульсы с мастера поступают непрерывно, без пауз между байтами.
Если отлаживаю программу на мастере пошагово, т.е. между байтами куча времени, все ок.
Частота SPI 125 кГц и ATMEGA на 8 Мгц все успевает.
Это особенность архитектуры или глюк?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
defunct
сообщение Jan 13 2006, 16:50
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Grave711 @ Jan 13 2006, 14:28) *
Доброго времени суток.
Столкнулся с такой проблемой. SPI в режиме slave у ATMEGA8515 почему-то не хочет передавать данные, когда тактовые импульсы с мастера поступают непрерывно, без пауз между байтами.
Если отлаживаю программу на мастере пошагово, т.е. между байтами куча времени, все ок.
Частота SPI 125 кГц и ATMEGA на 8 Мгц все успевает.
Это особенность архитектуры или глюк?


Особенностью архитектуры это назвать нельзя. Смотрим даташит стр 129: "The SS pin is useful for packet/byte synchronization to keep the Slave bit counter synchronous with the master clock generator." Ключевое слово выделено.

Следовательно, раз никаких особенностей архитектуры нет, имеет место глюк. Природа глюка очень проста: ваша программа (на слейве) не успевает заправлять данными SPI порт. Устранение проблемы:

1. сокращайте время подготовки очередного байта на слейве.
2. делайте паузы между байтами на мастере
Go to the top of the page
 
+Quote Post
by-pass
сообщение Jan 13 2006, 19:17
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 13-09-05
Пользователь №: 8 518



Очень длительное время обработчка прерываний по приему. По хорошему, надо заранее готовить данные для ответа, а в прерывании только считывать из массива и увеличивать индекс. А вообще, вариантов куча.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 16 2006, 13:07
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Судя по архитектуре этого интерфейса можно прийти к выводу, что он изначально разрабатывался для взаимодействия интеллектуального мастера (МК) с неинтеллектуальным слейвом (память, часы, ввод\вывод), у которого данные уже готовы сразу перед тем, как их нужно передавать.
Никаких средств квитирования заранее не предусмотрено и даже задержки не гарантируют надёжной передачи информации. В таком случае надо вводить дополнительные линии квитирования, что раздувает интерфейс, либо вводить неоправданно большие задержки, сводящие на нет казалось бы высокую скорость обмена.
В таких случаях (т. е. когда в сети все устройства интеллектуальные) более предпочтительно выглядят UART или I2C, которые несмотря на более низкий битрейт позволяют получить более высокий трафик за счёт оптимизации межбайтовых промежутков и, кроме того имеют меньшее количество линий связи.
Go to the top of the page
 
+Quote Post
Grave711
сообщение Jan 18 2006, 08:11
Сообщение #5





Группа: Новичок
Сообщений: 10
Регистрация: 26-08-05
Пользователь №: 7 987



Огромное всем спасибо, что не прошли мимо и нашли время посоветовать!!!
Программа на атмеге успевает ложить в регистр SPDR данные за один период тактовой частоты SPI.
Зато нащупал в инете такой документ: AVR151. Setup And Use of the SPI. И там написано, что пока идут клоки с мастера по SCK, слейв в регистр на передачу ничего не может положить. По этой причине и не работало. Обидно. Пришлось прерыванием наверх дергать, чтобы ведущий считал данные.
Желаю никому больше не наступать на эти грабли :-)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:09
Рейтинг@Mail.ru


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