Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Тестирование узлов микроконтроллера  (Прочитано 11898 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« : 16-03-2006 11:33 » 

Необходимо при включении микроконтроллера (МК) проводить тестирование его узлов:
  • тест памяти,
  • тест таймера,
  • тест переходов,
  • тест АЦП.
Подскажите, какие можно использовать для этого алгоритмы.

С реализацией их на ASM-e проблем не встанет. Но если у когото есть подобный код на ASM-e то выложите, буду благодарен.
Используемый МК: AVR ATmega64.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 16-03-2006 16:16 » 

Serg79, какова цель? Искать брак?

1) тест памяти
Заполни память неким числом и проверь каждую ячейку на соответвие. В след. проход заполни память числом, инверсным к первому, и опять проверь.

2) тест таймера
Разрешаешь прерывание от таймера, заводишь его и ожидаешь этого прерывания. Ждать его следует в пустом цикле. Переполнение счетчика цикла будет сигналом к неисправности.

3) Не понял поясни

4) тест АЦП
Организовать в цикле считывание АЦП и вывод результатов его в каком-либо виде наружу (напр. на блок светодиодов, или в последовательный порт). На вход АЦП подключить переменный резистор (скользящий конатакт - на АЦП, два других - на GND и Vref).
P.S.: я описал примерно - для идеи. В автоматическом режиме можно проверить аналогично таймеру: генерирует ли прерывание в ожидаемый срок, или нет.

Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 17-03-2006 05:43 » 

Все эти тестирования необходимы для безопасности (требования к ПО МК по безопасности, т.н. "безопасный отказ". Короче: требования заказчика).

1) С памятью вроде бы все понятно, можно использовать бегущую единицу, бегущий ноль или в шахматном порядке.

2) С таймером по сложнее, если плывет кварц то плывет соответственно и CLOCK, что также отражается и на таймере.

3) Проверка правельности выполнения переходов:
rjmp метка
rcall метка
brcs метка
braq метка
и т.д.

4) Тест АЦП, ну сдесь можно использовать для подачи на вход стабильный источник напряжения или использовать внутренний ИОН 2.56 В и подовать также внутреннее тестовое напряжение 1.22 В.

Я задал этот вопрос в надежде на то, что кто то уже решал подобную задачу, и может подсказать готовое решение.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 17-03-2006 17:01 » 

2) Проверить точность генератора можно только с помощью другого генератора с большей точностью (который тоже стоит иногда проверять). Т.е. программно это не решить. Лучше периодически проверять частоту генератора повереным частотометром.

3) Imho, затея бессмысленная. Почему тогда не проверять еще и выполнение других команд?
Если выйдет из строя любой вычислительный блок в м/к, то и тесты, быстрее всего, не будут выполняться как задумано.

При наличии в схеме элементов защиты м/к от возможных факторов повреждения и прохождения входного контроля для компонентов, вероятность выхода из строя очень мала. Трудно защитить, разве что, от сильных магнитных полей и радиации. Еще труднее - от дурака.
Я бы заменил п.2 и п.3 на периодическую профилактическую замену.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 20-03-2006 04:49 » 

2) Мысли такие же, без внешнего стабильного тактового генератора не обойтись.

3) Глупость полнейшая. Но если заказчик сказал надо, значит сделаем.  Улыбаюсь
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 20-03-2006 05:52 » 

Serg79, насчёт переходов:

простой тест - некая процедура ждёт 1 с пина некого порта , после этого (таймер ведь уже проверен? Ага ) , скажем через 500 мкс, на другом пине должна выйти некая последовательность бит.
Этим проверим и переходы и много чего сразу
Записан

Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 20-03-2006 08:38 » 

Алексей1153, непонял  Здесь была моя ладья..., если можно поподробнее.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 20-03-2006 09:19 » 

Serg79, я имею в виду - тест воздействием "извне" ,
проводится , скажем, тест на rjmp.
подали на пин единицу - обработчик прерывания вызвал определённую функцию X1, в которой
делается переход на определённый адрес, где ждём , скажем, 500мкс, а затем выдаём контрольную последовательность бит. Дальше - либо перезагрузка проца, либо корректно развернуть указатель команд для продолжения теста.

вот такая мысль Улыбаюсь
Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 30-03-2006 14:55 » 

Изначально к тестировнию нужно подходить  с точки зрения "чему доверяешь".

1. если тест запустился то call уже выполнился
Так что первично?
если нужно проверять всякие системы переходов - для этого должен быть внешний контроль сосояний
мало времени, да и нет под рукой литературы, чтоб сослаться на тестирование - Это целая наука

А вообще это очень знакомо, недоверие микроконтроллеру
Один из способов "мнимой защиты" - это проверка адреса указателя стека в каких-то контрольных точках

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines