|
Tiny13, проблема с чтением EEPROM |
|
|
|
May 13 2008, 06:44
|
Участник

Группа: Новичок
Сообщений: 50
Регистрация: 5-12-07
Пользователь №: 32 986

|
Есть электронный ключ на базе МК Tiny13. Данные ключа хранятся в EEPROM. Проблема такая: после некоторого времени использования ключа EEPROM-ка периодически не читается, либо при чтении обнаруживаются изменённые данные! можно ли решить эту проблему? Как защитить контроллер от статики,которая может наводиться на корпус ключа?
|
|
|
|
|
 |
Ответов
|
May 13 2008, 12:17
|

Участник

Группа: Участник
Сообщений: 17
Регистрация: 12-12-07
Из: Украина
Пользователь №: 33 226

|
Цитата(defunct @ May 13 2008, 14:36)  Да ну бросте городить чушь. BOD надо включать, а не SPIEN смыкать, чтобы МК сбрасывался до того как питание упадет ниже критической отметки, после которой может изменяться содержимое RAM (регистр PC относится к RAM). А вот изменение содержимого RAM как раз может повлечь за собой прыжек на любой участок кода, в том числе и на участок где производится запись в eeprom. От того он у вас и слетал.
Для отладки Tiny13 вообще-то есть debugWire интерфейс, при включение которого ISP отключается автоматически.
1. Включить BOD. 2. Сделать запись помехозащищенной - разбить eeprom на два блока по 32 байта. Данные сохранять сразу в два блока, блоки защищать хотя бы CRC8. При слете данных в одном из блоков - брать данные из второго, и восстанавливать "сбойнувший" блок.
Все это очень смущает. Почему тогда у вас не слетал Flash? Помеха была такой умной, что генерила только команду записи eeprom? Звучит абсурдно. И не проще ли отключить reset в таком случае? Для восьминогой Tiny13 дополнительная ножка куда более актуальна чем вкл/откл ISP. На сколько я понимаю, даный форум был создан для того, чтобы люди смогли получить ответы на свои вопросы и поделиться опытом, а не слышать в свою сторону "несешь чушь"... Хотя Вы, уважаемый defunct и "Гуру", но с вашей стороны это мягко говоря неуважение к нам форумчанам. Ну включили вы свой БОД, ну есть цитата в даташите: EEPROM data corruption can easily be avoided by following this design recommendation: Keep the AVR RESET active (low) during periods of insufficient power supply voltage. This can be done by enabling the internal Brown-out Detector (BOD). If the detection level of the internal BOD does not match the needed detection level, an external low VCC Reset Protection circuit can be used. If a reset occurs while a write operation is in progress, the write operation will be completed provided that the power supply voltage is sufficient. Да в этом Вы правы, но, судя из моего опыта - это не всегда срабатывает... В моем случае порча ЕЕПРОМ часто происходила в тех же случаях, что и у Kalina, и у Len_OK, создавшего эту тему, а именно в момент присутствия каких либо напряжений на Vcc и линиях SPI, при этом на Reset было 0В. Один мой знакомый даже отправлял письмо компании Atmel (которая, кстати изначально занималась только ЕЕПРОМ) с подобным вопросом, и получил ответ, который полностью совпадает с опытом Kalina - проблемы с SPI, конечно же при условии соблюдения всех остальных замечаний по поводу ЕЕПРОМ АВР-ов. И во-первых: !!!Внимательно!!! читая данную тему я заметил, что Kalina работал с Мега8, а там вообще нету debugWire... Во-вторых:на сколько я знаю для debugWire надобно заиметь не совсем простой программатор... В-третьих:если Вы отключите Reset, то не сможете программировать по SPI и Вам снова придется заиметь не совсем простой программатор... В-четвертых:может быть Вы посоветуете еще и кодировать сами записываемые данные кодами Хеминга, Грея и т. п. Что же у Вас за ключ такой получится??? В-пятых:сама компания Атмел гарантирует правильную работу при соблюдении всех правил использования ЕЕПРОМ, как аппаратных так и программных. ИМХО, люди здесь должны делиться своими знаниями и опытом, а не указывать кому и что как делать... Цитата(defunct @ May 13 2008, 14:36)  Все это очень смущает. Почему тогда у вас не слетал Flash? Помеха была такой умной, что генерила только команду записи eeprom? Звучит абсурдно. И не проще ли отключить reset в таком случае? Для восьминогой Tiny13 дополнительная ножка куда более актуальна чем вкл/откл ISP. Кстати, уважаемый defunct, вот нашел в этом же форуме тему, связаную со стиранием памяти контроллера в результате влияния помех на SPI - - - http://electronix.ru/forum/index.php?showtopic=47174
|
|
|
|
|
May 13 2008, 12:17
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(mart-13 @ May 13 2008, 14:53)  На сколько я понимаю, даный форум был создан для того, чтобы люди смогли получить ответы на свои вопросы и поделиться опытом, а не слышать в свою сторону "несешь чушь"... Хотя Вы, уважаемый defunct и "Гуру", но с вашей стороны это мягко говоря неуважение к нам форумчанам. это просто метки которые форум сам расставляет от количества постов. Никакого отношения к квалификации эти метки не имеют. Я бы был непротив если бы вместо "гуру" у меня там было написано "кекс". Цитата Ну включили вы свой БОД, ну есть цитата в даташите: ... Да в этом Вы правы, но, судя из моего опыта - это не всегда срабатывает... Хорошая попытка... Цитата В моем случае порча ЕЕПРОМ часто происходила в тех же случаях, что и у Kalina, и у Len_OK, создавшего эту тему, а именно в момент присутствия каких либо напряжений на Vcc и линиях SPI, при этом на Reset было 0В. А у меня порчи eeprom от этого не происходило. Что я делаю не так? Цитата И во-первых: !!!Внимательно!!! читая данную тему я заметил, что Kalina работал с Мега8, а там вообще нету debugWire... "Внимательно" читая данную тему Вы бы заметили, что тема называется "Tiny13". Какое отношение к этой теме могут иметь способы применимые на mega8? В m8 можно разместить бутлоадер и с легкостью перешивать чип через любой доступный интефейс. С t13 такой фокус не пройдет, но есть debugWire. Я как раз стараюсь быть в русле темы не переключаться на другие чипы. Цитата Во-вторых:на сколько я знаю для debugWire надобно заиметь не совсем простой программатор... А разве это не обязательное условие для нормальной работы? Или Вас больше устраивает верить в то что SPI интефейс (которого кстати в Tiny13 нет) каким-то образом может стирать EEPROM? Цитата В-третьих:если Вы отключите Reset, то не сможете программировать по SPI и Вам снова придется заиметь не совсем простой программатор... Да разумеется, но в свете откровенно станного совета - отключить ISP - отключение Reset'a для Tiny13 смотрится куда более разумным выходом, т.к. хотя бы добавится драгоценный для этого чипа пин. Цитата В-четвертых:может быть Вы посоветуете еще и кодировать сами записываемые данные кодами Хеминга, Грея и т. п. Что же у Вас за ключ такой получится??? Может быть, зависит от задачи. Для задачи этой ветки я считаю, что два блока защищенных CRC8 будет достаточно для того чтобы навсегда избавиться от проблем искажения EEPROM. Цитата В-пятых:сама компания Атмел гарантирует правильную работу при соблюдении всех правил использования ЕЕПРОМ, как аппаратных так и программных. Мы не застрахованы от пропадания питания и/или подачи сигнала Reset во время записи ячейки EEPROM, следовательно никаких гарантий нет и быть не может. Гарантии достигаются дублированием важной информации. Цитата ИМХО, люди здесь должны делиться своими знаниями и опытом, а не указывать кому и что как делать... Разумеется я вам и не указ. И мне все равно как те или иные задачи будут решены. Я просто высказываю свое мнение, а оно у меня таково - взаимосвязи между стиранием EEPROM и отключением ISP нет. Цитата вот нашел в этом же форуме тему, связаную со стиранием памяти контроллера в результате влияния помех на SPI Я ее читал - там нет ни одного серьезного факта подтверждающего стирание памяти. Только "друг сказал", "где-то слышал", "кто-то жаловался" и т.п, это можно расценивать как реальные факты?.
|
|
|
|
|
May 13 2008, 12:38
|

