Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 23.01.2010, 23:31  
Pavel_xx
Частый гость
 
Регистрация: 07.12.2009
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
Pavel_xx на пути к лучшему
По умолчанию ATmega48-ATmega32 связь по SPI

В данной теме приводится пример связи микроконтроллеров ATmega48 и ATmega32 по интерфейсу SPI
Реклама:
Pavel_xx вне форума  
Непрочитано 23.01.2010, 23:42  
Pavel_xx
Частый гость
 
Регистрация: 07.12.2009
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
Pavel_xx на пути к лучшему
По умолчанию Re: ATmega48-ATmega32 связь по SPI

Добрый день всем.
Привожу тут свой пример для связи двух микроконтроллеров типа ATmega по интерфейсу SPI.

В данном примере МК ATmega48 является ведущим (master), а ATmega32 - ведомым (slave).
Оба МК работают на частоте 8 МГц.
Для индикации и тестирования программы к МК ATmega48 дополнительно подключен двухразрядный семисегментный индикатор (общий катод).
С той же целью к МК ATmega32 подключен LCD MT-16S2D.

В прикрепленных файлах есть все исходники и файл проекта в Proteus.
Миниатюры:
Нажмите на изображение для увеличения
Название: atm48_32__spi.jpg
Просмотров: 583
Размер:	145.2 Кб
ID:	3933   Нажмите на изображение для увеличения
Название: P1030460.jpg
Просмотров: 313
Размер:	412.4 Кб
ID:	3934  
Вложения:
Тип файла: rar atm48_mstr_spi.rar (44.6 Кб, 545 просмотров)
Тип файла: rar atm32_slv_spi.rar (43.0 Кб, 412 просмотров)
Тип файла: rar Proteus_files.rar (15.6 Кб, 347 просмотров)
Pavel_xx вне форума  
Эти 2 пользователя(ей) сказали Спасибо Pavel_xx за это сообщение:
gres_go (06.07.2012)
Непрочитано 30.01.2010, 17:12  
Fan79
Временная регистрация
 
Регистрация: 10.11.2007
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Fan79 на пути к лучшему
По умолчанию Re: ATmega48-ATmega32 связь по SPI

Спасибо давно искал эту тему
Fan79 вне форума  
Непрочитано 02.02.2010, 19:09  
janjet
Прохожий
 
Регистрация: 22.06.2009
Сообщений: 5
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
janjet на пути к лучшему
По умолчанию Re: ATmega48-ATmega32 связь по SPI

А кто нибудь в курсе на какое расстояние будет в таком случае работать SPI?
Хочу связать два контроллера метра 3-4
Сомневаюсь будет ли работать
janjet вне форума  
Непрочитано 03.02.2010, 11:50  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию Re: ATmega48-ATmega32 связь по SPI

Нет, работать не будет.
Для работы SPI используют частоту работы проца деленная на предделитель, по-моему до 128. При работе проца под 8Мгц или даже 16Мгц, сами понимаете скорость потока данных через "ШНУРОК". SPI по спецификации - внутресхемный интерфейс - внутри одной платы. И не надо его разносить на 3 метра.
Переходи на USART or UART.
Там все очень просто. Не хуже чем на SPI.
Идея та же. В один буфер запихиваешь то что отправить - со второго читаешь что получил.
Сделай еще один пин для общего отключения UART, скорее для ручного обнуления его буфера по таймеру. Так же это поможет отследить начало фрейма.
Правда будет гемор на счет прерывания. - если сделаешь ввод на слейв по сходу Int'n' тогда будет проще:
выставил мастером на эту ногу слейву единицу - в слейва будет начата процедура прослушивания UART, и начинаешь обмен данными мастером.
Разрешаешь прерывания от приемника UART и от переполнения таймера. После каждого приема байта по прерыванию от приемника UART обнуляешь таймер, который настроенный на прием в общей сложности 8-м бит + задержка. Все принятые байты пихаешь в общий стек - желательно программный - "свой". Если происходит прерывание от таймера - все, весь набор байтов принят, его можно обработать.

Наилучший вариант - ищи исходники MODBUS RTU для мастера и слейва под мегу. Когда-то находил... гугл знает все.
Там все очень просто, но... даже есть проверка по четности на ошибки и не только. Описал для каждого МК таблицы переменных и все - дал слейву команды типа:
"номер слейва" "идентификатор команды" "пачка байт данных" "проверка срс"
или
слейв номер "1" запиши себе значения 20-ти байт начиная с адреса №4001 и соответственно эти 20 байт данных + проверка на четность.
После отправки такого меседжа просто проверил ответ слейва. Он вернет тоже самое, только с установкой "1" на самом начале фрейма.
ua_gruzin вне форума  
Сказали "Спасибо" ua_gruzin
janjet (04.02.2010)
Непрочитано 04.02.2010, 12:08  
janjet
Прохожий
 
