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

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

Добавлено: Ср апр 11, 2012 17:28:57
Engineer_Keen
Отбросим пока точность кварца в %. А какими шагами можно точнее приблизиться к 1 с, 1/32768 или 1/1Е+6 или 1/20Е+6 ? :)))

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

Добавлено: Ср апр 11, 2012 17:43:02
shads
Engineer_Keen писал(а):Отбросим пока точность кварца в %. А какими шагами можно точнее приблизиться к 1 с, 1/32768 или 1/1Е+6 или 1/20Е+6 ? :)))
Вообще изначально я имел ввиду точность кварца в %. Как я понимаю, при одинаковой точности кварцев, хоть 32768, хоть 20000000, для 1гц результат окажется одинаковый..... Или я не прав?
Ну а если говорить о шагах, то при 20000000 мы все равно не сможем одиночными шажками приблизится к идиалу, т.к. частоту задают всетаки таймером, а у него есть предделители и т.д. и т.п. которые все равно загрубляют шаг. Можно конечно поизощряться, ловя и сбрасывая значения счетчиков и предделителей.....
НО все таки я имел ввиду точность в %.

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

Добавлено: Ср апр 11, 2012 17:50:18
GP1
ploop
:)
согласен не правильно выразился
смотреть надо абсолютное значение и его отклонение от 1Гц

ЗЫ но все равно ты зануда :wink:

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

Добавлено: Ср апр 11, 2012 17:58:35
ploop
GP1, какой есть! :beer:
мы все равно не сможем одиночными шажками приблизится к идиалу, т.к. частоту задают всетаки таймером, а у него есть предделители и т.д. и т.п. которые все равно загрубляют шаг.
С чего это? У таймера есть режим по совпадению (CTC), можно ди тика отстроить. Собственно, так у меня часы и работают на 20МГц кварце.

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

Добавлено: Ср апр 11, 2012 18:47:44
Alexeyslav
И сколько тиков уложится в одной секунде при максимальной разрядности в 16 бит? Целая куча... а если учесть что изменять период мы можем +- 1 единицу, то пофиг что исходная частота будет 32768Гц и +-1единица в секунду или 20Мгц и +-610единиц в секунду. Шаг такой корректировки будет одинаковый. Так что не надо выдумывать - настраивать таймер на работу от 32768Гц чтобы он давал прерывания каждые примерно 16мс(так чтобы 32768 поделить на степень двойки) - это удобно для целей корректировки. В отдельном счетчике накапливаем счет прерываний и при достижении счетчика 64 - прибавляем секунды. Вся суть заключается в том чтобы через определенное количество секунд один раз не прибавить единицу к этому счетчику или наоборот прибавить две - тем самым корректируя скорость хода времени. Если проделывать эту фишку сразу с секундами, через некоторое время заметишь что какая-то секунда держится слишком долго или наоборот перепрыгивает через одну. А в таком варианте задержка будет составлять максимум 16мс.

Потом только остается рассчитать или экспериментально подобрать количество секунд через которые делать корректировку для достижения высокой точности хода. При этом надо позаботится о стабилизации температуры кварца, и иметь в виду что в первый год эксплуатации кварца корректировку надо будет повторить. Да и после каждого удара желательно.

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

Добавлено: Ср апр 11, 2012 18:50:17
shads
ploop писал(а):С чего это? У таймера есть режим по совпадению (CTC), можно ди тика отстроить. Собственно, так у меня часы и работают на 20МГц кварце.
Это у ТАЙМЕРА есть режим по совпадения. А до таймера же есть еще предделитель..... Но не суть важно, это понятно что можно.
Я одного не пойму, вы хотите убедить в том, что у часов на 32768 кварце, точность будет хуже чем у часов на 20мгц кварце?
Вы ошибаетесь..... Ну только если вы имеете ввиду что можно подгонять работу часов (до тика) чтобы точно шли..... Дык и в часах на 32768 что мешает коррекцию ввести.....

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

Добавлено: Ср апр 11, 2012 19:04:58
ploop
Я одного не пойму, вы хотите убедить в том, что у часов на 32768 кварце, точность будет хуже чем у часов на 20мгц кварце?
С чего вы это взяли? Я просто хочу сказать, что пофигу, какой кварц. Точность зависит не от абсолютной частоты его, а от качества самого кварца. А подогнать на МК можно любой.
Это у ТАЙМЕРА есть режим по совпадения. А до таймера же есть еще предделитель.....
Кто-то заставляет использовать предделитель? Особенно на 16-разрядном таймере.
И сколько тиков уложится в одной секунде при максимальной разрядности в 16 бит?
305,17578125 на частоте 20МГц без предделителя
Если проделывать эту фишку сразу с секундами, через некоторое время заметишь что какая-то секунда держится слишком долго или наоборот перепрыгивает через одну. А в таком варианте задержка будет составлять максимум 16мс.
Я использую прерывание каждые 10мс. Там и корректировки и всё остальное.

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

