anonymous@RULINUX.NET~# Last login: 2024-12-23 11:44:51
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

[hardware][avr] Один UART - два переферийных устройства

Как можно подключить два одинаковых перифирийных устройства на один UART? С обоих концов AVR контроллеры, на хосте ATmega8535, на переферийных устройствах ATtiny2313. У меня пока две идеи:

1. Вывести ещё какой-нибудь сигнал в качестве чип-селекта. И в программе смотреть на этот сигнал, прежде чем ответить на запрос.

2. На программном уровне определять кому адресован пакет. TX слушают оба устройства, а по RX передаёт только то, чей адрес был в переданном пакете.

Может я тут изобретаю велосипед и всё уже давно придумано и проделано?

anonymous(*) (2010-09-27 20:49:00)

[Ответить на это сообщение]
avatar
Скрыть

Re: [hardware][avr] Один UART - два переферийных устройства

Обычно примерно так: устройства связаны меж собой общей шиной. Говорящее с компом устройство выставляет на ней 1, и в это время все остальные должны заткнуться. Если комп инициирует соединение, он высылает адресный пакет (специфический префикс + адрес), который вынуждает активировать шину то устройство, которому он адресован, а все остальные этот пакет игнорируют. Устройство будет держать шину пока болтает с компом. Выводить из компа сигнал CS - дурное дело, зачем лишний порт городить? Или глянь i2c

bugmaker(*)(2010-09-27 22:06:46)

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100407 Ubuntu/9.04 (jaunty) Shiretoko/3.5.9
avatar
Скрыть

Re: [hardware][avr] Один UART - два переферийных устройства

> я тут изобретаю велосипед
Для межконтроллерной связи у атмела есть и более другие средства.

Про ATtiny2313 и 35ю мегу пишут что они имеют "2-wire Serial Interface (I2C compatible)" - это наиболее подходящий для тебя протокол.

Только для

> TX слушают оба устройства, а по RX передаёт только то, чей адрес был в переданном пакете.
тебе всё равно извращаться придётся или брать софтверную имплементацию I2C или вешать все тини на один адрес I2C и потом вшивать в формат пакета поле под твою собственную адресацию или адресовать их как отдельные регистры

Плюс у атещё есть SPI на общей шине, адресация чип-селектом (CS) - он наверное не для твоих целей.

HEBECTb_KTO(*)(2010-09-28 01:59:03)

Opera/9.80 (X11; Linux x86_64; U; en) Presto/2.6.30 Version/10.61
avatar
Скрыть

Re: [hardware][avr] Один UART - два переферийных устройства

> Про ATtiny2313 и 35ю мегу пишут что они имеют "2-wire Serial Interface (I2C compatible)"
Это я знаю, но у меня на 2313 порт B, на который и выведен spi/i2c, весь занят на вывод.

anonymous(*)(2010-09-28 10:36:47)

Mozilla/5.0 (X11; U; Linux; ru-ru; rv:1.9.0.2) Gecko/2008092313 Firefox/3.8 Midori/0.2
avatar
Скрыть

Re: [hardware][avr] Один UART - два переферийных устройства

Освободи I2C-шные ножки под свои задачи либо юзай какую-нить софтверную имплементацию протокола на любых ножках.

HEBECTb_KTO(*)(2010-09-28 11:28:29)

Opera/9.80 (X11; Linux x86_64; U; en) Presto/2.6.30 Version/10.61
avatar
Скрыть

Re: [hardware][avr] Один UART - два переферийных устройства

Не, UART ещё хорош тем, что я смогу с компа управлять/отлаживаться без особых дополнительных средств. Система модульная, и надо быстрее сделать модули на 2313, а управлять ими можно будет и с компа. Поэтому UART.

anonymous(*)(2010-09-28 11:39:14)

Mozilla/5.0 (X11; U; Linux; ru-ru; rv:1.9.0.2) Gecko/2008092313 Firefox/3.8 Midori/0.2
avatar
Скрыть

Re: [hardware][avr] Один UART - два переферийных устройства

Модульные устройства и нужно строить на основе стандартных протоколов. А для компа тоже вроде существуют разнообразные I2Cшные адаптеры, если почему-то недьзя общаться с периферией через мегу.

HEBECTb_KTO(*)(2010-09-28 14:15:38)

avatar
Скрыть

Re: [hardware][avr] Один UART - два переферийных устройства

Всё уже придумано до нас (ц)

Читаем ман по атмеге:

Multi-processor Communication Mode

Setting the Multi-processor Communication Mode (MPCM) bit in UCSRA enables a fil- tering function of incoming frames received by the USART Receiver. Frames that do not contain address information will be ignored and not put into the receive buffer. This effectively reduces the number of incoming frames that has to be handled by the CPU, in a system with multiple MCUs that communicate via the same serial bus.

anonymous(*)(2010-10-15 22:35:56)

Mozilla/5.0 (X11; U; Linux; ru-ru; rv:1.9.0.2) Gecko/2008092313 Firefox/3.8 Midori/0.2
Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!