Страница 6 из 6
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Сб фев 25, 2012 00:55:19
Alexeyslav
Там UART только скорость нестандартная, 38000 бод что-ли. Осциллографом посмотри, старт, 8 бит, контроль четности и стоп.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Сб фев 25, 2012 15:47:59
xkp
эм... а что смотретьт то? если только еще собираюсь писать программу? или вы имеете ввиду посмотреть на компе?
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Сб фев 25, 2012 16:34:14
Alexeyslav
На клавиатуре. Хотя и правда, что там смотреть - просто так клавиатура ничего не выдаст. Это старые XT-шные клавиатуры работали автономно, современные AT-шные требуют команду инициализации.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Сб фев 25, 2012 16:48:23
xkp
изначально вопрос стоял как подключить клаву к авр на ассемблере?
команды инициализация, опроса и прочие команды от МК к клавиатуре и обратно входят в изначальный вопрос.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн мар 05, 2012 20:46:09
xkp
по клавиатуре будут ответы?
у кого нито есть примеры разложения звукового сигнала на частотные составляющие на ассемблере? или хотя бы теоритичекое представление.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн мар 05, 2012 21:01:03
Alexeyslav
Теория есть на википедии(Дискретное Преобразование Фурье), формула проста. фишка в том что надо считать комплексную функцию e^x. На ассемблере я где-то видел только готовые решения, выделить там функцию ДПФ не так-то просто. Памяти нужно много - N ячеек для сигнала, и N/2 для результата.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн мар 12, 2012 22:36:40
xkp
не стал новую тему заводить а подходящюю не нашел. как и чем программировать ATXMEGA256A3. и где писать программу под нее? студия 4.12 не держит в себе таких. кто пробовал 5 студию? посмотрите есть ли в ней ATXMEGA256A3. и, еще прогер на неё надо, хотя если она есть в 5 студии, то наверно можно и через STK500 по ISP прошить.
хочу купить себе такую игрушку на тестовую платку для поделок.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Вт мар 13, 2012 00:30:37
Alexeyslav
В 5-й студии она должна быть, там вроде бы как раз и ввели поддержку XMEGA.
Ну а собственно, для компилятора вообще все фиолетово для какого семейства компилируешь. Поэтому набирая в блокноте, можно написать программу даже для неизвестного микроконтроллера.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Ср апр 11, 2012 05:45:02
BOB51
xkp скачай 4.19

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн сен 03, 2012 13:19:44
xkp
Alexeyslav писал(а):
Для таймера выбираешь режим FAST PWM.
Биты регистра TCCR0A: COM0A1=1 COM0A0=0 или 1(инверсный выход)
WGM01=1 ,WGM00=1.
В регистре OCR0A - значение момента при котором будет меняться состояние выхода OC0A.
вернемся к 4 странице темы. но нужно теперь менять частоту в пределах 1-100кГц. иными словами сделать аппаратный генератор частот.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн сен 03, 2012 20:19:37
Alexeyslav
А в чем сложности? Хотя, помоему лучше делать такой генератор по топологии DDS, потому что если использовать таймер - будет ограничение на диапазон частот и шаг в диапазоне максимальных частот, поскольку коэффициент деления будет целочисленный. Допустим 100кГц можно получить делением 10Мгц на 100, тогда соседняя частота может быть получена только делением 10Мгц на 101 и будет равна 99кГц. Разрядность таймера (16 бит) не даст получить частоту аппаратно меньше чем 10Мгц/65535 = 152.69Гц, придется вводить как минимум два диапазона переключая предделитель чтобы охватить весь диапазон частот. и у каждого диапазона будет своя "сетка" частот, среди которых точных значений необходимой частоты не будет.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн сен 03, 2012 20:51:48
xkp
точные частоты нужны от 1 до 30 кГц. шаг 0.05 кГц
От 30 до 100 кГц с шагом 1 кГц.
хочу именно на АВР. так как у МК будет только одна задача - выдавать необходимую частоту на PB0/OC0A по запросу от другого МК по I2C, то думаю поставить тини13.
иными словами будет главный МК, к нему по I2C шине будут подключены другие МК. один из них должен выдавать необходимую частоту, другой анализировать входной сигнал, третий будет отвечать за вывод на ЖК-дисплей 128*64 и клавиатуру.
почему так много МК? -спросите вы. Мне нужно быстродействие всей конструкции. если все закошачить в один МК, то просто он не сможет дать большое быстродействие. а тут... главный сказал дать N-частоту - 1-й МК выдает. сказал второму анализировать вход - тот анализирует и передает на третий а тот в свою очередь на ЖК и с кнопок на главный МК. + с первого МК есть провод синхронизации на второй, со второго на третий.
Примерная наброска в картинке.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн сен 03, 2012 21:35:51
Alexeyslav
Нужно оценить ресурсоемкость задач, возможно дела не настолько плохи. Хотя достичь шага в 50Гц на нижнем диапазоне до 30кГц будет проблематично. Самое узкое место - это получить шаг 50Гц на частоте в 30кГц. Выше я давал простой рассчет.
Задачка простая, делитель на N дает частоту 30кГц, делитель на N+1 дает частоту 30.05кГц, требуется найти исходную частоту F и делитель N.
Значит, F/N = 30000 и F/(N+1) = 29950
F = 30000*N и F = 29950*N + 29950, откуда следует 30000*N - 29950*N = 29950 = 50*N, (при N <> 0)
откуда N = 29950/50 = 599 и F = 30000*599 = примерно 18Мгц надо подать на вход таймера, чтобы обеспечить такой шаг по частоте. Боюсь, тинька такое не обеспечит. Но задача выглядит выполнимой на более быстродействующем контроллере. Но оглянись на расчет... этот контроллер загружен будет практически на 0%, так что задачу генерации можно возложить и на основной контроллер. Сложность с таймером будет заключаться в том что ему надо задавать не частоту а необходимый период. Чтобы задавать ему указанную частоту, необходимо реализовать функцию 1/x или завести массив заранее просчитанных периодов.
Тут самое время рассмотреть вариант аппаратного DDS...
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн сен 03, 2012 21:39:31
xkp
ну а что это за DDS? как и с чем его есть?
на счет загруженности... необходимо будет примерно 300 раз в секунду выдавать разные частоты хотя бы по 3-5 импульсов и между разными частотами должна быть небольшая пауза, равная примерно 2-3 периодам текущей частоты
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн сен 03, 2012 22:07:03
Alexeyslav
Алгоритма описан на
страничке, только собственно ЦАП нам здесь не нужен, из всего нужно только отлавливать момент переполнения аккумулятора фазы и в этот момент менять состояние выхода. Для 100кГц необходимо чтобы программно алгоритм каждой итерации отрабатывал 200тыс раз в секунду. К сожалению тут придется сначала разработать алгоритм, просчитать количество необходимых тактов и высчитать минимальную тактовую частоту контроллера. На 20Мгц будет примерно 100 тактов на итерацию. В нее будет входить алгоритм сложения 24-битного числа(каскадно сложить 3 пары регистров) и установка состояния порта в зависимости от признака переполнения в результате операции сложения. Если реализовать этот алгоритм можно одним махом охватить диапазон 0..100кГц с шагом по 0.01Гц задавая частоту без необходимости вычислять её период. Переключение на новую частоту будет практически мгновенным. Так что пожалуй надо будет предусмотреть остановку алгоритма по внешней команде или указывать частоту 0.01Гц на время паузы.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн сен 03, 2012 22:14:21
xkp
еще и на СИ

хотелось бы без науки. прямо.
1. инициализация: в регистр Х закошачиваем х для того-то того-то
разрешаем работу
2. работа: в регистр Y закошачиваем y.
3. в регистре Z (либо на вводе порта) получаем результат.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн сен 03, 2012 22:28:25
xkp
выбор МК не должен уйти за пределы tiny13/2313/261/26 mega8/16/32/8535 . просто их у меня навалом.
PS. да, и плата генератора уже спаяна на тини13.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Пн сен 03, 2012 23:02:00
Alexeyslav
А как ты спаял плату если не известна еще схема подключения и даже предварительных расчетов не было?
Ты просто почитай как этот генератор работает, проникнись идеей. По запросу гугл тебе выдаст сотню ссылок на алгоритм работы DDS которые может быть будут более понятны.
Просто прибавляй в некий аккумулятор (24 бит например) число пропорциональное необходимой частоте. Частота переполнения этого аккумулятора будет пропорциональна установленному коду и частоте с которой происходит суммирование! Максимальная частота будет равна частоте суммирования деленной на 2 при установленном коде равном $FFFFFF.
Re: програмирование AVR на АСЕМБЛЕРЕ для чайников
Добавлено: Вт сен 04, 2012 08:10:08
Аlex