|
|
  |
Быстрый обмен между Atmega ( SPI ? ) |
|
|
|
Jun 6 2009, 12:11
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 16-04-09
Пользователь №: 47 790

|
Всем Привет. Недавно стал работать с микроконтроллерами Задача такова. Имеются два Atmega16 (для примера). Нужно организовать быстрый обмен между ними. Размер пакетов максимум 30 byte. с частотой 20 микросекунд. Как я понимаю самый быстри обмен будет через SPI ? Если Spi работает с частатой 4000 kHz , то через сколко количество тактов удастя передать 1 Byte. Могу поменять Мк на более быстрый если надо. Спасибо.
|
|
|
|
|
Jun 7 2009, 05:49
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 16-04-09
Пользователь №: 47 790

|
Цитата(Олег Хохлов @ Jun 7 2009, 08:17)  ну так один байт будет передаваться минимум 2 микросекунды. а 30 байт соответственно - минимум 60 микросекунд. и сделать быстрее на данной архитектуре нереально (частота SPI-slave максимум - CLK/4, то есть у вас выбрана уже максимально возможная для CLK=16MHz). Понятно . спасибо большое!
Причина редактирования: Излишнее цитирование.
|
|
|
|
|
Jul 6 2009, 06:04
|
Частый гость
 
Группа: Участник
Сообщений: 80
Регистрация: 3-07-09
Пользователь №: 50 897

|
Цитата(Олег Хохлов @ Jun 7 2009, 08:17)  у меня в нескольких проектах используется обмен между основной mega16 или mega128 и подчиненной tiny2313 или mega162 по SPI. мороки программной с этим прилично... отладка была сложной.... подчиненная полностью написана на ассемблере чтоб успевала что-то сделать с приходящими байтиками и еще на фоне выполняла свою задачу (2 UART с буферизацией на tiny2313 и 4 UART на mega162)... У меня получалось подчиненную и на С написать, но мороки тоже было нереально много. Малейшая задержка, и слейв не успевает среагировать на пришедший байт, данные потерялись. Положительный момент в том, что пока писал данный алгоритм на С, пришлось очень хорошо разобраться в GCC
|
|
|
|
|
Jul 6 2009, 06:26
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата Можно попробовать параллельный 8-ми битный, но тогда точно все на асме писать придеться. Почему сразу на асме? Положить в порт байт и дернуть ногой МК можно и на С.
--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
|
|
|
|
|
Jul 6 2009, 06:46
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата(head_sk @ Jul 6 2009, 10:40)  Можно и на С конечно, просто хотел скрыто способствовать тому, чтобы человек выучил ассемблер. Для того что бы покорить контроллер, сперва нужно покорить его ассемблер, раньше я этого не понимал, сейчас считаю, это истиной.  Эх, зачем изучать ассемблер, если контроллеры меняются через каждый год? Портирование проектов на С в разы быстрее чем на асме. Ассемблер скоро отомрет как вид)))) Им будут пользоваться только разработчики компиляторов.
--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|