Обсуждаем контроллеры компании Atmel.
Ответить

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Чт фев 15, 2018 09:09:25

В передатчике вкл контроль четности и в приемнике,на осциллографе при передаче виден 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

да пробовал одинаково,все равно PE=0,пытаюсь также флаг FE посмотреть когда срабатывает,тоже фигня какая то((,если долго тяну 0 стоп бит то все виснет,если не очень долго то все равно нету FE хоть убей,пробовал atmega16 все также,скачивал разные версии протеуса без разницы,ребят может кто поможет,работают ли эти флаги в протеусе?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт фев 16, 2018 09:20:45

viewtopic.php?f=2&t=3739&start=4660&hilit=PROTEUS Может здесь спросить.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт фев 16, 2018 09:57:42

СПС,я уже разобраля флаги 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

Помогите профану. Нужно в ассемблере на Attiny 2313 сделать 16-ти разрядный счётчик (+1 в каждом такте), но не могу разобратся с командами ADD, ADC.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб фев 17, 2018 11:14:02

Используйте ADIW

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб фев 17, 2018 12:04:04

Это конечно неплохо... НО только для диапазона 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:......

8)

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб фев 17, 2018 12:08:45

Так ведь ТС и хочет +1, каждый такт инкремент

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб фев 17, 2018 12:17:44

Это общая схема - без ограничения по разрядности и без использования парных регистров в примитивных целях.
Их и так не очень много "в свободном виде" - только индекс-указатели Z,X и Y да еще R24:R25.
Занимать их в программе просто под считалку тактов весьма нерационально.
8)
Кстати... для потактового счета лучше свободный аппаратный счетчик настроить.
:tea:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб фев 17, 2018 12:20:19

Кстати... для потактового счета лучше свободный аппаратный счетчик настроить.
:tea:

Согласен, я так и делал бы

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб фев 17, 2018 12:28:34

Программные тоже не помешают, мало ли чего считать потребуется.
Тем более, что инкремент/декремент применимы КО ВСЕМ регистрам r0-r31.
8)

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб фев 17, 2018 14:21:12

Когда речь идёт об одном регистре то без проблем, а когда надо больше 255 считать тут уже возникают проблемы... INC(DEC) не выставляет флаг переноса(заёма) при переполнении!!! Вот такой вот нежданчик...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб фев 17, 2018 15:46:55

зато INC (DEC) выставляют флаг НУЛЯ!
и проверку на нуль делаем командой brne. ну, или breq...
выше BOB51 уже про это писал.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб фев 17, 2018 16:30:44

... на Attiny 2313 сделать 16-ти разрядный счётчик (+1 в каждом такте)...
Программный, думаю, не получится.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб фев 17, 2018 16:44:13

Дословно да - не получится ибо на отработку приращения уйдет несколько МАШИННЫХ ТАКТОВ (а не один - на - приращение), а вот для подсчета каких - либо событий вполне сгодится.
8)

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб фев 17, 2018 20:26:56

Jetetex писал(а):Нужно в ассемблере на Attiny 2313 сделать 16-ти разрядный счётчик (+1 в каждом такте)
для +1 вполне подойдет команда adiw. но она тратит 2 цикла.
и не правильно говорить про такт. это машинный ЦИКЛ. а уже цикл состоит из тактов. но в AVR мы тактов не видим, они от нас скрыты.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вт фев 27, 2018 19:41:32

Всем огромное спасибо за участие.
Пока читал - понял что немного не точно задал вопрос. (но ответ был все таки найден). Нужен счетчик событий в течении суток с диапазоном от 3сек до 2 минут, кол-во которых будет в любом случае более 256.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Ср фев 28, 2018 05:32:53

Т.е. максимальная ёмкость счетчика будет 86400/3=28800, что вполне укладывается в два байта. Сгенерировать суточный интервал, внутри которого считать события. Ничего сложного. Другое дело когда нужно вести лог длительности каждого события! Было дело, решал подобную задачу. Пришлось ставить FRAM FM24V10.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Ср фев 28, 2018 06:56:36

Помогите профану. Нужно в ассемблере на Attiny 2313 сделать 16-ти разрядный счётчик (+1 в каждом такте), но не могу разобратся с командами ADD, ADC.

Книги:
Вольфганг Трамперт. AVR-RISC микроконтроллеры фирмы ATMEL.
Джон Мортон. Микроконтроллеры AVR. Вводный курс.
1 - В этих книгах описаны архитектура AVR, система команд. Примеры проектов для практики.
2 - Прочитав эти книги вы сэкономите свое время и время участников. Вы экономите свое тем, что из книг получите азы и в следующий раз не будете тратить свое время на форумах, ожидая ответов на элементарные вопросы. Также вы экономите чужое время.
Ответить