Страница 325 из 399
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт фев 15, 2018 09:09:25
sirha
В передатчике вкл контроль четности и в приемнике,на осциллографе при передаче виден 9 бит контроля четности,но приемник видит постоянно PE=0 вне зависимости от передачи чисел 0x31 или 0x30,что не так?
байт передан,9 бит передан ,я так понял что приемник нужно настроить на 9 бит ?,как я это и сделал ,токо PE=0 всегда
Обьясните пожалуйста я к примеру установлю проверку на четность EVEN тоесть четное,тоесть к примеру если я буду передавать приемнику число 0b00000111 то флаг PE должен поставиться в 1 так как число не четное ,так ведь ?,почему этого не происходит((
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт фев 15, 2018 21:49:56
Серый_
Что мешает всё настроить одинаково? Скорость, битаж (8), стоп биты 1...2, остальное там чего...
P. s. пропустил мимо глаз, что протеус - ну тогда ни чему не удивлюсь.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт фев 16, 2018 07:48:34
sirha
да пробовал одинаково,все равно PE=0,пытаюсь также флаг FE посмотреть когда срабатывает,тоже фигня какая то((,если долго тяну 0 стоп бит то все виснет,если не очень долго то все равно нету FE хоть убей,пробовал atmega16 все также,скачивал разные версии протеуса без разницы,ребят может кто поможет,работают ли эти флаги в протеусе?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт фев 16, 2018 09:20:45
akl
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт фев 16, 2018 09:57:42
sirha
СПС,я уже разобраля флаги FE,PE действительно не работают в протеусе,решил посмотреть в окно ошибок proteus,там ошибки есть,а флаги не выставляются.
для atmega8
Есть две проверки на четность задаются регистрами UPM
EVEN-проверяем на четность
ODD-проверяем на нечетность
В передатчике как и в приемнике должно быть включено все одинаково,9 битную передачу отдельным регистром тут можно не включать,достаточно 8 битной ,я сначала в этом запутался.
(можно конечно и отдельно без флагов проверять бит четности,для этого нужно включить 9 битную передачу в приемнике с помощью регистров, а в передатчике задействовать регистры UPM,в приемнике смотреть 9 бит RX8,а дальше арифметически проверять принятые байты считая для них четное или нечетное число и сравнивать с 9 битом,но проще я думаю с флагами

).
Флаг PE проверяется так:
Сравнивается 9 бит передатчика тоесть как раз бит четности или нечетности с принятым байтом передатчика - PE выставляет приемник ,который вычисляет бит четности или не четности этого байта.
поэтому важно все настроить одинаково как у передатчика так и у приемника.
например выберем режим EVEN шлем число 0b00000011 соответственно бит четности равен 1, так как в числе две единицы, говорим да тоесть 1,если число 0b00000111 то бит четности равен 0,так как число нечетное то нет, это 0.
аналогично все и для ODD токо эта уже проверка на нечетность.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 11:09:42
Jetetex
Помогите профану. Нужно в ассемблере на Attiny 2313 сделать 16-ти разрядный счётчик (+1 в каждом такте), но не могу разобратся с командами ADD, ADC.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 11:14:02
dgrett
Используйте ADIW
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 12:04:04
BOB51
Это конечно неплохо... НО только для диапазона 0-63...
при размещении слагаемых в регитсрах проблем особо нету
Код: Выделить всё
r16=1 ;0-255
r17=0 ;0-255
r18=cntl
r19=cnth
итогом
add cntl,r16
addc cnth,r17
Однако базовый алгоритм относительно АВРок (не имеющих команд сложения с непосредственными данными) при многобайтовом сложении с непосредственными данными (диапазон 1-127) потребует применения команд subi/sbci приемник, (-константа)
Иногда достаточно
Код: Выделить всё
Inc cntl
brne endp ; аналогия JNZ метка
inc cnth
endp:......

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 12:08:45
dgrett
Так ведь ТС и хочет +1, каждый такт инкремент
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 12:17:44
BOB51
Это общая схема - без ограничения по разрядности и без использования парных регистров в примитивных целях.
Их и так не очень много "в свободном виде" - только индекс-указатели Z,X и Y да еще R24:R25.
Занимать их в программе просто под считалку тактов весьма нерационально.
Кстати... для потактового счета лучше свободный аппаратный счетчик настроить.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 12:20:19
dgrett
[uquote="BOB51",url="/forum/viewtopic.php?p=3310796#p3310796"]Кстати... для потактового счета лучше свободный аппаратный счетчик настроить.

[/uquote]
Согласен, я так и делал бы
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 12:28:34
BOB51
Программные тоже не помешают, мало ли чего считать потребуется.
Тем более, что инкремент/декремент применимы КО ВСЕМ регистрам r0-r31.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 14:21:12
Alexeyslav
Когда речь идёт об одном регистре то без проблем, а когда надо больше 255 считать тут уже возникают проблемы... INC(DEC) не выставляет флаг переноса(заёма) при переполнении!!! Вот такой вот нежданчик...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 15:46:55
Starichok51
зато INC (DEC) выставляют флаг НУЛЯ!
и проверку на нуль делаем командой brne. ну, или breq...
выше BOB51 уже про это писал.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 16:30:44
akl
[uquote="Jetetex",url="/forum/viewtopic.php?p=3310748#p3310748"]... на Attiny 2313 сделать 16-ти разрядный счётчик (+1 в каждом такте)...[/uquote]Программный, думаю, не получится.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 16:44:13
BOB51
Дословно да - не получится ибо на отработку приращения уйдет несколько МАШИННЫХ ТАКТОВ (а не один - на - приращение), а вот для подсчета каких - либо событий вполне сгодится.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб фев 17, 2018 20:26:56
Starichok51
Jetetex писал(а):Нужно в ассемблере на Attiny 2313 сделать 16-ти разрядный счётчик (+1 в каждом такте)
для +1 вполне подойдет команда adiw. но она тратит 2 цикла.
и не правильно говорить про такт. это машинный ЦИКЛ. а уже цикл состоит из тактов. но в AVR мы тактов не видим, они от нас скрыты.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт фев 27, 2018 19:41:32
Jetetex
Всем огромное спасибо за участие.
Пока читал - понял что немного не точно задал вопрос. (но ответ был все таки найден). Нужен счетчик событий в течении суток с диапазоном от 3сек до 2 минут, кол-во которых будет в любом случае более 256.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср фев 28, 2018 05:32:53
akl
Т.е. максимальная ёмкость счетчика будет 86400/3=28800, что вполне укладывается в два байта. Сгенерировать суточный интервал, внутри которого считать события. Ничего сложного. Другое дело когда нужно вести лог длительности каждого события! Было дело, решал подобную задачу. Пришлось ставить FRAM FM24V10.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср фев 28, 2018 06:56:36
Demiurg
[uquote="Jetetex",url="/forum/viewtopic.php?p=3310748#p3310748"]Помогите профану. Нужно в ассемблере на Attiny 2313 сделать 16-ти разрядный счётчик (+1 в каждом такте), но не могу разобратся с командами ADD, ADC.[/uquote]
Книги:
Вольфганг Трамперт. AVR-RISC микроконтроллеры фирмы ATMEL.
Джон Мортон. Микроконтроллеры AVR. Вводный курс.
1 - В этих книгах описаны архитектура AVR, система команд. Примеры проектов для практики.
2 - Прочитав эти книги вы сэкономите свое время и время участников. Вы экономите свое тем, что из книг получите азы и в следующий раз не будете тратить свое время на форумах, ожидая ответов на элементарные вопросы. Также вы экономите чужое время.