Регистрация: 22.06.2009
Сообщений: 5
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
janjet на пути к лучшему
По умолчанию Re: ATmega48-ATmega32 связь по SPI

Однако попробую просто чтоб убедится
Шнурок программирования на 1.5 метра работает всё таки
janjet вне форума  
Непрочитано 14.02.2010, 20:29  
grisha109
Частый гость
 
Регистрация: 19.05.2009
Сообщений: 17
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
grisha109 на пути к лучшему
По умолчанию Re: ATmega48-ATmega32 связь по SPI

Глядя на представленный в этой теме пример решил сделать аналогичный вариант, но так что бы информация передавалась в обоих направлениях т.е. как от masterа к slave так и от slave к master.
Мне нужно что бы один МК передавал другому некоторое число и получал в ответ от него другое число. Написал прогу в CodeVision и смоделировал это дело в протеусе, но первый байт данных от слейва к мастеру упорно не передается а все последующие проходят Код и модель прикреплены. Подскажите что делаю не так?
Миниатюры:
Нажмите на изображение для увеличения
Название: модель.jpg
Просмотров: 311
Размер:	514.4 Кб
ID:	4576  
Вложения:
Тип файла: rar Proteus model.rar (12.5 Кб, 193 просмотров)
Тип файла: rar mega 644 + lcd MASTER.rar (49.7 Кб, 226 просмотров)
Тип файла: rar mega 644+lcd s SLAVE.rar (46.1 Кб, 199 просмотров)
grisha109 вне форума  
Непрочитано 16.02.2010, 16:50  
Igor_w77
Прохожий
 
Регистрация: 01.07.2004
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Igor_w77 на пути к лучшему
По умолчанию Re: ATmega48-ATmega32 связь по SPI

Неужели никто не знает!!!
я боролась с этой проблемой неделю и бесполезно, нашел только вот это:

"В направлении передачи данных система выполнена как однобуферная, а в направлении приема используется двойная буферизация. Это означает, что передаваемые байты не могут быть записаны в регистр данных SPI, прежде чем полностью завершится цикл сдвига. Во время приема данных необходимо следить, чтобы принятая посылка была считана из регистра данных SPI, прежде чем завершится цикл входящего сдвига новой посылки. В противном случае первый байт будет потерян."

Но как это реализовать на «С» я не знаю.

Подскажите, пожалуйста!!!
Igor_w77 вне форума  
Непрочитано 16.02.2010, 18:06  
RY723
Заблокирован
 
Регистрация: 08.08.2007
Сообщений: 2,843
Сказал спасибо: 378
Сказали Спасибо 1,368 раз(а) в 746 сообщении(ях)
RY723 на пути к лучшему
По умолчанию Re: ATmega48-ATmega32 связь по SPI

Сообщение от Igor_w77 Посмотреть сообщение
Но как это реализовать на «С» я не знаю.
А что требуется реализовать? Какая разница С или asm. Главное - алгоритм. В атмегах всё очень просто, работаешь или по прерываниям (это когда одновременно несколько задач выполняются) или по флагам. В даташите примеров достаточно.
RY723 вне форума  
Непрочитано 17.02.2010, 13:28  
Igor_w77
Прохожий
 
Регистрация: 01.07.2004
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Igor_w77 на пути к лучшему
По умолчанию Re: ATmega48-ATmega32 связь по SPI

Спасибо за ответ.
Даташит я изучал, там описан пример и на «с» и на «asm», передачи от мастера к слейву а мне надо наоборот!!! Надо чтобы по запросу мастера, слейв передал данные.
Делаю все точно как описано, но передаю обратно и теряю первый бит!!!
Да, а когда передает мастер то все в порядке.
Вот в чем загвоздка!!!!!!
Без подсказки мне не разобраться.
Igor_w77 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Однокристальные трансиверы TRC101 от RFM... Panchiks Автоматика и аппаратура связи 340 15.05.2017 21:10
Простейший программатор SPI EEPROM dimmich Микроконтроллеры, АЦП, память и т.д 6 09.08.2010 23:08
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03


Часовой пояс GMT +4, время: 22:15.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot