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

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 4964
Зарегистрирован: Сб май 05, 2012 20:19:55
Откуда: Минск

Сообщение Seriyvolk »

nirq, дружище, ты не въехав в тему пытаешься раздавать советы. Не делай так, следующий раз просто помолчи.
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Шум АЦП - пренебреги им. Тебе надо всего 4 бита из 10 - никакой шум не помешает.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4964
Зарегистрирован: Сб май 05, 2012 20:19:55
Откуда: Минск

Сообщение Seriyvolk »

Возможно ты и прав... Сдвинуть нафиг, разика четыре, значение от АЦП, сделать малую задержку и вторую проверку, если результаты совпадут - в бой! :))
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Не надо сдвигать. это долго. Просто забить младшие 4 бита нулями одним разом. Потом ведь все равно сравнивать с константами. А лучше не обнулять а сравнивать по диапазонам.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 4
Зарегистрирован: Ср июн 18, 2014 13:33:39

Сообщение Shinen »

Шум адц сильно зависит от сигнала и окружения. При грамотной реализации шум не больше младшего бита. Если провода длинные или наводки от чего-то, то шум может быть какой угодно. В т.ч. наводки от тела нажимающего кнопки.
Реклама
Родился
Аватара пользователя
Сообщения: 5
Зарегистрирован: Вт май 06, 2014 15:56:27

Сообщение m1995m »

Здравствуйте, дорогие форумчане!
Возникла весьма весомая проблема. Нужно в отчет по практике внести результаты выполнения задания (на ассемблере) , которое не рассматривалось в процессе обучения (писали только hello world,"для галочки") :dont_know: (спасибо Министерству Образования...).
Задание звучит так "Сформировать значение частоты таймера на ATMEL AVR 10кГц или 100кГц (одно из двух, пусть будет 100)
Итогом должен быть код на Ассемблере, просто задающий эту частоту (без подключения кнопок или всяких там мигающих светодиодов)
МК допускается любой , лишь бы был Atmel avr=)
Преподу также не по душе такая программа обучения, сказал найти в сети и он примет, но в сети есть только на си и с кучей лишних строк и переменных для описания периферии вроде светодиодов, и частота тоже для светодиодов ~0.7-5 Гц.
Заранее спасибо!
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 64
Зарегистрирован: Ср июн 20, 2012 10:49:46
Откуда: Україна, Черкаська область

Сообщение КотЭ Мужчина »

Драсте! Посоветуйте как можна реализовать задержку 10 минут в Асме?
Betelgeuse
Контактная информация:
Родился
Сообщения: 4
Зарегистрирован: Вт июн 17, 2014 15:28:10

Сообщение михалыч23 »

КотЭ Мужчина писал(а):Драсте! Посоветуйте как можна реализовать задержку 10 минут в Асме?
для начала частоту кварца озвучте ?
atmega-128 1 операция на один клик кварца максимум 16000000 в секунду.
можно тупа пустыми цыклами в циклах.
ldi temp,ff
ldi temp1,255 ; подбирается
zikl:
dec temp
cmp temp,0
brne zikl
zikl1:
dec temp1
cmp temp1,0
brne zikl1
rjmp кудато

можно активировать таймер с предделением и по прерыванию скажем сравнения, переполнения .
Родился
Сообщения: 4
Зарегистрирован: Вт июн 17, 2014 15:28:10

Сообщение михалыч23 »

Shinen писал(а):Шум адц сильно зависит от сигнала и окружения. При грамотной реализации шум не больше младшего бита. Если провода длинные или наводки от чего-то, то шум может быть какой угодно. В т.ч. наводки от тела нажимающего кнопки.
мож не по теме- не пинайте сильно, а зачем клаву по ацп опрашивать мож проще как порт?:
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

