I wrote this code for avr atmega328P in assembly language. It turns on and off an LED using a push button, but in proteus I am getting this error:
Invalid opcode 0xFFFF at PC=0x002A
This is my code:
.INCLUDE "M328Pdef.inc"
ldi r16,HIGH(RAMEND)
out SPH, R16
ldi r16,LOW(RAMEND)
out SPL, R16
start:
ldi r16,0xFF
out DDRB,r16
ldi r17,0x00
out DDRD,r17
ldi r21,0x00
ldi r23,0x01
Forever:
in r20,PIND
cp r20,r21
BREQ ledon
cp r20,r23
BREQ ledoff
rjmp Forever
ledon:
ldi r22,0x01
out PORTB,r22
ret
ledoff:
ldi r24,0x00
out PORTB,r24
ret
Does anyone have a solution for it?
Форум РадиоКот • Просмотр темы — Проблема с запуском atmega128 в протеусе
Сообщения без ответов | Активные темы
ПРЯМО СЕЙЧАС: |
Автор | Сообщение | ||
---|---|---|---|
|
Заголовок сообщения: Проблема с запуском atmega128 в протеусе
|
||
Зарегистрирован: Ср май 22, 2013 19:18:17 Рейтинг сообщения: 0
|
Приветствую! |
||
Вернуться наверх |
Профиль
|
||
Реклама | |
|
|
EDSedov |
Заголовок сообщения: Re: Проблема с запуском atmega128 в протеусе
|
||
Карма: 10 Рейтинг сообщения: 0
|
dir.as писал(а): invalid opcode 0xffff at pc=0x11f6 Переводится «поврежденный код», прошивку проверьте, можно даже на других контроллерах(с подстройкой кода программы под них) и/или симуляторах. |
||
Вернуться наверх | |||
Реклама | |
|
|
dir.as |
Заголовок сообщения: Re: Проблема с запуском atmega128 в протеусе
|
||||
Зарегистрирован: Ср май 22, 2013 19:18:17 Рейтинг сообщения: 0
|
вот прошивка может что нибудь подскажет
|
||||
Вернуться наверх | |||||
EDSedov |
Заголовок сообщения: Re: Проблема с запуском atmega128 в протеусе
|
||
Карма: 10 Рейтинг сообщения: 0
|
А пишите на каком языке, в какой среде разработки? |
||
Вернуться наверх | |||
Реклама | |
|
Вебинар «Мощные модульные системы питания MEAN WELL 3+N. Новинки и хиты» (22.06.2023)
Приглашаем 22 июня на вебинар, посвященный подходу компании MEAN WELL к созданию мощных управляемых систем низковольтного и высоковольтного питания и зарядных установок для промышленного, технологического, телекоммуникационного, медицинского, радиопередающего и другого оборудования, а также для систем альтернативной энергетики. Подробнее>> |
Gudd-Head |
Заголовок сообщения: Re: Проблема с запуском atmega128 в протеусе
|
||
Карма: 67 Рейтинг сообщения: 0
|
dir.as писал(а): есть какие нибудь идеи на счет этой ошибки Есть. Вызывается команда (загружается 0x11f6 в РС) из пустого места в МК. |
||
Вернуться наверх | |||
Реклама | |
|
|
dir.as |
Заголовок сообщения: Re: Проблема с запуском atmega128 в протеусе
|
||
Зарегистрирован: Ср май 22, 2013 19:18:17 Рейтинг сообщения: 0
|
если в протеусе ставлю фьюз BOOTRST= programmed то выходит другая ошибка invalid opcode pc=0x1f002 |
||
Вернуться наверх | |||
Engineer_Keen |
Заголовок сообщения: Re: Проблема с запуском atmega128 в протеусе
|
||
Карма: 32 Рейтинг сообщения: 0
|
Походу HEX тупо обрезан до 32кБ. Поэтому в обоих случаях происходит переход в «пустое» место флеша. Может какое-то ограничение компилятора? |
||
Вернуться наверх | |||
Кто сейчас на форуме |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |
While running a program compiled in the Arduino IDE 1.8.5 and then using the .ELF
file inside LabCenter Proteus 8.0, for an Arduino Nano ATMEL Mega 328P, for a code involving the use of the SoftwareSerial.h
Library, hence involving several loops, without user interaction, I am getting the following error:
Invalid opcode 0x0024 at PC=0x0096
Now I am completely lost. According the AVR Instruction Set Manual such opcode should (not sure about this?) be RETI — Return From Interrupt at the Program Line (?) no.150 = 0x096. The full code has 779 lines plus several library calls, and the line 150 happens to fall just before the loop()
function (?), which should never repeat, being just a declaration.
So, how should I debug this error? Evidently I am not asking to solve the problem for me but, how should I proceed for debugging it and find the real error?
I have been unable to find in Proteus a tool for «Debug Stop if Error»
I have been unable to isolate the error in a simple way to share. It should be related someway with interruptions used by the library SoftwareSerial.h
, because at some modifications of the program, the code freezes at an interruption return. I am working on that, but advancing really slowly actually.
Related question No.1.
Как откомпилить бутлоадер в hex?
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже.
Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Доброго времени суток. Пишу мигающий светодиод на Avr ассемблере под Atmega16, среда AVR Studio 4.
Написал отдельную подпрограмму для задержки, получилось что-то вроде этого:
Assembler | ||
|
Дебажу через AVR Simulator. На скрине ниже — среда после вызова процедуры.
На вершине стека после вызова лежит совершенно непонятное число вместо адреса возврата. Дебаггер пишет Uninitialized stack pointer used at 0x0002, а после ret — Invalid opcode 0xffff at address 0x00e8e8; затем управление переходит к началу программы. Подскажите, в чем ошибка и как её исправить?