Proteus 7.4 затыкается на команде call (tiny2313)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Открыл глаза
Аватара пользователя
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

Написал мелкую прогу, в железе программка работает отлично.
Далее решил поиграться и дописать функционал в протеусе - а фик.
Протеус (7.4 sp3) стопается с ошибкой "Invalid opcode 0x940E at PC-0x003A". Гружу в протеус тот-же HEX, который работает в железе. Включаю дизассемблер, там где в avr-студио у меня стоит команда call - дизасм протеуса показывает invalid два раза, далее прога дизассемблируется нормально, но на месте всех call - два invalid.
Кто виноват? Что делать?
Реклама
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

Yurivz писал(а):Что делать?
Проект приложить укоротив код до предела.
Контактная информация:
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

Вот, прикрепил...
Стоит раскоментарить "Call" - Proteus ругается.
Вложения
proteus-call.rar
(18.59 КБ) 270 скачиваний
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

Дак и студия ругается что "Кол" ансапотид - сапорта нетути.

Изображение

я кол заменил на rjmp заработало. выж все равно rjmp ниже использовали.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

пиши rcall а не call
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

ikarab писал(а):Дак и студия ругается что "Кол" ансапотид - сапорта нетути.
:shock: У меня все успешно компиллится, получившийся HEX заливается в железную ATtiny2313 и прекрасно там работает.
Изображение
я кол заменил на rjmp заработало. выж все равно rjmp ниже использовали.
А как потом возвращаться откуда вызвали? Как по хорошему организовывать обращение к подпрограммам?
Реклама
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

Yurivz писал(а):А как потом возвращаться откуда вызвали?
Я на АСМ не пишу и потому не ведаю.
Yurivz писал(а):Как по хорошему организовывать обращение к подпрограммам?
Так как сделано в примерах других писателей.
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

ibiza11 писал(а):пиши rcall а не call
А в чем различие между этими командами?
Интересно, почему моя AVR Studio (4.12 sp4 build 498) без проблем это компиллит и оно без проблем работает в железе?

ps: Куда катится этот мир... Имеем реальный геморой из-за виртуальных железячек :)
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

Yurivz писал(а): в чем различие между этими командами?
Наверняка в ДШ написано.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

Yurivz писал(а):
ibiza11 писал(а):пиши rcall а не call
А в чем различие между этими командами?
Неужели так сложно открыть Help к AVR Studio и там увидеть что к чему:
CALL - Long Call to a Subroutine

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

Syntax:         Operands:              Program Counter          Stack:

CALL k          0 ≤ k < 64K            PC <- k                  STACK <- PC+2
                                                                SP <- SP-2, (2 bytes, 16 bits)
RCALL - Relative Call to Subroutine

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

Syntax:        Operands:                  Program Counter:             Stack:

(i) RCALL k    -2K ≤ k < 2K               PC ← PC + k + 1              STACK ← PC + 1
                                                                       SP ← SP - 2 (2 bytes, 16 bits)
Внимание особое следует обратить на столбик Operands
А потом открываем datasheet (стр.217) на ATtiny2313 и видим - что инструкция CALL им не поддерживается!
Вот Proteus и ругается, и вовсе не потому что он тупой, а потому что кто-то не читает документации и help'ы
RJMP использовать для вызова подпрограмм не нужно!
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

mr.Kirill писал(а):открываем datasheet (стр.217) на ATtiny2313 и видим - что инструкция CALL им не поддерживается!
Об чем и пишет Студия в скриншоте выше.
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

mr.Kirill писал(а):А потом открываем datasheet (стр.217) на ATtiny2313 и видим - что инструкция CALL им не поддерживается!
Благодарю за исчерпывающий ответ, буду внимательнее.
Но всеж сильно меня смущяет тот факт, что моя AVR Studio call нормально скомпилила и в железе тинька это слопала. Или Atmel'овцы забыли убрать из моей тиньки call или... ну я даже незнаю. Ну ведь работает ведь в железе!

ps: Причесал программку с заменой всех call на rcall - теперь все отлично работает и в протеусе.

pps: Могу скомпиллить моей студией какие нибудь простенькие бегущие огни с использованием call, интересно, будут ли этот HEX работать на других tiny2313? Или у меня какой-то уникальный чип? :)
Мучитель микросхем
Аватара пользователя
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

У меня AVR Studio 4.13 build 557. Ругается.
У вас видимо версия <4.13, ну и как и любая программа - AVR Studio обладает глюками.
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

не парься
протеус 7.4 сильно глючный и у меня тоже в тиньке такая же ошибка
в старом протеусе все работает
Мучитель микросхем
Аватара пользователя
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

kalobyte писал(а):не парься
протеус 7.4 сильно глючный и у меня тоже в тиньке такая же ошибка
в старом протеусе все работает
Ответьте тогда на вопрос - почему при правильно написанной программе Proteus глючит, и все его поносят. А когда программа грамотно написана так все в Proteus'е нормально работает? И при этом никто ничего доброго про него не говорит.

Между прочим если Proteus и в самом деле в данном случае "глючит", то как объяснить ошибку AVR Studio при компиляции и мой пост касательно CALL и RCALL.
Опытный кот
Аватара пользователя
Сообщения: 828
Зарегистрирован: Пн мар 16, 2009 21:40:57

Сообщение ikarab »

mr.Kirill писал(а):никто ничего доброго про него не говорит.
Я постоянно толдычу что Шпротеус это гуд !
Контактная информация:
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

mr.Kirill писал(а):
kalobyte писал(а):не парься
протеус 7.4 сильно глючный и у меня тоже в тиньке такая же ошибка
в старом протеусе все работает
Ответьте тогда на вопрос - почему при правильно написанной программе Proteus глючит, и все его поносят. А когда программа грамотно написана так все в Proteus'е нормально работает? И при этом никто ничего доброго про него не говорит.
а зачем про него доброе говорить? он и предназначен для правильной работы
ты же не радуешся наличию у тебя 2х ног и рук? это нормально
вот если бы протеус еще за пивом бегал, это было бы радостной недокументированной фичей

а правильность программы подтверждает только правильность ее работы в железе

зы
мою прогу вмлаб симулирует правильно и потому протеус последний под подозрением
Мучитель микросхем
Аватара пользователя
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

kalobyte писал(а):зы
мою прогу вмлаб симулирует правильно и потому протеус последний под подозрением
Если VMLab выдает тот результат что ты хочешь видеть это вовсе не означает что программа написана верно.
Открыл глаза
Аватара пользователя
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

mr.Kirill писал(а):У меня AVR Studio 4.13 build 557. Ругается.
У меня AVR Studio 4.12 sp4 build 498. Видимо убирать команду из кристалла атмеловцам лень, решили изживать ее на уровне компилятора. А протеус таки неправ, мог бы и поддерживать недокументированные особенности эмулируемого железа для полной достоверности :)
Открыл глаза
Аватара пользователя
Сообщения: 46
Зарегистрирован: Ср янв 14, 2009 10:07:41

Сообщение Yurivz »

Будете смеяться - у меня опять сложности с протеусом :)
Попробовал запихать в CGRAM LCD свой набор символов и вывести их.
В железе работает, а протеус режет низ.
Изображение
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»