Чип M168, компилирую с опцией -Os, с O0 использовать не могу т.к. hex получается больше 16k.. Девайс периодически перезагружается, MCUSR показывает Reset Source - 0 (прыжек на адрес 0), через ~1-8 часов работы..
В main при инициализации заполнил область стека тестовым паттерном 0xA5 после этого: 1. девайс начал иногда вместо ребута подвисать (через те же 1-8 часов работы), прерывания продолжают работать.. (WatchDog пока не включаю чтоб не мешал) 2. Заметил, что некая long переменная K, которую обновляю в основном цикле программы: K = X; (где X long переменная равная xxxx, и X = (volatile long)Y; ) иногда принимает значение: 0xA5A5xxxx, когда ожидается 0x0000xxxx. (переменные X и Y - имеют правильные значения)
Промониторил стек после очередного ребута - за границу 256 байт - не выходит и не пересекается с другими структурами данных. float, sprintf, printf в программе не применяю.
Собсно вопрос, может есть известные баги WinAVR 200701xx, которые бы могли это объяснить?
|