Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Многопроцессорные системы
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
fakel
Здравствуйте!
Хотелось бы узнать мнение разных людей по следующему вопросу.
Имеется многопроцессорная система (два платы: одна опрашивает оборудование, решает пару математических задач и записывает в RAM (по I2C) (Назавем его Процессорый модуль) второй платы. Во второй плате реализован MODBUS, что позволяет с удаленной машины считывать данные из RAM (Назавем его Модуль передачи данных)) Возникает следующая проблема: если зависает Процессорый модуль, в RAM Модуля передачи данных остается информация записанная туда Процессорным перед зависанием. Комп считывает данные из Модуля передачи данных как будто все нормально! (питание то на Модуле передачи данных осталось). Вопрос: как можно этого избежать?!

Я предлагаю следующее: Процессорый модуль постоянно изменяет 1 байт в RAM Модуля передачи данных (например банальный счетчик). Комп считывает RAM, смотрит изменяется ли этот байт (т.е. теперешнее значение отличается от предыдущего или нет) и если в течении 5 циклов значение не изменяется, то Процессорый модуль завис (ну или питание на нем пропало).

Может существует какой-то уже отработанный метод?!
Так же рад был бы узнать ваше мнение.

(Код меня не очень интересует smile.gif, напишу как-нибудь сам... интерес подход))))

Заранее спасибо!!!

P.S. Думал так же о том, чтобы снабжать данные временными метками... но в реализации это сложнее.
Dog Pawlowa
Отработанный метод - это как сброс WDT - импульсы длительностью не более заранее определенной.
При переводе на программные средства достаточно одного бита - он должен инвертироваться не позже, чем определенной время.
Все остальное - от лукавого и ограничивается только фантазиями программиста.
EugeNNe
В моей двухпроцессорной системе два проца общаются между собой. Проводят "мягкую синхронизацию" в определённых точках программы, обмениваются диагностической информацией.
_Pasha
Ввести в обиход понятие "время жизни принятых от проца данных".
fakel
Цитата(_Pasha @ May 16 2008, 13:42) *
Ввести в обиход понятие "время жизни принятых от проца данных".

Как вариант да...
Прикинул по реализации, примерно столько же, как и на флаг обновления.
SasaVitebsk
Каждый микропроцессор должен размещать в ОЗУ свой статус.
В этом статусе должны передаваться на ПК интересующие данные. Например - Время последней записи, наличие ошибок (При срабатывании WDT), текущий режим работы - ну и так далее.
Nick_Shl
Цитата(fakel @ May 16 2008, 09:09) *
Имеется многопроцессорная система (два платы: одна опрашивает оборудование, решает пару математических задач и записывает в RAM (по I2C) (Назавем его Процессорый модуль) второй платы. Во второй плате реализован MODBUS, что позволяет с удаленной машины считывать данные из RAM (Назавем его Модуль передачи данных)) Возникает следующая проблема: если зависает Процессорый модуль, в RAM Модуля передачи данных остается информация записанная туда Процессорным перед зависанием. Комп считывает данные из Модуля передачи данных как будто все нормально! (питание то на Модуле передачи данных осталось). Вопрос: как можно этого избежать?!
Я конечно не спец, но мне кажется что идеология какая-то не правильная... А если комп опрашивать будет быстрее чем ПМ будет выдавать? По несколько раз одни и те же данные будем получать?
Как вариант завести флаг обновления. При записи ПМ в память определённую ячейку ставить в 1. А при пересылке на комп МПД будет её сбрасывать в 0. Правда в случае работы ПМ быстрее опросов - часть данных будет пропадать.
Кстати, можно подробнее как оно сделано? Не на одну же микросхему памяти два устройства повешены...
defunct
Цитата(Nick_Shl @ May 16 2008, 12:41) *
Кстати, можно подробнее как оно сделано? Не на одну же микросхему памяти два устройства повешены...

А разве есть препятствия?
По i2c можно хоть 10 мастеров на 1 слейв.
SasaVitebsk
Цитата(Nick_Shl @ May 16 2008, 12:41) *
Я конечно не спец, но мне кажется что идеология какая-то не правильная...

Идеология вполне нормальная. По крайней мере не вижу никаких серьёзных перекосов. Короче - один из вариантов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.