Страница 173 из 400

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

Добавлено: Пт янв 18, 2013 21:13:35
BOB51
В общем приложении это так, но в случае с применением сдвигового регистра (если нет линии гашения или сброса) более оперативным будет гашение по портам МК. 8)

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

Добавлено: Сб янв 19, 2013 01:03:05
Antony91
А подскажите еще, пожалуйста. Используется ли постолбцовый вывод информации? У меня получается довольно большая матрица 7х130. И при постолбцовом выводе не могу добиться хорошей яркости. Как быть?

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

Добавлено: Сб янв 19, 2013 01:18:55
Alexeyslav
130 столбцов?
Либо разбивать на части либо сканировать 7 строк а 130 столбцов завести на 130-разрядный регистр сдвига. При этом надо учитывать величину импульсного тока через драйверы строк...

130 светодиодов, чтобы получить такую же яркость каждого как у одиночного светодиода при 10мА нужен импульсный ток 70мА на светодиод, а если зажечь всю строку будет 70ма*130 = 9.1А

В принципе выполнимо на регистрах STP16CP05(надо будет их штук так с десяток) , только кондеров керамических надо будет натыкать по всей плате, иначе будет глючить и фонить прилично.

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

Добавлено: Сб янв 19, 2013 01:24:32
Antony91
А через транзисторные ключи на BC547 разьве нельзя развязать?

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

Добавлено: Сб янв 19, 2013 09:42:56
BOB51
Матрицу 7*130 лучше делать как 7 строк по 130бит - даст максимально возможную яркость при динамической развертке. Максимальный ток устройства индикации 130*ток 1го светика (130*0,02=2,6А).
для вывода строки 17 регистров 74HC595 + ULN2803 или 17 штук TPIC6B595N с источником тока на каждом выходе на основе LM317+резистор. Однако рекомендую длину строки делать кратной 8 (разрядность регистра).
Можно использоват статику... но 130 регистров и типовой ток 130*8*0,02=20,8А как-то настораживает... :roll:
Кстати... при выводе с мультиплексированием *8 вполне пристойная яркость и при 20мА, можно конечно и *4 - но тут 2 регистровых линейки потребуются - да и это уже тематика другого раздела - про "беглые строки".
:beer:

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

Добавлено: Сб янв 19, 2013 11:40:17
Alexeyslav
что именно ключами развязывать?

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

Добавлено: Сб янв 19, 2013 11:59:15
SmarTrunk
Alexeyslav писал(а):на регистрах STP16CP05(надо будет их штук так с десяток)
Или на каких-нибудь MBI5025, MBI5039. И не надо кучи внешних резисторов или источников тока, т.к. они там уже есть.

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

Добавлено: Сб янв 19, 2013 12:09:59
Alexeyslav
для STP16CP05 тоже не надо, ток каждого вывода задается одним резистором.

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

Добавлено: Сб янв 19, 2013 12:23:02
Antony91
Alexeyslav писал(а):что именно развязывать?
У меня выходы сдвигающего регистра повешены на BC547, и выходы Atmega8 через такихе же ключи.

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

Добавлено: Сб янв 19, 2013 13:18:40
Alexeyslav
Они слишком слабые чтобы потянуть всю строку из 130 светодиодов. Простой расчет показывает что там токи будут порядка ампер. Там нужны полевики, а на регистры можно поставить и BC547 но какой смысл? Проще взять регистры со встроенными источниками тока которым вообще ничего больше на выход не нужно.

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

Добавлено: Сб янв 19, 2013 20:47:12
Antony91
А при постолбцовом выводе такой принцип использовать можно? Или тут тоже возможны хиторости, чтобы поставить источник тока?

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

Добавлено: Сб янв 19, 2013 21:46:14
Alexeyslav
столбцы и строки - это только для ориентации в пространстве.

Проблема может крыться в том что микросхемы предоставляют драйвер только для входящего тока, т.е. ток должен течь через индикатор входить в вывод микросхемы и через стабилизатор тока в шину общего провода. Почему в основном делают такие... просто потому что таким образом индикаторы можно запитать от более высокого напряжения.
Поэтому конструкция выхода таких регистров накладывает ограничения на организацию матрицы - длинная сторона матрицы должна быть минусом. А короткую придется коммутировать по "+" мощными ключами(ибо суммарный ток, если всю строку зажечь).

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

Добавлено: Сб янв 26, 2013 13:11:14
МКС
Подскажите пожалуйста, как правильно сравнивать шестнадцати разрядные числа между двумя регистровыми парами. Например сравнить числа в X -регистре и Y - регистре.

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

Добавлено: Сб янв 26, 2013 13:52:40
BOB51
Как и обычные числа - как удобнее, с той лишь разницей, что речь идет о многобайтовой последовательности.
:)

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

Добавлено: Сб янв 26, 2013 14:27:39
akl
МКС писал(а):Подскажите пожалуйста, как правильно сравнивать шестнадцати разрядные числа между двумя регистровыми парами. Например сравнить числа в X -регистре и Y - регистре.

Код: Выделить всё

CP   XL,YL
CPC XH,YH
BRxx

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

Добавлено: Сб янв 26, 2013 14:30:26
МКС
akl писал(а):
МКС писал(а):Подскажите пожалуйста, как правильно сравнивать шестнадцати разрядные числа между двумя регистровыми парами. Например сравнить числа в X -регистре и Y - регистре.

Код: Выделить всё

CP   XL,YL
CPC XH,YH
BRxx
Спасибо уже что-то :) .

Но я уточню вопрос :
Счетчик Т1 в Atmega 8 подсчитывает импульсы от своего тактового генератора.
В первом цикле по команде состояние шестнадцатиразрядного счетчика T1 записывается в регистровую пару XH, XL
in XL, TCNT1L
in XH, TCNT1H
далее (в этом же цикле) сохраняем эти значения в буфере:
mov YL, XL
mov YH, XH
далее в следующем цикле (через 20 мс), счетчик обнуляется и заново подсчитывает импульсы от тактового генератора. Затем по команде опять записывает их в:
in XL, TCNT1L
in XH, TCNT1H
сразу после этого,(в этом же втором цикле программе) должны сравниваться старое значение счетчика из буфера Y – регистра с новым Х- регистра.
Если число Y – регистра равно числу Х – регистра, то устанавливаем единицу на нулевом пине порта С (PC0 = 1).
Если число в Y – регистре меньше числа Х – регистра, то РС1 = 1.
Если число в Y – регистре больше числа Х – регистра, то PC2 = 1
Как это правильно написать в программе???

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

Добавлено: Сб янв 26, 2013 15:03:04
akl
Вы правильно мыслите. Далее, читаете этот документ и посылаете все куда угодно. :)
И это... Поосторожнее с полным цитированием предсообщения.

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

Добавлено: Сб янв 26, 2013 15:07:12
МКС
Т. е если я напишу так:

cp XL, YL
cpc XH, YH
breq j1
brlo j2
brsh j3

j1: sbi PORTC, 0
cbi PORTC, 1
cbi PORTC, 2
rjmp main

j2: cbi PORTC, 0
sbi PORTC, 1
cbi PORTC, 2
rjmp main

j3: cbi PORTC, 0
cbi PORTC, 1
sbi PORTC, 2
rjmp main

то это будет правильная запись?

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

Добавлено: Сб янв 26, 2013 15:12:44
Gudd-Head
Третье условие не нужно: на равно и меньше уже проверено, иного быть не может.

А вообще, если погонять в Студии, то и вопросов таких возникать не будет :)

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

Добавлено: Сб янв 26, 2013 15:19:11
МКС
Согласен.