Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR XMEGA SMP
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
aquinas
Доброго всем времени суток. Разрабатываю проект многоканального даталоггера.

Одновременная работа заключается в том, что каждый из энного количества МК принимает данные по UART от внешнего устройства в реальном времени и поочередно сбрасывает их на SD-карту в один и тот же файл, работать с картой памяти может только один МК одновременно, в это время остальные сохраняют данные в ОЗУ, как только один из контроллеров закончил записывать данные, следующим становится тот у которого данных больше.

Проект пока на стадии "мысли и бумаги", хочу спросить как лучше: все МК соеденить по SPI и карту памяти туда же посадить или же выделить для карты памяти отдельный МК, который будет обслуживать карту и опрашивать остальные МК по другой шине, например по TWI?

Микроконтроллеры будут ATXMega256 (из-за большого объема памяти, в которой будет храниться проприетарный протокол для обмена с внешними устройствами).
RabidRabbit
Если МК <= 8, я бы взял для арбитража счётчик и дешифратор 3 на 8, выходы дешифратора завёл на входы INT МК, с каждого МК по одной ноге соединил в монтажное ИЛИ и подключил ко входу тактового сигнала счётчика. МК по прерыванию пишет (или не пишет, если нечего) на SD карту, после чего дёргает тактовый сигнал счётчика. Да, в таком случае SPI всех МК и SD карты соединены. По-моему вполне себе дубовое решение, освобождающее от конфликтов sm.gif И если количество МК не кратно степени 2, ещё нужна схема сброса счётчика, когда он досчитает до числа, равного количеству МК. По сегодняшней моде такого "арбитра" наверно можно спокойно запихать в мелкую CPLD.
alexeyv
какая скорость потока данных по USART?
какое количество USART? на каждом по одному или один USART на всех?
какой характер потока данных по USART? постоянная скорость или тишина, а потом взрывной всплеск или что то еще?
какая скорость записи в SD-карту?
каким образом они будут писать в один и тот же файл? в смысле откуда общий указатель/дескриптор на место записи? или открывать/закрывать постоянно? нужна ли вообще файловая система? может проще писать каждому МК в свой файл?
Цитата
как только один из контроллеров закончил записывать данные, следующим становится тот у которого данных больше.

то есть порядок приема байтов по USART в файле на SD-карте нарушается?

что то устал задавать вопросы..........

Для одного USART в системе
Арбитр совсем не нужен. Все МК объединяются в кольцо. МК который наполнил свой буфер, передает сигнал (маркер) следующему МК
, который заполняет свою память и так далее по кольцу. С записью в SD-карту аналогично, при окончании записи подается сигнал следующему МК
В качестве маркера можно использовать выходной пин сцепленный с пином на прерывания на другом МК. Для предотвращения постоянного бегания по кольцу маркера записи в SD-карту когда нет данных для записи - условие наличия обоих маркеров в одном и том же МК.

алгоритм взят из стандарта TokenRing.

Для нескольких USART алгоритм можно модифицировать, но принцип тот же
jcxz
Цитата(aquinas @ Dec 17 2014, 23:06) *
хочу спросить как лучше: все МК соеденить по SPI и карту памяти туда же посадить или же выделить для карты памяти отдельный МК, который будет обслуживать карту и опрашивать остальные МК по другой шине, например по TWI?

Выкинуть мелочёвку. Сделать на более взрослом МК с несколькими UART.
jhm
Поддерживаю. Лучше взять большой МК с нужным количеством UART
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.