Цитата(Shedon @ Feb 8 2005, 15:54)
Есть сабжевый контроллер, есть прога на си, код хранится во внешней флэш, на 64кб, ....
.....
глюки
.....
Заочно трудно сказать - что там может быть. Возможно существует
и не одна причина. Можно посоветовать типа - "а что бы я сделал".
У 51-х есть известная проблема - "проблема ALE".
Решается вставкой резистора 430-560 ом в разрыв цепи ALE
процессор-регистр. Это я сделал бы автоматически, на уровне
инстинкта. Вне зависимости , улучшит это ситуацию или нет.
Далее, хочестя понять:
1. какова глубина вложения в стек - и хватит ли его.
Например, при старте программы прописать весь стек 0xFF.
А после некоторой работы вывести дамп стека на дисплей.
Сразу станет понятно, сколько заняли.
2. правильно ли читаются коды команд из внешней флэш -
нужно вставить проверку CRC16 вообще и пустить этот тест
циклически в частности. Для выяснения проблем этого эпизода.
3. Тщательнее изучить диаграммы вывода на дисплей.
Может что-то "на грани". Заменить дисплей - может не повезло
с конкретным экземпляром.
Еще я бы нагрузил шину данных вывода (P0 если я не ошибаюсь)
резисторами 4K7 на питание.
4. Временный откат назад - к простой и маленькой программе
которая работает исправно. Постепенное наращивание кода
до тех пор, пока не станет "плохо".
Или ловить "плохо" как льва в Африке.