Страница 1 из 2
Proteus 7.4 затыкается на команде call (tiny2313)
Добавлено: Сб апр 18, 2009 02:41:11
Yurivz
Написал мелкую прогу, в железе программка работает отлично.
Далее решил поиграться и дописать функционал в протеусе - а фик.
Протеус (7.4 sp3) стопается с ошибкой "Invalid opcode 0x940E at PC-0x003A". Гружу в протеус тот-же HEX, который работает в железе. Включаю дизассемблер, там где в avr-студио у меня стоит команда call - дизасм протеуса показывает invalid два раза, далее прога дизассемблируется нормально, но на месте всех call - два invalid.
Кто виноват? Что делать?
Re: Proteus 7.4 затыкается на команде call (tiny2313)
Добавлено: Сб апр 18, 2009 08:54:04
ikarab
Yurivz писал(а):Что делать?
Проект приложить укоротив код до предела.
Добавлено: Сб апр 18, 2009 10:42:29
Yurivz
Вот, прикрепил...
Стоит раскоментарить "Call" - Proteus ругается.
Добавлено: Сб апр 18, 2009 11:07:14
ikarab
Дак и студия ругается что "Кол" ансапотид - сапорта нетути.
я кол заменил на rjmp заработало. выж все равно rjmp ниже использовали.
Добавлено: Сб апр 18, 2009 12:47:43
ibiza11
пиши rcall а не call
Добавлено: Сб апр 18, 2009 12:55:14
Yurivz
ikarab писал(а):Дак и студия ругается что "Кол" ансапотид - сапорта нетути.

У меня все успешно компиллится, получившийся HEX заливается в железную ATtiny2313 и прекрасно там работает.

я кол заменил на rjmp заработало. выж все равно rjmp ниже использовали.
А как потом возвращаться откуда вызвали? Как по хорошему организовывать обращение к подпрограммам?
Добавлено: Сб апр 18, 2009 13:01:12
ikarab
Yurivz писал(а):А как потом возвращаться откуда вызвали?
Я на АСМ не пишу и потому не ведаю.
Yurivz писал(а):Как по хорошему организовывать обращение к подпрограммам?
Так как сделано в примерах других писателей.
Добавлено: Сб апр 18, 2009 13:12:51
Yurivz
ibiza11 писал(а):пиши rcall а не call
А в чем различие между этими командами?
Интересно, почему моя AVR Studio (4.12 sp4 build 498) без проблем это компиллит и оно без проблем работает в железе?
ps: Куда катится этот мир... Имеем реальный геморой из-за виртуальных железячек

Добавлено: Сб апр 18, 2009 13:29:13
ikarab
Yurivz писал(а): в чем различие между этими командами?
Наверняка в ДШ написано.
Добавлено: Сб апр 18, 2009 13:41:17
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 использовать для вызова подпрограмм не нужно!
Добавлено: Сб апр 18, 2009 14:07:07
ikarab
mr.Kirill писал(а):открываем datasheet (стр.217) на ATtiny2313 и видим - что инструкция CALL им не поддерживается!
Об чем и пишет Студия в скриншоте выше.
Добавлено: Сб апр 18, 2009 14:19:44
Yurivz
mr.Kirill писал(а):А потом открываем datasheet (стр.217) на ATtiny2313 и видим - что инструкция CALL им не поддерживается!
Благодарю за исчерпывающий ответ, буду внимательнее.
Но всеж сильно меня смущяет тот факт, что моя AVR Studio call нормально скомпилила и в железе тинька это слопала. Или Atmel'овцы забыли убрать из моей тиньки call или... ну я даже незнаю. Ну ведь работает ведь в железе!
ps: Причесал программку с заменой всех call на rcall - теперь все отлично работает и в протеусе.
pps: Могу скомпиллить моей студией какие нибудь простенькие бегущие огни с использованием call, интересно, будут ли этот HEX работать на других tiny2313? Или у меня какой-то уникальный чип?

Добавлено: Сб апр 18, 2009 14:55:48
mr.Kirill
У меня AVR Studio 4.13 build 557. Ругается.
У вас видимо версия <4.13, ну и как и любая программа - AVR Studio обладает глюками.
Добавлено: Сб апр 18, 2009 17:02:45
kalobyte
не парься
протеус 7.4 сильно глючный и у меня тоже в тиньке такая же ошибка
в старом протеусе все работает
Добавлено: Сб апр 18, 2009 18:30:49
mr.Kirill
kalobyte писал(а):не парься
протеус 7.4 сильно глючный и у меня тоже в тиньке такая же ошибка
в старом протеусе все работает
Ответьте тогда на вопрос - почему при правильно написанной программе Proteus глючит, и все его поносят. А когда программа грамотно написана так все в Proteus'е нормально работает? И при этом никто ничего доброго про него не говорит.
Между прочим если Proteus и в самом деле в данном случае "глючит", то как объяснить ошибку AVR Studio при компиляции и мой пост касательно CALL и RCALL.
Добавлено: Сб апр 18, 2009 19:25:25
ikarab
mr.Kirill писал(а):никто ничего доброго про него не говорит.
Я постоянно толдычу что Шпротеус это гуд !
Добавлено: Сб апр 18, 2009 21:12:17
kalobyte
mr.Kirill писал(а):kalobyte писал(а):не парься
протеус 7.4 сильно глючный и у меня тоже в тиньке такая же ошибка
в старом протеусе все работает
Ответьте тогда на вопрос - почему при правильно написанной программе Proteus глючит, и все его поносят. А когда программа грамотно написана так все в Proteus'е нормально работает? И при этом никто ничего доброго про него не говорит.
а зачем про него доброе говорить? он и предназначен для правильной работы
ты же не радуешся наличию у тебя 2х ног и рук? это нормально
вот если бы протеус еще за пивом бегал, это было бы радостной недокументированной фичей
а правильность программы подтверждает только правильность ее работы в железе
зы
мою прогу вмлаб симулирует правильно и потому протеус последний под подозрением
Добавлено: Сб апр 18, 2009 21:59:16
mr.Kirill
kalobyte писал(а):зы
мою прогу вмлаб симулирует правильно и потому протеус последний под подозрением
Если VMLab выдает тот результат что ты хочешь видеть это вовсе не означает что программа написана верно.
Добавлено: Вс апр 19, 2009 03:27:17
Yurivz
mr.Kirill писал(а):У меня AVR Studio 4.13 build 557. Ругается.
У меня AVR Studio 4.12 sp4 build 498. Видимо убирать команду из кристалла атмеловцам лень, решили изживать ее на уровне компилятора. А протеус таки неправ, мог бы и поддерживать недокументированные особенности эмулируемого железа для полной достоверности

Добавлено: Вс апр 19, 2009 04:18:24
Yurivz
Будете смеяться - у меня опять сложности с протеусом

Попробовал запихать в CGRAM LCD свой набор символов и вывести их.
В железе работает, а протеус режет низ.
