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

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

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

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

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

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

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

 
Опции темы
Непрочитано 16.01.2013, 19:02  
pavned
Прописка
 
Регистрация: 25.10.2012
Сообщений: 112
Сказал спасибо: 50
Сказали Спасибо 1 раз в 1 сообщении
pavned на пути к лучшему
По умолчанию Atmega16 - много переферийных устройств SPI

Доброго времени суток.
Нужно получить регулирумую с компьютера синусоиду (частота, фаза, амплитуда), применил для этого микросхему dds AD9834.
Вот картинка с Circuit Note CN-0156 (Как выполнять контроль амплитуды на этом dds) от того же Analog Devices:

В общем, рекомендуется это делать с помощью дополнительного ЦАП - увеличиваем напряжение ЦАП - уменьшаем амплитуду синусоиды.
Эти устройства работают по интерфейсу SPI. Таких генераторов синусоид с контролем амплитуды нужно 4 шт, их нужно подключить к одному микроконтроллеру Atmega16. Т.е. (всего 4х3+4х3=24) количество используемых ножек можно как-то уменьшить?
Вся проблема в том, что у этих устройств (dds ad9834 и dac ad5620) нет пина SS, т.е. как я понимаю, не получится подключить всё к трем выходам микрокантроллера (MOSI,MISO,SCK)+SS пин для каждого дополнительного устройства.
Как решить проблему? Может существуют какие-то промежуточные элементы с ~12 входами (3 SPI, остальные SS1, SS2, ...) и ~50 выходами, которые бы работали по интерфейсу SPI, но вход был бы с пином SS, а выход на соответствующие 3 выходные пина?
Можно, конечно, увеличить количество атмег... что посоветуете?
К тому же, несколько реализаций программного SPI... с учетом того, что аппаратный SPI будет задействован в другом деле как Slave... что посоветуете?
Может ли 1 Атмега16/32 работать по интерфейсу SPI на одни выходы как Master, на другие как Slave? Spi оба программные, или 1 программный, один аппаратный.
Кстати, как реализовать программный SPI? Для сигнала SCLK нужно таймер использовать? Можно ли создать несколько программных SPI (например 4 или лучше 8 ) на разных пинах Атмега16/32 (МК как Master), при этом один таймер использовать для всех четырех программных SPI? (исходя из того, что в атмеге 3 таймера, а один-два могут еще в другом деле понадобится)
Реклама:

Последний раз редактировалось pavned; 16.01.2013 в 19:05.
pavned вне форума  
Непрочитано 16.01.2013, 19:20  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Сообщение от pavned Посмотреть сообщение
у этих устройств (dds ad9834 и dac ad5620) нет пина SS
У AD9834 есть пин FSYNC, а у AD5620 есть пин SYNC, которые выполняют функции Chip Select: т.е. запись в чип по SPI возможна только при нуле на этих пинах.
Yurkin2007 вне форума  
Сказали "Спасибо" Yurkin2007
pavned (16.01.2013)
Непрочитано 16.01.2013, 19:24  
pavned
Прописка
 
Регистрация: 25.10.2012
Сообщений: 112
Сказал спасибо: 50
Сказали Спасибо 1 раз в 1 сообщении
pavned на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Сообщение от Yurkin2007 Посмотреть сообщение
У AD9834 есть пин FSYNC, а у AD5620 есть пин SYNC, которые выполняют функции Chip Select: т.е. запись в чип по SPI возможна только при нуле на этих пинах.
С первым вопросом ясно, спасибо!

Из AD9834 datasheet:
The FSYNC input is a level triggered input that acts as a frame synchronization and chip enable. Data can only be transferred into the device when FSYNC is low. To start the serial data transfer, FSYNC should be taken low, observing the minimum FSYNC-to-SCLK falling edge setup time...

Из AD5620 datasheet:
The write sequence begins by bringing the SYNC line low. Data from the DIN line is clocked into the 16-bit shift register (AD5620/AD5640) or the 24-bit shift register (AD5660) on the falling edge of SCLK....

В общем, FSYNC и SYNC действуют и как выбор чипа. Итого - 8 пинов на SS, 2 пина на SCK и SDATA общие для всех.