Частый гость
 
Группа: Свой
Сообщений: 75
Регистрация: 19-12-07
Из: Житоимр
Пользователь №: 33 457

|
Цитата(defunct @ May 13 2008, 16:17)  Или Вас больше устраивает верить в то что SPI интефейс (которого кстати в Tiny13 нет) каким-то образом может стирать EEPROM? Интересненько, а как же без SPI этот контроллер вообще можна прошить? Может вам удавалась его прошить по debugWire?
|
|
|
|
|
May 13 2008, 12:52
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Kalina @ May 13 2008, 15:38)  Интересненько, а как же без SPI этот контроллер вообще можна прошить? Может вам удавалась его прошить по debugWire? периферийного устройства "SPI" такого как в m8 в t13 нет. SPI который используется только для ISP программирования, в нормальном режиме отключен. Надо всего лишь подтянуть Reset к питанию и включить BOD. T13 можно шить LVSP, HVSP и dW программаторами. Через dW конечно удавалось его шить иначе было бы очень неудобно отлаживать.
|
|
|
|
|
May 13 2008, 13:36
|

Участник

Группа: Участник
Сообщений: 17
Регистрация: 12-12-07
Из: Украина
Пользователь №: 33 226

|
Цитата(defunct @ May 13 2008, 16:52)  периферийного устройства "SPI" такого как в m8 в t13 нет.
SPI который используется только для ISP программирования, в нормальном режиме отключен. Надо всего лишь подтянуть Reset к питанию и включить BOD.
T13 можно шить LVSP, HVSP и dW программаторами. Через dW конечно удавалось его шить иначе было бы очень неудобно отлаживать. Что значит "SPI который используется только для ISP программирования, в нормальном режиме отключен"??? Что такое нормальный режим??? (Что, есть еще и ненормальный???) В каком режиме продается данный МК в магазинах(в нормальном или ненормальном)??? Чем же его прошить первый раз после покупки??? Приведите, пожалуйста, хоть один факт, или документ, который что-то из этого подтверждал... Может у меня мало опыта в работе с АВР... Может Вы говорите на каком-то другом языке: причем тут периферийное устройство SPI и протокол по которому прошивается память контроллера SPI. SPI - это, на сколько я знаю, Serial Peripheral Interface. У большинства 8-битных МК фирмы Атмел этот интерфейс используется для загрузки программы в память МК. А у некоторых МК той же фирмы на борту есть еще и встроенный аппаратный SPI интерфейс (периферийное устройство), который исползуется для связи МК с другими устройствами (память, ЖКИ, другой МК,...), и который может работать в режиме Мастер или Слейв, но он не принимает участия в программировании МК без дополнительных программных вмешательств (типа бутлоадера). Вот SPI, как периферийное устройство в тини13 отсутствуей, а SPI как интерфейс программирования там есть (что видно из скриншота)... Не ругайте сильно, что отвлекся от темы, просто мне не понятно почему в оригинальной документации написано одно, а Ваш опыт говорит о другом.
Сообщение отредактировал mart-13 - May 13 2008, 13:47
|
|
|
|
|
May 13 2008, 13:55
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(mart-13 @ May 13 2008, 16:36)  Что значит "SPI который используется только для ISP программирования, в нормальном режиме отключен"??? Значит что в пользовательской программе его использовать нельзя. Цитата Что такое нормальный режим??? (Что, есть еще и ненормальный???) Когда выполняется пользовательская программа. Есть и другие режимы работы МК - сброшенное, отключенное состояние, режим программирования... Цитата В каком режиме продается данный МК в магазинах(в нормальном или ненормальном)??? в отключенном. Цитата Чем же его прошить первый раз после покупки??? Программатором, но вначале так или иначе надо будет куда-то запаять. А уж потом шить. Цитата а SPI как интерфейс программирования там есть (что видно из скриншота)... Да есть, но он отключен когда выполняется программа пользователя. Цитата Чесно говоря, первый раз слышу про такую возможность шить по dW, если вас не затруднит, не могли бы вы поделиться на конкретном прирмере, в даташите на tiny13 я ничего такого не нашёл. Поиск в гугле dW программатора также дал 0 результат , неужели это засекречено? Ну а что через JTAG можно программировать слышали? Точно также программу можно зашить и через dW. При отладке AVR-Studio сама заливает программу в чип через dW, т.е. Вам не нужно отключать dW, зашивать программу и включать dW обратно, для того чтобы отладить программу. Единственное ограничение в работе через debugWire - нельзя программировать Fuses и Locks.
|
|
|
|
|
May 13 2008, 14:04
|

