Здравствуйте! Программа откомпилирована в IAR C 6.40. Используются оба UART, кооперативная многозадачность. Одним словом, источников для неприятностей масса. Механизм кооперативной многозадачности хорошо отработан. Его использую давно и без проблем. Неприятность возникла, как обычно там, где её не ждал. Когда производится запись числа в EEPROM, программа дурит. Когда записывал 32-разрядное long int, то программа зависала. Когда процесс разбил на части (пишу побайтно), зависать перестала, но некоторая дурь сохранилась. Вроде бы не может ничего такого сделать процесс запись в EEPROM. Самое худшее, что он делает - тормозит программу, сканируя бит готовности EEPROM. Сетую на то, что один UART работает в режиме пассивного слушателя, а не в режиме запроc / ответ. Можно предположить, что за время записи в EEPROM в буфер UART накидали что-то, сбилась синхронизация... Может быть у кого-то есть ещё соображения на этот счёт? А ещё, может быть, у кого-то есть фрагмент кода, который позволяет производить запись в EEPROM, с использованием прерывания, вместо сканирования бита готовности? Заранее благодарен!
|