Страница 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 писал(а):Дак и студия ругается что "Кол" ансапотид - сапорта нетути.
:shock: У меня все успешно компиллится, получившийся 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 свой набор символов и вывести их.
В железе работает, а протеус режет низ.
Изображение