Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

Atmega16 - много переферийных устройств SPI

Непрочитано 16.01.2013, 22:47  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Рисую плохо, я б так 8 SPI сделал и параллелно сразу 8 SPI грузил - и быстро и синхронно все будет
Миниатюры:
Нажмите на изображение для увеличения
Название: 111.JPG
Просмотров: 58
Размер:	19.5 Кб
ID:	42378  
Реклама:
Boba_spb вне форума  
Непрочитано 16.01.2013, 23:45  
pavned
Прописка
 
Регистрация: 25.10.2012
Сообщений: 112
Сказал спасибо: 50
Сказали Спасибо 1 раз в 1 сообщении
pavned на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Сообщение от Boba_spb Посмотреть сообщение
Рисую плохо, я б так 8 SPI сделал и параллелно сразу 8 SPI грузил - и быстро и синхронно все будет
спасибо за картинку, так себе и представлял.

что скажете насчет реализации SPI? какие бы функции использовали?

Сообщение от whoim Посмотреть сообщение
я бы уарт/485 оставил для сетки
Спасибо за помощь.
Насчет RS485 все, что знаю - это теория: мультислейв (не точка-точка), 2 провода, полудуплекс, нейтрализация помех. Можете подсказать что-то насчет программной реализации? Какие функции использовать? Отличается RS485 от UART(насчет программы на микроконтроллере) ? Нужно использовать приемопередатчик, витую пару?

Последний раз редактировалось pavned; 17.01.2013 в 00:04.
pavned вне форума  
Непрочитано 17.01.2013, 00:17  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Да программные - какие там функции. ..

типа такого что нить

short SpiSendDat[8]; // это данные которые надо передать;

// а это передача
void SendToSpi()
{

unsigned char dat;
short mask=0x8000;
PORT2.1=0; // установка СS
for(int i=0;i‹16;i++)
{
dat=0;
for(int j=0;j=8;j++)
{
dat››=1;
if(SpiSendDat[i] & mask) dat|=0x80;
}
PORT1=dat; // установили данные
PORT2.0=1; // подняли CLCK
mask››=1; // двинули маску
PORT2.0=0; // опустили CLCK
}
PORT2.1=0; // сбросили CS
}
А если на АСМе вдумчиво написать, это вообще будет летать.
Boba_spb вне форума  
Сказали "Спасибо" Boba_spb
pavned (17.01.2013)
Непрочитано 17.01.2013, 01:33  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Сообщение от Boba_spb Посмотреть сообщение
я б так 8 SPI сделал
Оригинально, конечно. Только не гибко. Если мне надо только один SPI загрузить в данный момент, в остальные придётся параллельно единички запузыривать?
И потом, входы SYNC надо передёргивать всё равно, иначе прибор не почует загрузку нового слова. Значит ещё ноги надо добавлять ...
Yurkin2007 вне форума  
Непрочитано 17.01.2013, 09:26  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Каюсь, SYNC упустил, но это одна всего одна нога. Так не проблема единички писать. Зато все синхронно будет работать и довольно быстро.

Можно правда еще поизголяться, данные писать не в порт, а в регистр сдвига, а потом все одним CLCK ...

Так, примерно, светодиодные экраны работают. Там много чего последовательно, но параллельно заряжают - скорости большие нужны.
Boba_spb вне форума  
Непрочитано 17.01.2013, 10:24  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Сообщение от pavned Посмотреть сообщение
Почему? загрузка данных будет последовательная, т.е. я не собираюсь одновременно задание во все устройства грузить, поэтому нет необходимости под каждое устройство SPI инициализировать. 2 общих пина Clock и Data подключены ко всем устройствам, в SS к каждому устройству свой. И выбираем с каким работать, притягивая соответствующий SS к земле.
.....
Ну 8 ног я еще могу выделить
Примерно так и надо.
В app. notes тогда ещё Motorol'ы - видел способ экономии выводов для сигналов !CS (SS, FSYNC и т.п.). К шине SPI подключен 595-й регистр (2 вывода управления), а уже с него снимается до 8 сигналов выборки периферийных устройств.

Сообщение от pavned Посмотреть сообщение
Дело в том, что этот Atmega16 сам является Slave'ом в сети из Master'a Atmega32 и нескольких Atmega16. Между ними связь задумана по SPI. Или может лучше использовать UART, I2C? Проводов между слейвами быть не должно (в смысле напрямую, все общение через мастера).
Нельзя же одновременно выступать в одной сети как слейв, в другой сети как местер на одних и тех же пинах? Да ну, даже если и можно, путать все это...
ЕМНИП, USART может работать и как SPI. Т.о., Вы получите 2 аппаратных SPI в одном контроллере.
ForcePoint вне форума  
Непрочитано 18.01.2013, 21:47  
tanq
Гражданин KAZUS.RUN
 
Регистрация: 12.10.2009
Сообщений: 576
Сказал спасибо: 30
Сказали Спасибо 138 раз(а) в 110 сообщении(ях)
tanq на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Самый простой способ - поставить мультиплексор на линию CLK. Линию данных развести на все устройства, т.к. данные будут восприниматься только тем усройством, на который идет clk.
tanq вне форума  
Непрочитано 18.01.2013, 23:54  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Сообщение от tanq Посмотреть сообщение
Самый простой способ - поставить мультиплексор на линию CLK
Угу, ещё одну 74хх138. На входы А, В, С выбор канала, на ОЕ - клок. Придётся, правда, 8 pullup-ов поставить.
omercury вне форума  
Непрочитано 19.01.2013, 21:06  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Сообщение от tanq Посмотреть сообщение
Самый простой способ - поставить мультиплексор на линию CLK. Линию данных развести на все устройства, т.к. данные будут восприниматься только тем усройством, на который идет clk.
По-моему - фигня. !CS (SS, FSYNC и т.п.) - наше всё.
ForcePoint вне форума  
Непрочитано 21.01.2013, 11:48  
Wiza_
Гражданин KAZUS.RUN
 
Регистрация: 29.12.2012
Адрес: Питер
Сообщений: 980
Сказал спасибо: 131
Сказали Спасибо 230 раз(а) в 157 сообщении(ях)
Wiza_ на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Сообщение от pavned Посмотреть сообщение
Дело в том, что этот Atmega16 сам является Slave'ом в сети из Master'a Atmega32 и нескольких Atmega16. Между ними связь задумана по SPI.
Сорри, а что мешает один камушек побольше выбрать вместо кучки мелких ?
Wiza_ вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу совет - подключить несколько устройств SPI code-by Микроконтроллеры, АЦП, память и т.д 17 05.01.2012 20:53
Несколько устройств на SPI spballiance Микроконтроллеры, АЦП, память и т.д 17 17.03.2010 00:51
Atmega16, LCD, SPI sliam Микроконтроллеры, АЦП, память и т.д 8 26.04.2007 16:29


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.