Страница 1 из 1
О косяке в симуляции AVR в Proteus...
Добавлено: Пн апр 14, 2014 01:16:52
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- компилятор его даже не очищает. В результате протеус, формально прав, но не работает.
Вот и рассудите тут- кто прав, а кто нет.
Проект кодвижена прикрепляю.
Re: О косяках в симуляции и о вреде симуляторов.
Добавлено: Пн апр 14, 2014 09:38:47
ИС-пытатель
Протеус отстой. И студия последних версий отстой. Причем эта бяка (студия) походу еще и обновляется периодически в фоновом режиме. Сделал такой вывод потому что, на днях писал код, в котором использовал конструкцию switch. Так вот примерно до обеда код прекрасно компилировался. А после обеда ни с того, ни с сего начала выдавать ошибки компиляции. после детального разбора оказалось, что switch почему-то перестал воспринимать больше 7 вариантов хода событий... Засунул код ничего не меняя в 4-ю студию и все заработало. Да, и симулятор в 6-ке говно редкостное.. ((
Re: О косяках в симуляции и о вреде симуляторов.
Добавлено: Пн апр 14, 2014 09:45:53
Flasher
То что студия перестала кушать свитчи- это вопрос к гнутому си. Но, насколько я знаю, тулчэйн не обновляется сам- в версии 6.0 точно.
Re: О косяках в симуляции и о вреде симуляторов.
Добавлено: Пн апр 14, 2014 09:51:22
ИС-пытатель
Тогда как объяснить то, что у меня код работал до середины дня с этим свитчем, а потом вдруг перестал? (свитч был написан еще прошлым днем, я работал над другим участком)
Re: О косяках в симуляции и о вреде симуляторов.
Добавлено: Пн апр 14, 2014 10:05:22
Леонид Иванович
Flasher писал(а):они знают, что озу там всего немного байт
Это заложено в архитектуре. В контроллерах с ОЗУ не более 256 байт для адресации используется только младший регистр из пары. Старший не меняется даже командами процессора доступа к памяти с автоинкементом/декрементом адреса.
Re: О косяках в симуляции и о вреде симуляторов.
Добавлено: Пн апр 14, 2014 10:46:42
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.
Вопрос в том, что формально прав- но модель авр не учитывает тонкости. Из-за этого ошибки в симуляции.
Re: О косяках в симуляции и о вреде симуляторов.
Добавлено: Пн апр 14, 2014 12:19:30
Леонид Иванович
Все равно про вред симуляторов я бы не говорил, название темы абсурдное. Ошибки в моделях бывают, нужно это учитывать, но все равно симуляция способна сэкономить уйму времени. Особенно это касается аналоговых схем.
Re: О косяках в симуляции и о вреде симуляторов.
Добавлено: Пн апр 14, 2014 12:28:38
Flasher
Ну это не касается тех людей, которые могут думать. Сам пользуюсь симуляторами при симуляции аналога. Да и цифру иногда проверяю. А название темы писалось в час ночи с желанием обратить внимание на повальное увлечение симуляторами без включения мозга.
Re: О косяках в симуляции и о вреде симуляторов.
Добавлено: Пн апр 14, 2014 12:35:38
ИС-пытатель
С включением мозга последнее время у многих проблемы.. ))
Re: О косяках в симуляции и о вреде симуляторов.
Добавлено: Пн апр 14, 2014 12:43:48
Леонид Иванович
Flasher писал(а):с желанием обратить внимание на повальное увлечение симуляторами
Кто его знает. Это из разряда, когда скряги жалуются: "Куда катится этот мир?" А он катится куда надо, в сторону прогресса. Я думаю, что наличие доступных симуляторов - это однозначно добро, многие бы вообще не взяли в руки паяльник, если бы не увидели работу проекта в симуляторе. Это хороший стимул. Ну а развиваться дальше, или нет - выбор за каждым. Благо, возможностей для развития с каждым днем становится все больше. Данная тема полезная, но правильнее было бы сформулировать "Осторожно, глюк симулятора" с описанием глюка внутри.
ИС-пытатель писал(а):С включением мозга последнее время у многих проблемы.. ))
Умных людей меньше не стало, их стало больше из-за доступности информации. Другое дело, что с развитием коммуникаций свой голос сейчас может подать любой, кто раньше сидел и молчал. Но все равно нехорошо так отзываться о людях.
Re: О косяках в симуляции и о вреде симуляторов.
Добавлено: Пн апр 14, 2014 12:53:46
ИС-пытатель
Леонид Иванович писал(а):нехорошо так отзываться о людях.
я злой. ) мне можно все! ))