Например TDA7294

Форум РадиоКот • Просмотр темы - ATmega64 проблема с выходом из подпрограммы
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт июн 20, 2025 01:51:50

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: ATmega64 проблема с выходом из подпрограммы
СообщениеДобавлено: Ср апр 23, 2008 20:09:23 
Родился

Зарегистрирован: Ср апр 23, 2008 19:52:30
Сообщений: 6
Рейтинг сообщения: 0
При отладке программы в симуляторе AVR Studio 4, программа работает нормально, но при работе на микроконтроллере не записывает адрес возврата в стек и следовательно возвращается не по тому адресу. В чем может быть проблема?

.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\m64def.inc"
.def Temp1=R16
.def Temp2=R17
.def Temp3=R18

.cseg
.org 0
rjmp reset

.org 0x46
reset:
; init
cli
ldi Temp1,low(ramend)
out SPL,Temp1
ldi Temp1,high(ramend)
out SPH,Temp1

ser temp1
out ddrb,Temp1
clr temp1
out portb,temp1
cycle:
out portb,temp2
sbi portb,6
rcall wait
cbi portb,6
rcall wait
inc temp2
jmp cycle

ret

wait:
ldi Del1, 1
ldi Del2, 25
ldi Del3, 10
ddl1:
dec Del1
brne ddl1
dec Del2
brne ddl1
dec Del3
brne ddl1
ret


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср апр 23, 2008 20:38:24 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18395
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
это провокация: приведенный код не может быть скомпилирован без ошибок!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср апр 23, 2008 20:43:21 
Родился

Зарегистрирован: Ср апр 23, 2008 19:52:30
Сообщений: 6
Рейтинг сообщения: 0
Извинияюсь, убрал лишнее.
Хотел покомпактнее сделать.

.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\m64def.inc"
.def Temp1=R16
.def Temp2=R17
.def Temp3=R18
.def Rsaddr=R19; working rs address
.def Lcd=R20; data to or from LCD
.def T1=R21
.def T2=R22
.def Del1=R23
.def Del2=R24
.def Del3=R25

.cseg
.org 0
rjmp reset

.org 0x46
reset:
; init
cli
ldi Temp1,low(ramend)
out SPL,Temp1
ldi Temp1,high(ramend)
out SPH,Temp1

ser temp1
out ddrb,Temp1
clr temp1
out portb,temp1
cycle:
; out portb,temp2
sbi portb,6
rcall wait
cbi portb,6
rcall wait
inc temp2
jmp cycle

ret

wait:
ldi Del1, 1
ldi Del2, 25
ldi Del3, 10
ddl1:
dec Del1
brne ddl1
dec Del2
brne ddl1
dec Del3
brne ddl1
ret


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср апр 23, 2008 21:04:55 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Сб сен 09, 2006 19:00:18
Сообщений: 257
Откуда: СССР
Рейтинг сообщения: 0
Адрес возврата от куда?

jmp cycle
ret
Отсюда?


Вернуться наверх
 
В продаже новые LED-драйверы XLC компании MEAN WELL с диммингом нового поколения

Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.

Подробнее>>
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 24, 2008 06:00:19 
Родился

Зарегистрирован: Ср апр 23, 2008 19:52:30
Сообщений: 6
Рейтинг сообщения: 0
из функции wait
wait:
ldi Del1, 1
ldi Del2, 25
ldi Del3, 10
ddl1:
dec Del1
brne ddl1
dec Del2
brne ddl1
dec Del3
brne ddl1
ret


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 24, 2008 08:52:43 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вт сен 11, 2007 10:27:08
Сообщений: 335
Откуда: Киев
Рейтинг сообщения: 0
А почему ты захотел вместо call использовать rcall, а вместо jmp -> rjmp не захотел?


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 24, 2008 09:41:56 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18395
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
не может этого быть! такая программа никуда не денется - выйдет как миленькая. может, просто тактовая МК слишком маленькая (или он вообще не тактируется - благодаря фьюзикам разлюбезным) - вот и вся проблема?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 24, 2008 20:54:14 
Родился

Зарегистрирован: Ср апр 23, 2008 19:52:30
Сообщений: 6
Рейтинг сообщения: 0
Проблема не решена.
Дополнительные данные:
Программатор JTAG ICE.
Включены фьюзы:
CompMode
OCDEN
JTAGEN
SPIEN
BOOTSZ - Boot Flash size = 4096 words Boot Address=$7000
BODLEVEL - VCC = 2.7
SUT_CKSEL - ext. crystal/resonator high freq; start up time 1K CK+64ms
EXTENDED=0xFD
HIGH=19
LOW=0xCF

По отладчику и появлению сигнала на порту видно, что схема тактируется.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 25, 2008 09:08:49 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вт сен 11, 2007 10:27:08
Сообщений: 335
Откуда: Киев
Рейтинг сообщения: 0
Может деться, попробывал, не работает, а если вместо jmp поставить rjmp то все ОК. Незнаю даже где грабли.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 25, 2008 09:44:03 
Встал на лапы

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Вт апр 17, 2007 15:24:47
Сообщений: 119
Откуда: Новосиб
Рейтинг сообщения: 0
ты команды push-pop не юзаешь? Такое бывает если неверно использовать стек.

_________________
Всё просто как самогонный аппарат


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 25, 2008 23:59:08 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вт сен 11, 2007 10:27:08
Сообщений: 335
Откуда: Киев
Рейтинг сообщения: 0
Думаю тут дело в этих загадочных .org 0x46, по памяти было сталкивался что авр студио на них не особо оказывает влияние, поэтому и компилирует и отлаживает отлично, и команды переходов и вызовов отрабатывает корректно. Но в проце на это нельзя забивать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 26, 2008 04:47:07 
Встал на лапы

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Вт апр 17, 2007 15:24:47
Сообщений: 119
Откуда: Новосиб
Рейтинг сообщения: 0
а зачем тебе вообще ORG нужен??? Я его использую только если надо разместить бинарник в какомто особом месте. Компилятор всё сам сделает.

_________________
Всё просто как самогонный аппарат


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 26, 2008 08:19:32 
Родился

Зарегистрирован: Ср апр 23, 2008 19:52:30
Сообщений: 6
Рейтинг сообщения: 0
org использую чтобы пропустить адреса прерываний
это не влияет на глюк, также как и rjmp и jmp, rcall и call.
pop и push не использую


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 26, 2008 08:37:06 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Сб сен 09, 2006 19:00:18
Сообщений: 257
Откуда: СССР
Рейтинг сообщения: 0
А разве компилятор это делать не умеет? Попробуй без .ОРГ.
rjmp и jmp в документации описаны, и они отличаются, так же как и call rcall icall...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 26, 2008 09:40:10 
Встал на лапы

Карма: -1
Рейтинг сообщений: -1
Зарегистрирован: Вт апр 17, 2007 15:24:47
Сообщений: 119
Откуда: Новосиб
Рейтинг сообщения: 0
для конечного пользователя они не отличаются. А прерывания по дефолту отключены, такчто можешь смело писать прогу с нулевого адреса.

_________________
Всё просто как самогонный аппарат


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 26, 2008 12:06:00 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вт сен 11, 2007 10:27:08
Сообщений: 335
Откуда: Киев
Рейтинг сообщения: 0
Скорее всего, как сказал ARV что-то с фьюзами или подключением или со схемой. А так все работет, лично проверил. Не полениля светодиод к ноге припаять, мигает с частотой ~2-3 Гц.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс апр 27, 2008 19:11:20 
Родился

Зарегистрирован: Ср апр 23, 2008 19:52:30
Сообщений: 6
Рейтинг сообщения: 0
Проблема решилась.
Дело и правдо было в неверно выставленных фъюзах.
Был включен режим совместимости ATmega103. А в этом режиме память распределяется немного подругому. И то что компилятор считает последним адресом сегмента данных SRAM, на самом деле оказывается адресом сегмента External SRAM.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATmega64 проблема с выходом из подпрограммы
СообщениеДобавлено: Ср окт 17, 2012 04:17:25 
Открыл глаза
Аватар пользователя

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Пт апр 04, 2008 22:51:33
Сообщений: 44
Рейтинг сообщения: 0
ЯХУУУУУ! Вот где засада сидела. Хвала автору проблемы. Дурацкий бит, а сколько проблем.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y