Страница 3 из 4

Re: Программирование AVR

Добавлено: Вс май 26, 2013 13:17:19
ChipKiller
oleg110592 писал(а):Тут вы не много не правы - LPT можно применить к параллельному программированию
.. можно. Можно и через COM-порт управлять режимом параллельного программатора, только речь об этом не шла ...
Резистор писал(а):Ещё вопрос: При запуске avreal32.exe выдаёт ошибку : "запуск программы невозможен так как на компьютере отсутсвует DIPortIO.dll
avreal32 использует "5 проводов", так что речь о (ISP Mode)....

ЗЫ. еще раз - LPT - это параллельный интерфейс и путать его с режимом программирования не корректно ИМХО...

Re: Программирование AVR

Добавлено: Пт май 31, 2013 15:51:23
Резистор
Познакомился с AVR studio 4. Возник вопрос: можно ли через него прошивать микроконтроллёр? С помощью программатора Altera Byte Blaster'а? Одни говорят -да, другие нет.

Re: Программирование AVR

Добавлено: Пт май 31, 2013 16:49:17
Engineer_Keen
4-я студия работает с портами COM и USB, байт-бластер насколько я помню подключается к LPT...

Re: Программирование AVR

Добавлено: Пт май 31, 2013 19:17:27
borys
В этом нет великой проблемы, прошить МК можно и без студии, например с помощью PonyProg. Разумеется при наличии
hex-файла. И с фьюзами не начудить.

Re: Программирование AVR

Добавлено: Сб июн 01, 2013 06:23:38
Резистор
В Настройках платы программатора (в PonyProg2000) выдаёт ошибку. Все подробности на картинке. Кто-нибудь знает что-нибудь?

Re: Программирование AVR

Добавлено: Сб июн 01, 2013 09:33:42
ChipKiller
для обращения к LPT нужен драйвер

Re: Программирование AVR

Добавлено: Сб июн 01, 2013 09:57:29
Резистор
Скачал вот этот архив. Установил. Но ошибка всё-равно есть.

Re: Программирование AVR

Добавлено: Вс июн 02, 2013 09:21:44
Резистор
Всё. Ошибка самоустранилась. :)) Теперь появился вопрос по программированию. Как в AVRasm создаются случайные числа в заданном промежутке?

Re: Программирование AVR

Добавлено: Вс июн 02, 2013 09:35:04
Alexeyslav
Разрабатывается алгоритм и....
Алгоритм несложный - берем случайное число, делим по необходимому модулю затем остаток от деления прибавляем к нижней границе.

Re: Программирование AVR

Добавлено: Вс июн 02, 2013 09:44:49
Резистор
Нет вы меня не поняли (точнее я не правильно сформулировал вопрос) :? . Мне нужно получить случайное число (с помощью какой-нибудь функции типа rand в С) .

Re: Программирование AVR

Добавлено: Вс июн 02, 2013 10:05:18
Alexeyslav
Так значит надо написать такую функцию, угу. Обычно это делается на сдвиговых регистрах с обратной связью.
Когда-то делал случайное число на основе 33-битного регистра с отводом от {не помню какого} разряда. Еще можно поискать уже готовые реализации.

Re: Программирование AVR

