Цитата(defunct @ Apr 4 2006, 08:51)

Помоему тривиальная задача..
RAM тестировать просто - частями. Заполнить участок кодом $FF, прочитать и сравнить с $FF, потом заполнить $00, также прочитать и сравнить. Потом смещенным кодом $80, $81, $82...$FF, 0.. также прочитать и сравнить. Флеш тоже просто. Если программа занимает меньше 50% флеша, то продублировать ее в памяти. Тест будет сводиться к сравнению рабочей части с резервной. АЦП проверить можно, сделав контрольный замер с MUX'ом настроенным на источник Vbg (внутренний ИОН). Таймеры - запустить таймер и параллельно сделать задержку на определенное число тактов. остановить таймер и сравнить значение TCNT с числом тактов, на которое осуществлялась задержка.
Что вызывает у Вас затруднения?
Задача с ОЗУ и EEPROM отнюдь не тривиальная. В своё время я пытался её реализовать в серийном проекте, но забросил. Если это делается при сбросе или можно на время теста ПОЛНОСТЬЮ остановить работу, то тогда да. А если нет, то тестить достаточно сложно. С FLASH - всё понятно CRC16. Если он нарушился, то дублирование может не помочь.
Но вот другой вопрос насколько это нужно. В том проекте о котором я писал, я просто что могу то тестирую, что не могу - то выдаю Ok.

Заказчик и не догадывается. За 4 года выпуска и более 3 тысяч изделий ни разу не было возврата по причине что тест не проходит. Вообще за 15 лет работы я сделал вывод что МП в изделии - это самая надёжная вещь.

Может накрыться кондёр кварца, но не МП. И тестить его это просто дополнительный гимор. А заказчик как правило не разбирается в таких вещах. Так зачем его огорчать. Лучше потратить силы на WDT и защиту от сбоев и помех различными протоколами. Вот это даёт значительный выигрышь в стабильности работы изделия.