[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
|
Накипело ………….
Два с половиной года писал на IAR 1.40
Появилась задача без применения sprintf для чисел с плавающей точкой (переход на вариант ModBus), и появились веяния в фирме к "дешевым" средствам разработки. Перешел на CodeVisionAVR 1.0.2.1 (следующая версия оптимизирует "лучше" - код меньше, а работаспособность ...). Написал программу. При существенном изменении алгоритма, а не отлаженных подпрограмм (функций), оптимизация творит такие чудеса ... Если бы это был один (три) случай я бы этого письма не писал. Конференцию читаю три года, пишу реже.
А так пошел купил "пива" и пишу это сообщение.
Мучался я на СВЕТЕ с компиляторами, но ... Помоему, на каком-то уровне, этот (CVAVR) компилятор перестает рубить фишку, и начинается псевдооптимизация, приводящая к непредсказуемым результатам.
Функция обработки команды с COM порта обрабатывает одну команду как надо, а вторую … волосы дыбом встают (по листингу и на практике). Команды имеют общюя структуру, выбирабтся через switch первого уровня (два уровня компилятор не поймал). До определенного уровня функция работала…
Уже задолбался играться с volatile, распределением по регистрам, переносом из локальных переменных в глобальные и обратно. Устал!!!
С подачи начальства требуется изменение алгоритма и типов данных :(((
Произвожу изменения, и что я вижу - все с начала. Понял работы сегодня не будет.
Вот думая, правильно-ли я сделал перешев на CVAVR. Простые задачи – чем-нибудь подергать, обмен – все нормально, а как только указатели и повторяющиеся участки кода или длинные функции (switch и множественный выбор слов на 2000) так начинается х;№»ня.
Интересует вопрос: кто-нибудь делал серьезные проекты на CVAVR, порядка 8kСлов или 16кБайт (Atmega161). А то сообщения только на уровне где взять и как установить. А дальше ножками подергали и все L
Сумбурно, но накипело …
E-mail: info@telesys.ru