О косяке в симуляции AVR в Proteus...

Обсуждаем контроллеры компании Atmel.
Ответить
Мудрый кот
Аватара пользователя
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Сообщение Flasher »

Игрался с одним проектом в cvavr eval 3.08 и 3.10. Всего лишь пару простых строк- а в протеусе не захотело работать. 7.10 и 8.1 sp1
В студии 4.19 прекрасно симулировалось.

Код: Выделить всё

#include <io.h>

unsigned int sum[4];
volatile unsigned int voltage;
volatile unsigned int average_summa=578;

void main(void)
{
 register unsigned char i;
while (1)
    {
         // Скользящее среднее по средневыпрямленному из 8 полупериодов
     for (i=0; i<3; i++) sum[i]=sum[i+1];
     sum[3]=average_summa;
     voltage=0;      
     for (i=0; i<4; i++) voltage+=sum[i]; 
     
     if(voltage) #asm("nop") ;
    }
}
После нескольких прокручиваний sum [0] sum[1] принимают значения отличные от 578.
После поверхностного разбора полетов выяснилось, что компилятор активно использует регистровую пару r27:r26 (X) для работы с переменной voltage, затем регистр X используется в циклах- вся фишка в восприятии протеусом регистра X- он воспринимается как пара. У компилятора и студии другое мнение- они знают, что озу там всего немного байт и при этом забивают на старшую часть R27- компилятор его даже не очищает. В результате протеус, формально прав, но не работает.
Вот и рассудите тут- кто прав, а кто нет.
Проект кодвижена прикрепляю.
Вложения
error.zip
(22.43 КБ) 137 скачиваний
Последний раз редактировалось Flasher Пн апр 14, 2014 12:47:39, всего редактировалось 1 раз.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Протеус отстой. И студия последних версий отстой. Причем эта бяка (студия) походу еще и обновляется периодически в фоновом режиме. Сделал такой вывод потому что, на днях писал код, в котором использовал конструкцию switch. Так вот примерно до обеда код прекрасно компилировался. А после обеда ни с того, ни с сего начала выдавать ошибки компиляции. после детального разбора оказалось, что switch почему-то перестал воспринимать больше 7 вариантов хода событий... Засунул код ничего не меняя в 4-ю студию и все заработало. Да, и симулятор в 6-ке говно редкостное.. ((
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Сообщение Flasher »

То что студия перестала кушать свитчи- это вопрос к гнутому си. Но, насколько я знаю, тулчэйн не обновляется сам- в версии 6.0 точно.
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Тогда как объяснить то, что у меня код работал до середины дня с этим свитчем, а потом вдруг перестал? (свитч был написан еще прошлым днем, я работал над другим участком)
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Flasher писал(а):они знают, что озу там всего немного байт
Это заложено в архитектуре. В контроллерах с ОЗУ не более 256 байт для адресации используется только младший регистр из пары. Старший не меняется даже командами процессора доступа к памяти с автоинкементом/декрементом адреса.
Контактная информация:
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Сообщение Flasher »

Конечно заложено. В железе все будет прекрасно работать.
Note that only the low byte of the X pointer is updated in devices with no more than 256 bytes data space. For such devices, the high byte of the pointer is not used by this instruction and can be used for other purposes.
Вопрос в том, что формально прав- но модель авр не учитывает тонкости. Из-за этого ошибки в симуляции.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Все равно про вред симуляторов я бы не говорил, название темы абсурдное. Ошибки в моделях бывают, нужно это учитывать, но все равно симуляция способна сэкономить уйму времени. Особенно это касается аналоговых схем.
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Сообщение Flasher »

Ну это не касается тех людей, которые могут думать. Сам пользуюсь симуляторами при симуляции аналога. Да и цифру иногда проверяю. А название темы писалось в час ночи с желанием обратить внимание на повальное увлечение симуляторами без включения мозга.
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

С включением мозга последнее время у многих проблемы.. ))
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Flasher писал(а):с желанием обратить внимание на повальное увлечение симуляторами
Кто его знает. Это из разряда, когда скряги жалуются: "Куда катится этот мир?" А он катится куда надо, в сторону прогресса. Я думаю, что наличие доступных симуляторов - это однозначно добро, многие бы вообще не взяли в руки паяльник, если бы не увидели работу проекта в симуляторе. Это хороший стимул. Ну а развиваться дальше, или нет - выбор за каждым. Благо, возможностей для развития с каждым днем становится все больше. Данная тема полезная, но правильнее было бы сформулировать "Осторожно, глюк симулятора" с описанием глюка внутри.
ИС-пытатель писал(а):С включением мозга последнее время у многих проблемы.. ))
Умных людей меньше не стало, их стало больше из-за доступности информации. Другое дело, что с развитием коммуникаций свой голос сейчас может подать любой, кто раньше сидел и молчал. Но все равно нехорошо так отзываться о людях.
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Леонид Иванович писал(а):нехорошо так отзываться о людях.
я злой. ) мне можно все! ))
Ответить

Вернуться в «AVR»