Ситуация следующая:
Написал пробную программу на С, в IAR 4.20A, для тестирования USART для Atmega8. Программа выдает строку в USART. Подключил файл .hex (формат Intel - extended) из папки Release проекта IAR в Proteus 6.9.04 для тестирования в виртуальном терминале. Реакции на то что программа работает - ноль. Состояние регистров USART :UCSRA 0x000B 0b00100000
UCSRC 0x0020 0b00000000 UCSRB 0x000A 0b00000000, что говорит о том что даже непрошла инициализация USART. И конечно же никаких прериваний от него и ожидать нестоит.
Другая картина наблюдается когда я подключаю ubrof 8(forsed) файл того же проекта из папки Debug. Все работает как и положенно. в реальном железе тот же файл .hex работает но только наполовину: выдается только первая буква из строки.
В конце концов решил подключить файл .hex для его дизасcемблирования и пошаговой отладки в AVR Studio 4.12. В итоге получаю такое сообщение:
Coordinator: An error occured while reading the object file. The file may be of wrong type or corrupted, or the object file reader is not up to date.
Error loading object file J:\TestRS232\Release\Exe\TestRS232.hex
Мои попытки подсунуть AVR Studio вместо .hex (Intel - extended) .hex (Intel - standart) - увенчались тем же сообщением об ошибке. Хотя я в этом случае все понятно, так как в описании поддержки форматов в AVR Studio значится Intel - extended.
Так почему же AVR Studio непонимает сгенерированного файла .hex IAR, симулятор Proteus 6.9.04 - его не запускает в работу, реальное железо выполняет его неправильно ? Все сводится к логическому заключению : IAR 4.20A генерит .hex файл с ошибкой. Попытки компиляции в IAR 4.12A - привели к тому же результату. Перечитал документацию на компилятор IAR - там скудная информация по поддерживаемым форматам..
В итоге незнаю что делать. Сталкивался ли кто-то с подобным явлением ? Есть ли у кого -то идеи как мне решить подобную проблему. Заранее буду благодарен за Ваши советы. Файл исходник прикрепляю к письму.