Страница 1 из 1
Помогите связать ATMEGA16 и ATTINI2313
Добавлено: Чт фев 04, 2010 22:29:41
elf
Доброго времени суток, даже не знаю с чего начать:
Имеются две ATTINI2313 и ATMEGA16 , есть небольшой опыт программирования на Си.
И есть конкретная задача:
(один ATTINI2313 управляет выходным напряжением блока питания
при помощи ШИМ.
второй ATTINI2313 крутит шаговый двигатель.
ATMEGA16 подключена к компъютеру через UART.) -зто все работает но по одельности.
Я же хочю что-бы Атмегой 16 можно было управляь этим блоком питания и двигателем.Помогите мне их связать , по какому интерфейсу? Вроде как SPI надо использовать. Но с чего начать не знаю ?
Всем спасибо!
Добавлено: Чт фев 04, 2010 22:31:23
Labus
оформлено на 5 с +
Добавлено: Чт фев 04, 2010 23:44:44
12val12
ÿ áû ïîðåêîìåíäîâàë
ñâÿçàòü èõ ïî.. UART..äà äà
òàê êàê àïïðàòíûé UART ATMEGA16 çàíÿò
ñäåëàé ñîôòîâûé íà ïåðåäà÷ó..
ÝÒÎ ÍÅÑËÎÆÍÎ.íàäî ïðîñòî âñïîìíèòü ïðòîêîë
âîçìîæíî åñòü íåáîëüøàÿ îøèáêà..ëþäè ïðîâåðÿò
Добавлено: Пт фев 05, 2010 15:14:09
Danko
Если програмно реализовывать протокол то почему именно UART с таким же успехом можно связать все три устройства по I2C или по однопроводному 1-wire.
А вообще очень мало информации.
Где тип
процессора ПК? какая материнка?
Да и вообще какого цвета системный блок?

Добавлено: Пт фев 05, 2010 18:51:22
elf
Процессор Атлон 3000 Материнка АСУС к8н- а зачем это???
Согласен что можно по I2C и 1-wire. Но сразу вопрос будут ли две
ATTINI2313 самостоятельно передавать информацию или их надо опрашивать Атмегой16 - это важно.
Добавлено: Пт фев 05, 2010 18:53:44
Meteor
Стыкуйте по SPI. Начинать надо с систематизации принимаемой и передаваемой информации на каждый МК. На основе этих данных формируете протокол обмена, разрабатываете программу. Заливаете и отлаживаете в железках.
Добавлено: Пт фев 05, 2010 19:14:20
>TEHb<
А есть ли какой-нибудь суперасинхронный протокол? Нужно нечто подобное, только ведомых контоллеров от четырёх до восьми, и в каждом могут совершенно непресказуемо образовыватся прерывания. Теоритически прерывания можно упорядочить без особого ущерба алгоритма работы устройства.
Добавлено: Пт фев 05, 2010 19:45:38
Meteor
Для >ТЕНЬ<, а зачем асинхронный протокол? Кому как но сам предпочитаю синхронные протоколы типа SPI. Единстенно нужно исключать обработку пустых сообщений от адресата. А определять передачу "Васе или Гале" можно по флагам.
Добавлено: Пт фев 05, 2010 19:56:28
>TEHb<
а у меня прерывание может прямо посреди передачи возникнуть, сначала планировал вообще 1-wire.
Добавлено: Пт фев 05, 2010 19:57:48
Meteor
Длина посылки в одну точку какая? Да и собстенно какая разница? Протокол синхронный. Ведущий прервался, но сигнал выбора не снял, аппаратно байт выдует до конца. Ведомый его примет и будет ждать чего ему еще скажут. Ведущий выйдя из прерывания завершит свой диалог с ведомым, снимет сигнал выбора и пусть там ведомый уже обкатывает что ему на уши повесили.
Добавлено: Пт фев 05, 2010 22:33:33
elf
а в ATTINI2313 есть SPI?Наверное есть). Что-то я не могу понять
пользуюсь мастером CVAVR.Как выбрать чтобы чип Slave был?
У меня такой код генерит
(
// Universal Serial Interface initialization
// Mode: Three Wire (SPI)
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x10;
)
Добавлено: Сб фев 06, 2010 14:37:35
>TEHb<
А разве ведущий/ведомый это не условность? Вроде который начал передачу тот и ведущий. У себя бы я их вообще по 232 связал, да вот только посылка у меня занимает минимум 4 байта, чтобы работал буфер надо отключать прерывания, чего делать ну никак нельзя
Добавлено: Сб фев 06, 2010 15:21:56
Meteor
При обмене по SPI ведущим может выступать один МК, ведомых может быть масса, которая легко расширяется до большего размера. Протокол синхронный и тактовый сигнал (SCK) генерится ведущим. В его присутствии ведущий выдает в линию (MOSI) данные, а по линии (MISO) принимает данные от выбранного сигналом (#SSi) ведомого.
Ни один ведомый не может начать передачу без разрешения ведущего. В общем виде (во временном разрезе) получается что ведущим указывается новая задача ведомому, в то время как ведомый сообщает результат полученный на предыдущую команду (посылку длиной N байт).
Подобные протоколы хороши в распределенных системах, где есть центральный узел и куча периферийных подузлов, например, когда один МК принимает данные от ПК и раздает на несколько устройств управления ШД, отрабатывающих перемещение в своих координатах.
Что касается протокола RS232 то конечно он асинхронен, но получить простым соединением в звезду такой "сетки" , без лишних деталей, невозможно