Актуален вопрос насчет реализации программного SPI. Ввиду того, что SPI растягивается на 10 пинов, как дело это инициализировать? SCLK сигналы будет создавать счетчик/таймер? У кого-то есть готовые функции под CVavr ?

Последний раз редактировалось pavned; 16.01.2013 в 19:28.
pavned вне форума  
Непрочитано 16.01.2013, 19:50  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

SPI - шустрый интерфейс, у AD9834 минимальный такт = 20нс, что явно быстрее, чем Ваш МК. То есть пишите программный SPI прямо как есть, в лоб, никаких прерываний/таймеров не нужно.
Цитата:
1. SCLK = 1
2. FSYNC= 0
3. SDATA[15] -› выход
4. SCLK = 0
5. SCLK = 1
6. SDATA[14] -› выход
7. SCLK = 0
8. SCLK = 1
и т.д.
.
.
.
FSYNC=1
Yurkin2007 вне форума  
Непрочитано 16.01.2013, 21:47  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Сообщение от pavned Посмотреть сообщение
Актуален вопрос насчет реализации программного SPI. Ввиду того, что SPI растягивается на 10 пинов
Программный СПИ отъест ещё больше ног, т.к. вместо 8 ног CS нужно выделить 16 ног Clock и Data

Погугли 74HC595
niXto вне форума  
Непрочитано 16.01.2013, 22:02  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

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

Сообщение от niXto Посмотреть сообщение
Программный СПИ отъест ещё больше ног, т.к. вместо 8 ног CS нужно выделить 16 ног Clock и Data
Да программно на кучу SPI Количество ног = CS + CLCK + N, где N число SPI - они ж параллельно все работать будут
Boba_spb вне форума  
Непрочитано 16.01.2013, 22:10  
pavned
Прописка
 
Регистрация: 25.10.2012
Сообщений: 112
Сказал спасибо: 50
Сказали Спасибо 1 раз в 1 сообщении
pavned на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Сообщение от niXto Посмотреть сообщение
Программный СПИ отъест ещё больше ног, т.к. вместо 8 ног CS нужно выделить 16 ног Clock и Data

Погугли 74HC595
Почему? загрузка данных будет последовательная, т.е. я не собираюсь одновременно задание во все устройства грузить, поэтому нет необходимости под каждое устройство SPI инициализировать. 2 общих пина Clock и Data подключены ко всем устройствам, в SS к каждому устройству свой. И выбираем с каким работать, притягивая соответствующий SS к земле.

Я понимаю, что Вы это знали еще лет 15 назад, я описал как сам это вижу Критика приветствуется!!!

Сообщение от whoim Посмотреть сообщение
а зачем программный? программные же только ноги cs, их можно и вправду на hc595 положить, а в остальном юзать аппаратный спи?
Ну 8 ног я еще могу выделить

Дело в том, что этот Atmega16 сам является Slave'ом в сети из Master'a Atmega32 и нескольких Atmega16. Между ними связь задумана по SPI. Или может лучше использовать UART, I2C? Проводов между слейвами быть не должно (в смысле напрямую, все общение через мастера).

Нельзя же одновременно выступать в одной сети как слейв, в другой сети как местер на одних и тех же пинах? Да ну, даже если и можно, путать все это...
pavned вне форума  
Непрочитано 16.01.2013, 22:10  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Если вот так делать, то потребуется всего 5 ног
Миниатюры:
Нажмите на изображение для увеличения
Название: kazus_MultSPI.PNG
Просмотров: 187
Размер:	15.4 Кб
ID:	42374  
Yurkin2007 вне форума  
Сказали "Спасибо" Yurkin2007
pavned (16.01.2013)
Непрочитано 16.01.2013, 22:39  
whoim
Почётный гражданин KAZUS.RU
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,620
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Atmega16 - много переферийных устройств SPI

Сообщение от pavned Посмотреть сообщение
Да ну, даже если и можно, путать все это...
я бы уарт/485 оставил для сетки
whoim вне форума  
 

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

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

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, время: 22:51.


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