Насколько я понял, его 4 кнопки дают разный уровень напряжения. И все 4 подключены к одному каналу АЦП. А он по этому уровню пытается определить, какая из них была нажата.
Fucking static initialization order fiasco
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4964
Зарегистрирован: Сб май 05, 2012 20:19:55
Откуда: Минск

Сообщение Seriyvolk »

Pink-Pank, абсолютно в дырочку! :)) Только канала два (каждый по 4 кнопки), но не суть. Это было придумано до меня, мне просто сигналы взять нужно было.
михалыч23 писал(а):а зачем клаву по ацп опрашивать
Ну, к примеру, таким нехитрым образом можно повесить даже десяток кнопок на один единственный вывод контроллера.
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
Родился
Сообщения: 4
Зарегистрирован: Вт июн 17, 2014 15:28:10

Сообщение михалыч23 »

Понял. хотя наверное кондер паралельно повесить проще, ведь по времени не ограничивает? можно действительно несколько выборок делать.
давно не писал, но вроде есть режим по крайней мере у 128 точно, понижения шумов при выборке
Вообще прикольно, оказывается еще кто то пишет на асме!
Последний раз редактировалось ibiza11 Пт июн 27, 2014 09:16:01, всего редактировалось 1 раз.
Причина: Нарушение п. 2.7 Правил.
Друг Кота
Аватара пользователя
Сообщения: 4964
Зарегистрирован: Сб май 05, 2012 20:19:55
Откуда: Минск

Сообщение Seriyvolk »

Для тини13 - только АСМ!
михалыч23 писал(а):наверное кондер паралельно повесить проще
Параллельно чему? И почему проще?
А понижение шумов мне ни к чему - 4 кнопки распознать то, точность +/- лапоть.
Проблему я свою решил просто и надёжно: после опознавания нажатия АЦП-шкой прога улетает на обработчик этого нажатия. Так вот там-то, перед обработкой, считываем АЦП ещё раз, и только после этого распознаём конкретную кнопку. Задержки в одно преобразование АЦП оказалось достаточно, чтоб полностью избавиться от ложняков. И скорость не пострадала.
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
Родился
Сообщения: 4
Зарегистрирован: Вт июн 17, 2014 15:28:10

Сообщение михалыч23 »

имел в виду параллельно кнопки, чтоб дребезг контактов убрать.
Последний раз редактировалось ibiza11 Пт июн 27, 2014 09:17:04, всего редактировалось 1 раз.
Причина: Нарушение п.2.7 Правил
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Только хуже сделаешь, кнопка будет с каждым нажатием подгорать, ведь ты ей будешь разряжать заряженный кондер - огромные импульсные токи...
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

Это ж какой емкости должен быть конденсатор, чтобы были огромные импульсные токи? )) К тому же, можно поставить конденсатор + небольшой резистор.
Fucking static initialization order fiasco
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4964
Зарегистрирован: Сб май 05, 2012 20:19:55
Откуда: Минск

Сообщение Seriyvolk »

Конденсатор требует затрат на него и места на плате, а программное устранение дребезга - только мозгов пишущего программу. Вот каждый и поступает, как ему лучше. :)) (RC-фильтр я конечно сделал, но сейчас речь не об этом :))) )
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

ток зависит не от емкости а от ESR конденсатора, даже 0.1мкф хорошие пленочные с годами убивают кнопку за счет тока при замыкании. А если кнопка не с посеребренными контактами, то и того быстрее.
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

Так-то оно так. Только чем больше емкость - тем длительнее импульс тока
Fucking static initialization order fiasco
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 63
Зарегистрирован: Вс май 30, 2010 20:27:33
Откуда: Санкт-Петербург

Сообщение Kill17 »

День добрый!

Люди добрые, подскажите пожалуйста, как можно реализовать XOR для битов в байте? те есть байт, нужно проиксорить все биты в нем, а результат записать в регистр. Для XOR байтов пользовался командой EOR, а как с битами быть не понимаю.
Контактная информация:
Ответить

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