Добавлено: Ср апр 11, 2012 19:09:29
ZERO..
А, теперь понял, спасибо - Alexeyslav, Engineer_Keen, BOB51, короче Всем...
То есть мое понимание - (сравниваю с обучалкой, именно там учусь)
bank0 это и есть темр, а
bufT: DBIT 1 ;буфер десятичной точки АНАЛОГ
.dseg
Digit: .byte 4 ;то есть обычный сегмент данных
Разрешите теперь вопрос следующий:
Там в книге, строки 50-54, оперируют с сегментами данных записывая их в акуммулятор а,
У AT90S2313 такого не помню, т.е. я могу заняться обычным инкрементированием temp? (Сомневаюсь, кажется что-то большее должно быть)

50 mov a,nomR ;Вывод номера разряда
51 rrc a
52 mov p3.0,c
53 rrc a
54 mov p3.1,c

P.S. А картина выходит???

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

Добавлено: Ср апр 11, 2012 19:13:03
shads
ploop писал(а):
Я одного не пойму, вы хотите убедить в том, что у часов на 32768 кварце, точность будет хуже чем у часов на 20мгц кварце?
С чего вы это взяли? Я просто хочу сказать, что пофигу, какой кварц. Точность зависит не от абсолютной частоты его, а от качества самого кварца. А подогнать на МК можно любой.
Я имел ввиду
BOB51 писал(а):(правда у системного на 20МГц точность естественно выше будет (при увеличении затрат потребляемой мощности по питанию) да и экономия в выводах... 8)

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

Добавлено: Ср апр 11, 2012 19:28:17
Alexeyslav
mov p3.0,c - это копирование бита переноса(он выталкивается туда с регистра "а" в следствие операции битового сдвига) в порт.
AVR так не умеет - эту конструкцию надо заменять на условный переход по сигналу "переноса" и отдельно устанавливать в порту 1 или 0 в зависимости от выполнения условия.
Либо если это позволяют условия - сначала все порты обнулить, а потом для тех где надо поставить "1" выполнить соответствующую инструкцию, это экономит инструкцию безусловного перехода на каждую проверку.

используя SBI PORTB, PINB0 - для установки вывода порта в "1", и CBI .... для установки в "0".

как-то так

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

BRCC  SET_OFF
 SBI PORTB, PINB0
 rjmp   SET_END
SET_OFF:
 CBI PORTB, PINB0
SET_END:

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

Добавлено: Ср апр 11, 2012 20:09:45
BOB51
+\-5% от 0,000030517578125 (для 32768)
или
+\- 5% от 0,00000005 (для 20.000000)
8)

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

Добавлено: Ср апр 11, 2012 20:16:08
ZERO..
BRCC SET_OFF
BRCC - это переход если флаг переноса сброшен
SET_OFF - ? (сегмент данных?)

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

Добавлено: Ср апр 11, 2012 20:26:56
pyzhman
Метка.

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

Добавлено: Ср апр 11, 2012 20:34:23
ZERO..
Да спасибо, я понял!!! сейчас ищу команды ассемблера для авр. Дело в том что они у меня были, но Где-то вирус или ещё что поймал - с рабочего стола все папки пропали там и были эти команды...
Без них не совсем удобно...

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

Добавлено: Ср апр 11, 2012 20:39:58
Alexeyslav
Скачивай сразу даташит, а команды - распечатай. Их всего 2 страницы.

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

Добавлено: Ср апр 11, 2012 21:02:02
shads
ZERO.. писал(а):сейчас ищу команды ассемблера для авр.
Я очень долго топтался на месте. Все, что находил на русском, както не очень усваивалось. Потом нашел две странички, и как ракетой выстрелил, сразу все понял.....
http://www.nikolaew.org/avr_old/u3.htm
http://www.nikolaew.org/avr_old/u4.htm

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

Добавлено: Ср апр 11, 2012 21:04:10
Engineer_Keen
вот тут BOB51 полезные таблички по командам выложил...

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

Добавлено: Ср апр 11, 2012 21:47:31
ZERO..
Спасибо!!! никогда не верил в форумы - это мой первый опыт.
Вопросы пока не могу сформулировать, надо попробовать как нибудь уже написать потом... :write:

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

Добавлено: Ср апр 11, 2012 22:33:58
Alexeyslav
И еще обрати внимание на директивы DEFINE и MACROS, порой они здорово помогают сократить и очеловечить программу на ассемблере.

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

Добавлено: Чт апр 12, 2012 04:54:55
ZERO..
Вопрос большой, описал в файле, там что я уже представляю себе и в конце того-же файла (2-е последние строчки) САМ ВОПРОС!!!
Если можно ответ с примерами и описанием, хотя будет респект всему... :))
Если кратко то 2 вопроса:
1)один счетчик разбить на несколько путем сравнения одного единственного с некоторыми константами - так есть правильно???
(именно для реализации часов)
И ещё как проще понять алгоритм работы динамической индикации
там же - индикаторы (порт D)
- цифры (порт B)
2)какая-то синхронизация должна быть, не пойму где и как?