Страница 43 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт июн 03, 2010 21:46:49
GP1
IM1
Предлагаю перейти на "личности"

(в смысле в личную переписку)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 14:30:41
MTF
Всем привет !!!
Давно что то не занимался своим устройством вот опять решил занятся и наткнулся на небольшую проблемку
вопрос к спецам :
Не могу проверить порт B attiny2313 настроенный как вход без подтяжки
Код: Выделить всё
ldi r16,0b00001111 ;Set Ini Ports func (DIRECTIO)
out ddrb,r16 ; DDRB
ldi r16,0b00000000 ;Set Ini Ports value (VALUE)
out portb,r16 ; PORTB
на наличее на входе плюса взятого с порта PD4
проверяю так
Код: Выделить всё
; основная прогр
*************
*************
*************
Enable:
sei
sbi portd , 4
sbic pinb , PB4 ; "+"(PB4)
rjmp PwrOn
; sbic pinb , PB5 ; "-"(PB5)
; rjmp PwrOn
********
********
rjmp Enable ;
PwrOn:
********
sbic почему то не пропускает , сразу переходит на PwrOn (даже не нажимая на кнопку), попробовал sbis тоже сразу переходит !!!
там что одновременно 1 и 0 ????
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 14:42:28
GP1
если вход без подтяжки, то это означает что pinbx будет присутствовать примерно 1/2Vcc что соответствует лог.1, поэтому программа правильно переходит.
замкни вывод на корпус и ...
вот оно счастье

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 14:49:56
MTF
GP1 если помните у меня динамическая индикация с
общим катодом на катодах 4 кнопки с 4 диодами
_noise давал алгоритм работы !!!
http://radiokot.ru/forum/viewtopic.php?f=20&t=28364
вот и приходится с плюсом марочится с +
то это означает что pinbx будет присутствовать примерно 1/2Vcc что соответствует лог.1, поэтому программа правильно переходит.
я согласен а почему также переходит по команде sbis ???
как нибуть еще можно проверить ????
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 14:58:53
GP1
без подтяжки к + или массе ни как, висящий в воздухе вывод - это вещь в себе: антенна для помех, указатель цены на дрова в прошлом году
ну для проверки можно же подключиться к чему-то определенному, чтобы исключить влияние вспышек на солнце и дрейфа айсбергов.
Освежил в памяти твой проектик, смотри, когда ты переключаешь потрБ на вход ни что не мешает подтянуть его встроенными резюками к +.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 15:10:11
MTF
т.е пока я не включу подтяжку на входе ни чего определенного не будет я правильно понял ???
если я включу внутреннюю подтяжку, у меня ведь плюс будет на входе , минус я так понял внешнее сопр надо ставить , а хотелось бы без него ???
Какие нибуть варианты еще возможны ????
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 15:15:37
GP1
так и будет.
если верить схеме подключения кнопок, то без сопры на кнопке не обойтись.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 15:19:34
MTF
если я минус подам на катоды у меня засветится цифра последняя загруженная в 74ls164
но это можно подправить придется после настройки на вход порт B еще дополнительно стирать из 74ls164 послед цифру , а то при подачи минуса на portb подсветится индикатор , и диоды
перепаять придется

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 15:32:03
GP1
не совсем так, у тебя будут высвечиваться все цифры, ты же не сможешь обеспечить нажатие кнопки строго в момент опроса, кнопка по-любому будет нажатой N-циклов динамической индикации всех разрядов.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 15:44:52
MTF
GP1 что же делать не пойму , с + бы проблем не было но геморойно реализовать навесным не хотелось бы , c - тоже загвозка есть с индикацией ????
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 18:55:50
GP1
да честно говоря я не вижу проблемы.
1. при опросе переключаешь выводы на вход
2. подключаешь подтягивающие резисторы
3. считываешь кнопку(и)
4. возвращаешь порт в исходное
единственное, без добавочного резистора на кнопке никак.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июн 08, 2010 22:13:58
MTF
to
GP1единственное, без добавочного резистора на кнопке никак.
это тот резистор который предлагал
ooogo http://radiokot.ru/forum/download/file.php?id=31171
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср июн 09, 2010 12:35:36
GP1
он самый

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср июн 09, 2010 17:56:35
selevo
загрузил в avr studio 4 hex файл
дизассемблер показывает какие-то пропущенные строки со знаками вопросов вместо операндов
что за опкоды такие которые не понятны студии ?
или надо сменить адрес начала дизассемблирования ?

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср июн 09, 2010 19:40:34
SII
Это могут быть какие-то константы, а не команды. Надо разбираться по логике работы программы.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс июн 13, 2010 11:54:06
Prevan
Зравствуйте! Подскажите как присвоить значение отдельным битам порта содержимое какой-нибудь переменной?
например:
out PORTD,temp ;будет просто установлено значение переменной temp в порт D
а мне надо в порт С на 3ю ножку установить значение такое же как на 6м бите перменной temp и таким же образом раскидать другие переменные.
И наоборот. Как можно сделать обратную операцию, т.е. из разных битов портов составить содержимое переменной temp?
например:
in temp,PINC ;будет просто скопировано значение состояния порта С переменную temp
Дело в том, что мне необходимо "мягко" изменить код программы, не прибегаю к полному переписанию кода программы. Переменные, указанные в программе работают со старым подключением проводов к ножкам МК.
т.е. мне надо будет изменить следующий код:
out PORTD,scancod
clc
ldi rots,4
in temp,PINC
где:
PD0 <->PD4
PD1 <->PD5
PD4 <->PC0
PD5 <->PC1
PD6 <->PC2
PD7 <->PC3
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс июн 13, 2010 14:01:31
Pooher
Код: Выделить всё
sbrc temp, x ; Если бит х в РОН temp сброшен, пропустить след. команду
sbi PORTy, z ; Установить бит z прота y
sbrs temp, x ; Если бит х в РОН temp установлен, пропустить след. команду
cbi PORTy, z ; сбросить бит z прота y
Ну, как то так...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс июн 13, 2010 16:59:13
Prevan
Pooher писал(а):Ну, как то так...
Спасибо, логичное решение. По такому принципу исправил свой код, получил:
Код: Выделить всё
andi PORTD, $CF; обнулить биты 4 и 5
andi PORTC, $F0; обнулить младший полубайт
sbrc scancod, 0 ; Если бит 0 в РОН scancod сброшен, пропустить след.команду
sbi PORTD, 4 ; Установить бит 4 прота D
sbrc scancod, 1 ; Если бит 1 в РОН scancod сброшен, пропустить след. команду
sbi PORTD, 5 ; Установить бит 5 прота D
sbrc scancod, 4 ; Если бит 4 в РОН scancod сброшен, пропустить след. команду
sbi PORTC, 0 ; Установить бит 0 прота C
sbrc scancod, 5 ; Если бит 5 в РОН scancod сброшен, пропустить след. команду
sbi PORTC, 1 ; Установить бит 1 прота C
sbrc scancod, 6 ; Если бит 6 в РОН scancod сброшен, пропустить след. команду
sbi PORTC, 2 ; Установить бит 2 прота C
sbrc scancod, 7 ; Если бит 7 в РОН scancod сброшен, пропустить след. команду
sbi PORTC, 3 ; Установить бит 3 прота C
clc
ldi rots,4
clr temp;
sbrc PIND, 4 ; Если бит 0 в РОН scancod сброшен, пропустить след. команду
sbi temp, 0 ; Установить бит 4 прота D
sbrc PIND, 5 ; Если бит 1 в РОН scancod сброшен, пропустить след. команду
sbi temp, 1 ; Установить бит 5 прота D
sbrc PINC, 0 ; Если бит 4 в РОН scancod сброшен, пропустить след. команду
sbi temp, 4 ; Установить бит 0 прота C
sbrc PINC, 1 ; Если бит 5 в РОН scancod сброшен, пропустить след. команду
sbi temp, 5 ; Установить бит 1 прота C
sbrc PINC, 2 ; Если бит 6 в РОН scancod сброшен, пропустить след. команду
sbi temp, 6 ; Установить бит 2 прота C
sbrc PINC, 3 ; Если бит 7 в РОН scancod сброшен, пропустить след. команду
sbi temp, 7 ; Установить бит 3 прота C
только при запуске выдаёт ошибки на первые две строки Invalid register и на второй блок команд (после строчки clr temp;) почерёдно Invalid register и Invalid number
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс июн 13, 2010 17:16:35
Pooher
1. Прямо к портам обращаться нельзя.
Надо так:
Код: Выделить всё
in temp, PORTD
andi temp, $CF
out PORTD, temp
2.
для РОН - команда
SBR
3.
sbrc PINC, 1
здесь команда
SBIC
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пн июн 14, 2010 16:05:51
Jack_A
selevo писал(а):загрузил в avr studio 4 hex файл
дизассемблер показывает какие-то пропущенные строки со знаками вопросов вместо операндов
что за опкоды такие которые не понятны студии ?
или надо сменить адрес начала дизассемблирования ?
Между векторами прерываний и обработчиком старта или данные, или скорее всего, мусор. Бессмысленный набор, если рассматривать как команды. Копировать пару регистров и следующей же командой затирать регистры - ясен пень, мура. Отсюда и неизвестные опкоды.
Я бы рекомендовал включить дебагер и в шаговом режиме пройти хотя бы первую команду rjmp Start, и уже от этого адреса дизасемблироваь дальше. И не факт, что такая же фигня не окажется в другом месте, если кодовые сегменты имеют разрывы :
Сегмент кода 1
........
.org 0xХХХ
Сегмент кода 2
А разбираться - мусор это или данные - нужно анализировать наличие команд LPM. Если есть, и указатель выставлен на это место памяти, - значит, что-то осмысленное. Я так никогда не делаю - константы закидываю в конец флеш-памяти.