Уникальный идентификатор
- Войдите на сайт для отправки комментариев
Пнд, 23/01/2017 - 11:42
А есть ли на плате Arduino какой-то уникальный идентификатор? Проблема: есть несколько плат ардуино, в которые загружается один и тот же скетч. Нужно как-то идентифицировать плату. Да, я понимаю, что можно перед загрузкой модифицировать одну цифру. Но хочется чего-то более цивилизованого. Платы одинаковые - MEGA. Так что полагаться на идентификатор процессора нельзя.
А в EEPROM хранить не вариант?
В принципе, можно и в EEPROM. А никакого встроеного идентификатора нет?
Не знаю, не встречал, но специально и не искал. Посмотрите в даташите.
А никакого встроеного идентификатора нет?
Нет.
Так что полагаться на идентификатор процессора нельзя.
Вообще-то, как раз и пользуюся unique ID микроконтроллера (например в STM32 есть). Но в микроконтроллерах AVR это к сожалению не реализовано.
ID платы и быть не может, т.к. плата - это просто кусок стеклотекстолита/гетинакса с напаянными детальками.
Внутрь загрузчика зашить, но потребуется повозиться с сотавлением индивидуальных загрузчиков по числу наличествующих ардуин.
Тогда явно проще зашить в EEPROM
ds18s20 повесить? и уже его номер читать?
ds18s20 повесить? и уже его номер читать?
А ведь это идея :). Только тогда проще и дешевле на аналоговый вход подвесить резистор.
Ну, можешь ds1990 повесить, они дешевле в два раза, но здорооовые...
https://www.maximintegrated.com/en/products/digital/memory-products/DS24...
А нельзя уточнить, чем __DATE__ и __TIME__ не подходят, в которых компилятор оставляет дату и время компиляции? Вполне себе уникальный идентификатор, причем, без анальной маструрбации, доступен всем и всегда в любой среде Ардуино.
Не подходит тем, что у меня несколько контроллеров, и я должен точно знать "имя" каждого. И DATE, меняющееся каждый раз - не самое лучшее имя. Тем более, что скомпилировал я один раз, а потом просто заливаю этот hex на плату. Так что DATE будет одинаковым
А можно узнать все же цель идентификации? Разные куски программы?
И пины все используются, чтоб перемычку повесить?
Цель идентификации: Несколько ардуин в системе "умного дома". Каждая с Ethernet Shield. Надо выдать им MAC адрес так, чтобы можно было в таблице DHCP прописать статический IP. Да, скорее всего, наиболее правильно будет повесить на какой-то аналоговый порт резистор, для каждой платы свой.
Вот тут пишут, что какие-то уникальные данные всё же есть: http://www.avrfreaks.net/forum/unique-id-atmega328pb . Может быть, конечно, уникальный мусор... Я читал эти 0x0E..0x17 через boot_signature_byte_get() на десятке 328-х - похожих не нашёл. Вида они такого: 0x593534313130FF05100C, 0x573634313038FF07140A, 0x553533343638FF102311 и т.д. Считаю, что в пределах дома повторов не будет.
Только пишут там про мегу328пб, что не одно и то же с мегой328п.
Так маски-то могут быть похожими :)
Понятно, что для 328пб наличие серийника (9 байт) даже прописано в даташите. Но кто знает, может и в других есть :)
А дуина на чем ?
Так я на стандартно-китайских Nano, Mini Pro, Freeduino читал. Сейчас вот глянул на первой попавшейся - 328p. И даже, если мне не изменяет память, на Micro clone... Там у нас 32u4, вроде.
В конце концов попытка - не пытка, MCU не взорвется.