Добавлено: Вс июн 02, 2013 11:19:46
Jack_A
В Ассемблере, в отличие от С, нет библиотеки с готовыми функциями Rand, Sin, Sqrt и т.д. Все надо пис`ать самому или выуживать из источников. Можно запустить таймер с циклическим перезапуском и брать значение оттуда ( аппаратное решение ), но это если обращение к нему будет не слишком частым. А программно можно реализовать простейший, к примеру, алгоритм : число в 2-байтовой рабочей ячейке умножаем на 5, отбрасывая разряды, уходящие в перенос. Получим псевдослучайное число, равномерно распределенное на интервале [1..65535] . Начальное значение числа должно быть нечетным и быть >= 32767.

Ну навроде так :
СпойлерMOV R16,R24
MOV R17,R25
ADD R24,R16
ADC R25,R17
ADD R16,R16
LSL R17
ADD R16,R16
LSL R17
ADD R24,R16
ADC R25,R17

И усё ! В R24,R25 -- псевдослучайное число в диапазоне [1..65535] Именно псевдослучайное, бо чисто случайные числа можно сгенрировать только аппаратно.

Re: Программирование AVR

Добавлено: Вс июн 02, 2013 12:03:19
ChipKiller
Мне нужно получить случайное число
... вопрос в том насколько случайное - способов получения много (вопрос в доступной периферии - таймеры, компаратор и т.д.)

Re: Программирование AVR

Добавлено: Вс июн 02, 2013 13:10:32
Alexeyslav
Это линейный ГСЧ, характеристики ниже плинтуса. Гораздо проще и качественней генератор получается на основе регистров сдвига.

формула простая: R[0] = R[M] xor R[N] и последующий сдвиг влево. Где R - регистр сдвига разрядностью N с отводом на M бите.
Где-то встречал табличку оптимальных значений M и N при которых генератор имеет максимальный период повторения. Сейчас никак найти не могу, все-таки 10 лет назад гугл был поменьше размерами, искать было проще...

Все же, самый правильный ГСЧ - генератор белого шума подключенный к АЦП, но там своих проблем много - идеального белого шума не существует а стало быть существует максимальная частота выборок при которой последовательность становится не такой уж случайной и более предсказуемой.

Попробуй, сделать ГШ на германиевом диоде/переходе транзистора(они очень сильно шумят, особенно ГТ109) и подать этот сигнал на АЦП с достаточно низким уровнем опорного напряжения(чтобы не усиливать исходный сигнал).

Re: Программирование AVR

Добавлено: Пн авг 19, 2013 08:45:15
balvik
Резистор писал(а):Прочитал обучалку. А в частности раздел посвящённый микроконтроллерам. Появилось два вопроса:
-Как прошивать контролёр?
-И есть какие-нибудь книги и тому подобное по программированию данных контроллеров для начинающих с описанием всех процессов в МК и функций, прерываний и т.д и т.п?
Резистор, почитай сайт http://easyelectronics.ru/ , и еще мое мнение как и у автора вышеуказанного сайта , начинать нужно с ассемблера.
Для этого в сундуке кота есть хорошая книга Джона Мортона Микроконтроллеры AVR вводный курс. Легко понимается и все программы там пишутся в avr студио.

Re: Программирование AVR

Добавлено: Вт авг 20, 2013 14:36:15
Gudd-Head
Alexeyslav писал(а):формула простая: R[0] = R[M] xor R[N] и последующий сдвиг влево. Где R - регистр сдвига разрядностью N с отводом на M бите.
Где-то встречал табличку оптимальных значений M и N при которых генератор имеет максимальный период повторения. Сейчас никак найти не могу, все-таки 10 лет назад гугл был поменьше размерами, искать было проще...
http://www.newwaveinstruments.com/resou ... r_lfsr.htm

А вот пример использования: http://radiokot.ru/circuit/digital/game/03/

Re: Программирование AVR

Добавлено: Вт авг 20, 2013 20:12:30
Alexeyslav
Там общая теория для многоразрядных регистров с произвольным количеством отводов. Не нашел я там оптимального значения M для заданного N. При неподходящем отводе, сокращается размер цикла генератора и смысл от большей разрядности как-то сам по себе пропадает.

Re: Программирование AVR

Добавлено: Вт авг 20, 2013 20:36:40
YS
Не нашел я там оптимального значения M для заданного N.
Искомое ближе, чем кажется. :)

Re: Программирование AVR

Добавлено: Вт авг 20, 2013 23:16:58
Alexeyslav
В табличке по ссылке нет этих данных. Там какие-то случаи с двумя и тремя отводами, а по ссылке дальше(для бльшей разрядности) идет документ в котором просто рябит от цифр и непонятно ЧТО ЭТО ТАКОЕ. Какому-нибудь прожженому математику это может и будет интересно, но уж точно не большинству.

Re: Программирование AVR

Добавлено: Ср авг 21, 2013 09:07:12
Gudd-Head
Alexeyslav писал(а):Там общая теория для многоразрядных регистров с произвольным количеством отводов.
Ну, значит, в глаза долбимся :)
Там для регистров различной длины даны номера бит, с которых надо заводить ОС для получения М-последовательности.