Частый гость
 
Группа: Свой
Сообщений: 75
Регистрация: 19-12-07
Из: Житоимр
Пользователь №: 33 457

|
Цитата(defunct @ May 13 2008, 17:55)  Ну а что через JTAG можно программировать слышали? Точно также программу можно зашить и через dW. Единственное ограничение - нельзя программировать Fuses и Locks. Про возможность JTAG программирования я не только слышал, но и читал в даташите на мегу16. А вот про программирование тини13 по dW всего лишь слышал от вас, приведите хоть сылочку что ли...
|
|
|
|
|
May 13 2008, 14:45
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Kalina @ May 13 2008, 17:04)  Про возможность JTAG программирования я не только слышал, но и читал в даташите на мегу16. А вот про программирование тини13 по dW всего лишь слышал от вас, приведите хоть сылочку что ли... Запустите AVR-Studio. Откройте Help->AVR Tools Users Guide->JTAGICE MKII. Перейдите в раздел On-Chip Debugger Options в нем подраздел Debug Dialog -> debugWire. Там будет скриншот, где видно что для debugWire можно настроить Program Download опции. цитата: Цитата The Debug Dialog Box when using debugWIRE is shown below. ... The Program Download section allows different settings for how often the target device should be reprogrammed. Цитата(mart-13 @ May 13 2008, 17:17)  И еще вопрос, изначально эта тема подразумевала использование МК в "ненормальном" для Вас режиме, тоесть в режиме переходных процессов при вкл/выкл питания, и возможность при этом порчи ЕЕПРОМ (по причине нахождения МК в режиме программирования, или превышения напряжения питания, или помех, и т.д.) так вот, какое отношение к данному вопросу имеют Ваши хваленые dW и JTAG??? Естессно никакого, точнее ровно такое же как и рекомендация отключить ISP. Бороться с переходным процессом надо другим способом - BOD / внешний супервизор питания, подключать пины через низкоомные резисторы вблизи выводов МК, шунтирующие конденсаторы по питанию... Программные средства защиты - дублирование записей в eeprom, код защиты.
|
|
|
|
Сообщений в этой теме
Len_OK Tiny13 May 13 2008, 06:44 Палыч Цитата(Len_OK @ May 13 2008, 09:44) ...по... May 13 2008, 06:55 Len_OK по питанию всё нормально, пробовала на корпус дава... May 13 2008, 07:28 Палыч Возможно, при включении питания у Вас - кратковрем... May 13 2008, 07:34 ZyBEX Цитата(Len_OK @ May 13 2008, 11:28) по пи... May 13 2008, 13:08 Len_OK как можно избавится от этого? May 13 2008, 07:38 Vanizma Цитата(Len_OK @ May 13 2008, 11:38) как м... May 13 2008, 08:04 Палыч Взять хороший блок питания May 13 2008, 07:39 Клим Цитата(Палыч @ May 13 2008, 10:39) Взять ... May 13 2008, 07:44  Палыч Цитата(Клим @ May 13 2008, 10:44) Какой т... May 13 2008, 08:12   Kalina Цитата(Палыч @ May 13 2008, 12:12) Легче ... May 13 2008, 08:40 Kalina Цитата(Len_OK @ May 13 2008, 10:44) либо ... May 13 2008, 07:51 defunct Цитата(Kalina @ May 13 2008, 10:51) Пробл... May 13 2008, 09:52  Kalina Цитата(defunct @ May 13 2008, 13:52) Да н... May 13 2008, 10:17   Палыч Цитата(Kalina @ May 13 2008, 13:17) ...в ... May 13 2008, 13:23 Serega Doc А разве бывают диоды с падением 5-6 В
Помоему на д... May 13 2008, 08:26 sseett EEPROM портится, когда питашка падает до уровня сл... May 13 2008, 08:48 Kalina Цитата(sseett @ May 13 2008, 12:48) EEPRO... May 13 2008, 09:16  Палыч Цитата(Kalina @ May 13 2008, 12:16) ...ка... May 13 2008, 09:23  sseett Цитата(Kalina @ May 13 2008, 18:16) Если ... May 16 2008, 08:52 Клим Цитата(Палыч @ May 13 2008, 11:12) Питани... May 13 2008, 09:26 Len_OK в том то и дело, что данные портятся во время чтен... May 13 2008, 09:37 Палыч Цитата(Len_OK @ May 13 2008, 12:37) одна ... May 13 2008, 10:06  Len_OK Цитата(Палыч @ May 13 2008, 13:06) Если с... May 13 2008, 10:40   mart-13 Цитата(defunct @ May 13 2008, 16:17) Или ... May 13 2008, 12:28    defunct Цитата(mart-13 @ May 13 2008, 15:28)... May 13 2008, 12:32       mart-13 Цитата(defunct @ May 13 2008, 17:55) Знач... May 13 2008, 14:17     Kalina Цитата(defunct @ May 13 2008, 16:52) Чере... May 13 2008, 13:47   mart-13 Цитата(defunct @ May 13 2008, 16:17) Или ... May 13 2008, 12:47   singlskv Цитата(defunct @ May 13 2008, 16:17) это ... May 13 2008, 21:21    777777 Кстати, о программировании сброса. Я его программи... May 14 2008, 05:49     Палыч Цитата(777777 @ May 14 2008, 08:49) есть ... May 14 2008, 06:09      777777 Цитата(Палыч @ May 14 2008, 10:09) Почему... May 14 2008, 06:41       Палыч Цитата(777777 @ May 14 2008, 09:41) И куд... May 14 2008, 06:57 Serega Doc Может не будем разводить базар вокзал в ветке фору... May 14 2008, 09:47
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|