[an error occurred while processing this directive] [an error occurred while processing this directive]
сырая идея.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Faith Healer 17 декабря 2001 г. 14:03
В ответ на: Подскажите простой алгоритм (+) отправлено Dimitry 17 декабря 2001 г. 12:35

имеет право на существование только при наличии у каждого контроллера 2 свободные ноги. Заключается в применении а-ля маркера + daisy chain.
Итак....
имеем 2 ноги вход/выход. У одного контроллера вход на землю, у последнего выход на землю(?). Это будет сделано при разводке схемы, т.е. всегда можно выбрать жестко первого и последнего.(но программа uC пока об этом ничего не знает)
После включения питания, условимся, что обе ноги каждого uC настроенны на вход и в течении заданного X времени анализируют свои входы. Ессно связывающие их линни поддтянуты на +Vdd. Тот контроллер, который определяет, что на его входе 0 (например в течении больше времени передачи 1 бита = T1b (cчитаем, что оно известно всем uC)) считает себя главным или первым и назначает себе адрес 0xFF. Он начинает передавать на свой выход 0xFE в видк клоков с периодом 2T1b (т.е. 7 клоков). "второй" контроллер определяет на своем входе CLK и начинает их считать(есс-но соблюдая времянки и учитывая тайм-ауты) получив код, он выдает на свой выход число CLK на 1 меньше чем получил...и так далее....последний получает 1 CLK :)...т.е. все адреса распределенны.
Не знаю зачем последнему вешать выход на землю, но его выход можно использовать в качестве ACK о том, что процесс инициализации произошел.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru