Асемблерные непонятки ( tiny10 не выполнение команды)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение FUZZY_ »

Принялся за изучение ассемблера для tiny10
Столкнулся с проблемой - не выполняется команда в 299 строчке
если закоментировать команду nop в 298 строчке то све работает

на PB1 , PB0 включены светодиоды

Прерывание таймера 0 управляет яркостью на PB1 - работает нормально

В основной програме необходимо помигать на PB0 - но тут загвоздка - не выполняется команда

299 cbi PORTB,PB0

Подскажите советом
Вложения
ATTiny10.asm
(13.71 КБ) 396 скачиваний
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение ploop »

Не понял, а как вы догадались, что не работает?
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение Kavka »

А как вы определили, что она не выполняется?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение FUZZY_ »

На макетке проверил:
---------------------------------------------------------------------------------------
sbi PORTB,PB0 ;<----зажечь светодиод (Зажигается)

; Тут крутится цикл главной прораммы

loop:
;===============
nop ;<-- тут работает если закоментировать nop
cbi PORTB,PB0 ;<--- а тут уже не работает команда не выполняется (в этой позиции не гасится)
nop

;================
rjmp loop
Последний раз редактировалось FUZZY_ Чт янв 26, 2012 19:24:04, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение ploop »

необходимо помигать
А где же там мигание? Там включение его в цикле, и всё
Реклама
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение FUZZY_ »

Да
Перед вхождением в цикл он включается

А в цикле он должен быть выключен - но не выключается на макетке

(Все лишнее (мигание светодиода ) было убрано для определения точки с которой не работает)

Другой светодиод горит с заданой яркостью что говорит о том что прерывание таймера обрабатывается
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение Kavka »

Хмм. Дельных идей, что-то нет.
Может WDT чем насолил - в каком состоянии WDTON fuse?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение ploop »

Отключи прерывания закомменти настройки вачдога. Проверь, гаснет ли светодиод.
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение FUZZY_ »

WDTR отключен вначале вообще вначале обработчика RESET


WDT_off:
wdr
; Clear WDRF in RSTFLR
in r16, RSTFLR
andi r16, ~(1<<WDRF)
out RSTFLR, r16
; Write signature for change enable of protected I/O register
ldi r16, 0xD8
out CCP, r16
; Within four instruction cycles, turn off WDT
ldi r16, (0<<WDE)
out WDTCSR, r16


Светодиод гаснет если закоментировать первую команду nop в строке 298 - это я писал выше

Такое ощущение что на команде nop контролер зацикливается что-то вроде (rjmp $)
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение FUZZY_ »

000047 9a10 sbi PORTB,PB0


loop:
000048 0000 nop
000049 9810 cbi PORTB,PB0
00004a 0000 nop


00004b cffc rjmp loop <------- ???????? - вот что выдал компилятор [ CF FC ]


код команды rjmp -> c0
адрес перехода адрес loop

aа что за хрень [ CF FC ] ????????
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение ploop »

aа что за хрень [ CF FC ] ????????
C - rjmp (относительный прыжок)
FFC - прыгнуть назад на 2 слова (FFF = -1, FFC = -2)
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение BOB51 »

tini10 - довольно хитрый чип... требуется последняя версия описания команд...
посмотрю попозже чего там, жаль "живьем" поглядеть не начто...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение BOB51 »

Начнем с того, что этот фрагмент только погасит светик (при условии, что светящемуся соответствует 1 на PB0):
« sei ;разрешили прерывания
sbi PORTB,PB0 ;<----зажечь светодиод
;--------------------------------------------------------------------
; Тут крутится цикл главной прораммы
;--------------------------------------------------------------------
loop:
nop ;<-- тут работает если закоментировать nop
cbi PORTB,PB0 ;<--- а тут уже не работает команда не выполняется
nop

;================
rjmp loop

«
И если светик после этого мигает – явно мы имеем дело с «глюком».
Второе замечание :
Длина программного кода не должна превышать 512 слов!
(512 простых 2-байтовых команд )

Иначе программа «пойдет по кругу»=reset.
Вписаться в такое количество слов (команд) на сложных программах весьма трудоемко :cry:
Советую проверить листинг транслятора (мне сложно определить – часть команд «закомментирована») – если судить по эффекту – возможно как раз «исчерпание физической памяти» - убрал лишнюю команду и «вписался» в последний байт…
:beer:
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение ploop »

Длина программного кода не должна превышать 512 слов!
А транслятор идиот что-ли? Он больше и не пропустит.
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение Kavka »

А компилятору то сообщили, что надо для тини10 код генерить?
И вы ссылаетесь в коде на RAMEND, а где он определён?
И где подключение tn10def.inc? Закоментарено...
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение ploop »

И где подключение tn10def.inc? Закоментарено...
Ааа... точно. На это внимание не обратил.
Но без этого не откомпилилось бы вообще, т.к. он не нашел бы ни одного идентификатора...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение BOB51 »

на первых тестах все может быть - тем более на этих кристаллах (tiny10) новый принцип организации памяти применен - тут только проверять заведомо проверенными тестами (без "наворотов") и контролировать на макете...
увы- пока сам возможности проверить макетом не имею... :cry:
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение FUZZY_ »

По поводу компилятора:
Вложения
make.jpg
(24.44 КБ) 270 скачиваний
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение FUZZY_ »

Вот немного измененая программа .

В преривании убраны команды cli sei - что было причиной непонятности работы

светодиод должен менять яркость от мах bri=1 до min bri=99 затем от min до max
и так далее...

но опять глюк:

Один светодиод меняет яркость от мах до выключения (хотя выключатся не должен)

другой мигает -ок

Привожу код
Вложения
ATTiny10.asm
(8.12 КБ) 422 скачивания
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: Асемблерные непонятки ( tiny10 не выполнение команды)

Сообщение FUZZY_ »

Причина банальна при входе в прерывание не сохранялся регистр sreg

Все заработало
Закрыто

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