Страница 1 из 1
Прошивка программатором STM8S207K
Добавлено: Чт ноя 03, 2011 12:08:20
jtlex
У меня достаточно интересный вопрос

:
Возникла необходимость создать уникальный идентификатор для каждого микроконтроллера, но чтоб прошивался он автоматически, то есть: есть 100 микросхем - тупа цепляем к программатору контроллер и шьем в него стандартную прошиву, а программатор еще и добавляет уникальный код. С Уникальным кодом особо не надо замарачиваться - досточно банально писать дату и время записи прошивки. Поскажите, может кто знает как это можно реализовать. Но стоит отмететь, что контроллер мог програмно это прочитать.
Код нужен только, чтоб знать головному устройству сколько подключено устройств и какое, в случаи сбоя, перестал отвечать. Все они будут соедененыпо шине RS485. Заранее спасибо.
Re: Прошивка программатором STM8S207K
Добавлено: Чт ноя 03, 2011 14:42:38
koyodza
jtlex писал(а):У меня достаточно интересный вопрос

:
Возникла необходимость создать уникальный идентификатор для каждого микроконтроллера, но чтоб прошивался он автоматически, то есть: есть 100 микросхем - тупа цепляем к программатору контроллер и шьем в него стандартную прошиву, а программатор еще и добавляет уникальный код. С Уникальным кодом особо не надо замарачиваться - досточно банально писать дату и время записи прошивки. Поскажите, может кто знает как это можно реализовать. Но стоит отмететь, что контроллер мог програмно это прочитать.
Код нужен только, чтоб знать головному устройству сколько подключено устройств и какое, в случаи сбоя, перестал отвечать. Все они будут соедененыпо шине RS485. Заранее спасибо.
Зачем этот гемор, когда внутри есть уникальный серийный номер?
Re: Прошивка программатором STM8S207K
Добавлено: Сб ноя 05, 2011 17:21:38
jtlex
Зачем этот гемор, когда внутри есть уникальный серийный номер?
А по поводу этого поподробнее пожалуйста...
Re: Прошивка программатором STM8S207K
Добавлено: Сб ноя 05, 2011 17:30:18
koyodza
jtlex писал(а):Зачем этот гемор, когда внутри есть уникальный серийный номер?
А по поводу этого поподробнее пожалуйста...
Вы бы пояснили вначале,
что именно Вам нужно.
Зачем Вам нужен уникальный номер,
как Вы собираетесь его использовать.
По поводу встроенного серийного номера читать в документации. Новые МК от ST имеют 96-битный уникальный серийный номер. Он есть и в STM32, и в STM8
Доступ к нему происходит как к памяти.
Re: Прошивка программатором STM8S207K
Добавлено: Вс ноя 06, 2011 10:13:12
JTlex2011
Вы бы пояснили вначале, что именно Вам нужно. Зачем Вам нужен уникальный номер, как Вы собираетесь его использовать.
Я же в начале писал :
Код нужен только, чтоб знать головному устройству сколько подключено устройств и какое, в случаи сбоя, перестал отвечать. Все они будут соедененыпо шине RS485.
В момент первичного включения главное устройство будет перебирать их и как только одно из устройств определится оно повторит свой уникальный код ну или последние 8 бит. Далее Головное устройство передаст подключенному устройству номер 8 битный по которому ему надо будет отзываться в дальнейшем. После переопределения всех устройств программа начинает работать с ними используя 8 битный адресный код.
А не могли бы по подробнее
По поводу встроенного серийного номера читать в документации. Новые МК от ST имеют 96-битный уникальный серийный номер. Он есть и в STM32, и в STM8
Доступ к нему происходит как к памяти
Подскажите где он хранится.
Re: Прошивка программатором STM8S207K
Добавлено: Вс ноя 06, 2011 14:39:46
koyodza
JTlex2011 писал(а):Подскажите где он хранится.
Открываете даташит на нужный МК, идёте в раздел Unique ID, и видите таблицу из 12 байт.
Адрес начала для разных МК разный. Например, в S103 начало по адресу 0х4865, в S105 по адресу 0х48CD
В общем, ищите и найдёте
Re: Прошивка программатором STM8S207K
Добавлено: Вс ноя 06, 2011 22:09:01
JTlex2011
Тут глянул - спасибо действительно, но появилась проблема:
при скорости 19200 я получу, что мне надо будет перебирать с 0 до 268435455 ( я рассматриваю только Lot number - серийный номер). При этой скорости получаем в лучшем случаи 13981 секунд, а это 3 часа - долго получается.
Может кто подскажет как по одной шине типа 485 , на которой сидят несколько устройств, передать свой код головному устройству? Схема такая:
ГОЛОВНОЕ УСТРОЙСТВО <=RS485=========...=================> управляемое устройство
......||...........||
......||...........||
......\/...........\/
.................управляемое устройство.........управляемое устройство
Re: Прошивка программатором STM8S207K
Добавлено: Вс ноя 06, 2011 23:52:59
koyodza
никакой дурак никогда всё множество адресов не перебирает. Есть разные алгоритмы, применение зависит в первую очередь от используемого протокола. Посмотрите, например, как сделан поиск устройств 1-wire, там 64-битный серийный номер используется.
Для 485 есть алгоритмы с ответом на запрос серийника через произвольное время задержки, с отключением тех, кто уже раньше ответил.
А тупым перебором даже при 16-битном никто не делает, потому что долго, при большей разрядности это просто нереально
Re: Прошивка программатором STM8S207K
Добавлено: Пн ноя 07, 2011 18:53:02
JTlex2011
По поводу 1-wire - я статью прочитал (
http://radiokot.ru/articles/13/ ). Но я не нашел алгоритма ответа на запрос серийника через произвольное время задержки. Может подскажете как его организовать? Заранее спасибо.
На счет 1-wire это очень интересное решение по поводу поиска устройств на шине - его никак нельзя организовать на 485 интерфейсе? И вообще что случится если все контроллеры одновременно ответят - с точки зрения микросхеммы преобразования RS485/RS232? Ведь можно передавать от головного к подчиненным байт в котором последний бит будет интерпретироваться как в интерфейсе 1-wire, а от подчиненных устройств головному весь байт как бит с двойным стоп битом с выверенным по таймеру началом передачи.
Естественно в начале этой операции послать команду без подтверждения о том, что сейчас будет производится опрос.
Возможно ли с аппаратной точки зрения это решение?
Заранее спасибо.