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

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Отбросим пока точность кварца в %. А какими шагами можно точнее приблизиться к 1 с, 1/32768 или 1/1Е+6 или 1/20Е+6 ? :)))
Реклама
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

Engineer_Keen писал(а):Отбросим пока точность кварца в %. А какими шагами можно точнее приблизиться к 1 с, 1/32768 или 1/1Е+6 или 1/20Е+6 ? :)))
Вообще изначально я имел ввиду точность кварца в %. Как я понимаю, при одинаковой точности кварцев, хоть 32768, хоть 20000000, для 1гц результат окажется одинаковый..... Или я не прав?
Ну а если говорить о шагах, то при 20000000 мы все равно не сможем одиночными шажками приблизится к идиалу, т.к. частоту задают всетаки таймером, а у него есть предделители и т.д. и т.п. которые все равно загрубляют шаг. Можно конечно поизощряться, ловя и сбрасывая значения счетчиков и предделителей.....
НО все таки я имел ввиду точность в %.
Реклама
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

ploop
:)
согласен не правильно выразился
смотреть надо абсолютное значение и его отклонение от 1Гц

ЗЫ но все равно ты зануда :wink:
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

GP1, какой есть! :beer:
мы все равно не сможем одиночными шажками приблизится к идиалу, т.к. частоту задают всетаки таймером, а у него есть предделители и т.д. и т.п. которые все равно загрубляют шаг.
С чего это? У таймера есть режим по совпадению (CTC), можно ди тика отстроить. Собственно, так у меня часы и работают на 20МГц кварце.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

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

Потом только остается рассчитать или экспериментально подобрать количество секунд через которые делать корректировку для достижения высокой точности хода. При этом надо позаботится о стабилизации температуры кварца, и иметь в виду что в первый год эксплуатации кварца корректировку надо будет повторить. Да и после каждого удара желательно.
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

ploop писал(а):С чего это? У таймера есть режим по совпадению (CTC), можно ди тика отстроить. Собственно, так у меня часы и работают на 20МГц кварце.
Это у ТАЙМЕРА есть режим по совпадения. А до таймера же есть еще предделитель..... Но не суть важно, это понятно что можно.
Я одного не пойму, вы хотите убедить в том, что у часов на 32768 кварце, точность будет хуже чем у часов на 20мгц кварце?
Вы ошибаетесь..... Ну только если вы имеете ввиду что можно подгонять работу часов (до тика) чтобы точно шли..... Дык и в часах на 32768 что мешает коррекцию ввести.....
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

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

Сообщение 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. А картина выходит???
Вложения
нужный размер.gif
(57.59 КБ) 411 скачиваний
Последний раз редактировалось ZERO.. Ср апр 11, 2012 19:14:05, всего редактировалось 1 раз.
[color=#FF4000]Ищу где? и как? надо пользоваться личкой[/color]
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

ploop писал(а):
Я одного не пойму, вы хотите убедить в том, что у часов на 32768 кварце, точность будет хуже чем у часов на 20мгц кварце?
С чего вы это взяли? Я просто хочу сказать, что пофигу, какой кварц. Точность зависит не от абсолютной частоты его, а от качества самого кварца. А подогнать на МК можно любой.
Я имел ввиду
BOB51 писал(а):(правда у системного на 20МГц точность естественно выше будет (при увеличении затрат потребляемой мощности по питанию) да и экономия в выводах... 8)
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение 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:
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15611
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

+\-5% от 0,000030517578125 (для 32768)
или
+\- 5% от 0,00000005 (для 20.000000)
8)
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 39
Зарегистрирован: Сб окт 16, 2010 19:52:32
Откуда: Сургут

Сообщение ZERO.. »

BRCC SET_OFF
BRCC - это переход если флаг переноса сброшен
SET_OFF - ? (сегмент данных?)
[color=#FF4000]Ищу где? и как? надо пользоваться личкой[/color]
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Метка.
Docendo discimus
Контактная информация:
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 39
Зарегистрирован: Сб окт 16, 2010 19:52:32
Откуда: Сургут

Сообщение ZERO.. »

Да спасибо, я понял!!! сейчас ищу команды ассемблера для авр. Дело в том что они у меня были, но Где-то вирус или ещё что поймал - с рабочего стола все папки пропали там и были эти команды...
Без них не совсем удобно...
[color=#FF4000]Ищу где? и как? надо пользоваться личкой[/color]
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Скачивай сразу даташит, а команды - распечатай. Их всего 2 страницы.
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

ZERO.. писал(а):сейчас ищу команды ассемблера для авр.
Я очень долго топтался на месте. Все, что находил на русском, както не очень усваивалось. Потом нашел две странички, и как ракетой выстрелил, сразу все понял.....
http://www.nikolaew.org/avr_old/u3.htm
http://www.nikolaew.org/avr_old/u4.htm
Последний раз редактировалось shads Ср апр 11, 2012 21:04:28, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

вот тут BOB51 полезные таблички по командам выложил...
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 39
Зарегистрирован: Сб окт 16, 2010 19:52:32
Откуда: Сургут

Сообщение ZERO.. »

Спасибо!!! никогда не верил в форумы - это мой первый опыт.
Вопросы пока не могу сформулировать, надо попробовать как нибудь уже написать потом... :write:
[color=#FF4000]Ищу где? и как? надо пользоваться личкой[/color]
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

И еще обрати внимание на директивы DEFINE и MACROS, порой они здорово помогают сократить и очеловечить программу на ассемблере.
Контактная информация:
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 39
Зарегистрирован: Сб окт 16, 2010 19:52:32
Откуда: Сургут

Сообщение ZERO.. »

Вопрос большой, описал в файле, там что я уже представляю себе и в конце того-же файла (2-е последние строчки) САМ ВОПРОС!!!
Если можно ответ с примерами и описанием, хотя будет респект всему... :))
Если кратко то 2 вопроса:
1)один счетчик разбить на несколько путем сравнения одного единственного с некоторыми константами - так есть правильно???
(именно для реализации часов)
И ещё как проще понять алгоритм работы динамической индикации
там же - индикаторы (порт D)
- цифры (порт B)
2)какая-то синхронизация должна быть, не пойму где и как?
Вложения
Assembler.txt
файл...
(1.48 КБ) 153 скачивания
[color=#FF4000]Ищу где? и как? надо пользоваться личкой[/color]
Ответить

Вернуться в «AVR»