Форум по микроконтроллерам: Программирование c нуля в AVRStudio 5 - Форум по микроконтроллерам

Перейти к содержимому

  • 13 Страниц +
  • « Первая
  • 10
  • 11
  • 12
  • 13
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Программирование c нуля в AVRStudio 5 основы и основные понятия

#221 Пользователь офлайн   galrad 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 240
  • Регистрация: 26 Февраль 11

Отправлено 15 Январь 2015 - 18:21

Просмотр сообщенияsrqemiko (12 Январь 2015 - 23:39) писал:

внешнего генератора на частоте 32Гц подключенного к порту РА2(ХTAL1)

Честно говоря, я не знаю, будет ли работать контроллер на такой низкой частоте. Т.е если предполагается, что 32Гц - это тактовая частота, поступающая из внешнего генератора, (фьюзы включены на внешний сигнал) то контроллер ни как не должен реагировать, по сути он "мертвый". Другое дело, если он работает от внутреннего тактового генератора, а считает сигналы стабильного генератора..., но тогда нужно подключать генератор на вход int0 или int1 и отслеживать приходящий сигнал по прерываниям, тут уже решения могут быть разные.

P.S. Попробовал подключить тиньку к реальному генератору в 32Гц и неожиданно для себя подтвердил, что контроллер работает и с тактовой частотой в 32Гц и даже ниже. Написал и прошил в тинку простейшую прогу инверсии порта без задержек и просто удивительно - светодиод на выходе заморгал. Значит работает! Беру свои слова обратно. Дело за малым завтра прошью фьюзы и посмотрю как поведет себя разъем PA1.

Сообщение отредактировал galrad: 15 Январь 2015 - 22:34

0

#222 Пользователь офлайн   galrad 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 240
  • Регистрация: 26 Февраль 11

Отправлено 16 Январь 2015 - 18:10

Посмотрел как работает микроконтроллер на низких частотах, от 1 до 100Гц, многие встроенные устройства в микроконтроллере не работают, но простейшая логика работает без сбоев, в частности можно сделать любую логическую схему по принципу ввода-вывода, сдвиговые регистры, триггеры или делители и все в таком роде, попытки обращения к таймерам работают, но со сбоями, обращение к памяти EEPROM абсолютно не работает (видимо нужны короткие стробы). Работают любые линейные алгоритмы не требующие прерываний (контроллер предварительно программируется в обычном режиме). Практическая ценность - возможность сделать логическую схему программно (наподобие ПЛИС) когда входной сигнал может сильно меняться по частоте и длительностям импульсов. Конечно, максимально эффективно микроконтроллер будет работать в рекомендованных параметрах и подобные "извращения" мало оправданы. Хотя, не стоит зарекаться!

По поводу установок фьюз - устанавливается EXTCLK - внешний источник сигнала (в дальнейшем использовать только с внешним источником опорного сигнала, иначе контроллер работать не будет, от кварца тоже не запустится - это надо иметь в виду)
CKOUT - обнуляется (для снижения чувствительности входа, иначе будет реагировать на всякие помехи)
Прикрепленное изображение: фьзы.png
Порт А конфигурируется как обычно разьем PA1 на вывод PA0 на вход, особенностей здесь нет никаких

Сообщение отредактировал galrad: 16 Январь 2015 - 19:10

0

#223 Пользователь офлайн   srqemiko 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 2
  • Регистрация: 12 Январь 15

Отправлено 18 Январь 2015 - 23:26

на данный момент таймер на 32Гц работает нормально отстают за месяц всего на одну минутку но это не беда. Индикация на семисегментных индикаторах идет без всяких перемигиваний, по крайней мере глазу это не заметно. Так же в таймере было организовано сохранение некоторых данных в EEPROM и как не странноте, но при этой частоте работы таймера данные без всяких проблем сохраняются и считываются.
0

#224 Пользователь офлайн   galrad 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 240
  • Регистрация: 26 Февраль 11

Отправлено 19 Январь 2015 - 21:18

Всё же как то необычно делать такую конструкцию. Мне кажется, что генератор на часовом кварце на 32КГц. Тогда достаточно просто сделать обычные часы и динамическую индикацию. А вот 32Гц этого сделать не позволит. Даже если предположить, что на высвечивание одного разряда часов потребуется один такт, то смена разрядов будет происходить с частотой 8 Гц, а это уже очень заметно. А сколько ещё тактов уйдет на перевод данных из массива? Однозначно - больше 8 тактов, т.е каждый разряд будет включаться с частотой меньше одного герца.
Ну а если это действительно работает от 32Гц, то разубедите меня. Выкладывайте на форум, что у Вас есть и удивите нас...
0

#225 Пользователь офлайн   nick14 

  • PipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 465
  • Регистрация: 15 Февраль 11
  • ГородРыбинск

Отправлено 19 Январь 2015 - 23:25

Просмотр сообщенияsrqemiko (18 Январь 2015 - 23:26) писал:

на данный момент таймер на 32Гц работает нормально отстают за месяц всего на одну минутку но это не беда. Индикация на семисегментных индикаторах идет без всяких перемигиваний, по крайней мере глазу это не заметно. Так же в таймере было организовано сохранение некоторых данных в EEPROM и как не странноте, но при этой частоте работы таймера данные без всяких проблем сохраняются и считываются.


Наверно стоит проверить реальную тактовую частоту , так не может быть....
0

#226 Пользователь офлайн   hataori 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 2
  • Регистрация: 07 Апрель 15

Отправлено 07 Апрель 2015 - 04:51

Доброго времени суток! Нужна помощь.. В университете преподают предмет микропроцессорные системы управления. На лекциях и практиках рассматривали ассемблер только на примере эмулятора КР580. По окончанию курса задали выполнить курсовую работу по созданию устройства в Proteus на базе контроллера Atmel. В качестве учебного материала лишь хиленькая методичка по AVR.. На мой вариант выпало создание системы, состоящей из 2 дальномеров, определяющих расстояние до объекта, которое в условных единицах выводится на LCD дисплей(+ выдаёт звуковой сигнал по достижению наименьшего расстояния). Я так полагаю, имитировать работу дальномеров в протеус будут переменные резисторы. Не могли бы вы рассказать поподробнее, как работать с дисплеем? Я бы не отказался и от готовой схемы, конечно.. Вам это труда не составит, я думаю, но я не настолько наглый. Возможно, вы встречали на других сайтах подобные работы. Заранее благодарю.
0

#227 Пользователь офлайн   galrad 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 240
  • Регистрация: 26 Февраль 11

Отправлено 07 Апрель 2015 - 22:41

Вам нужно описать физику измерения расстояния. Чем будете мерить? Ультразвуком? Лазером? Сантиметровыми радиоволнами? Хотя принцип один - эхолокация. Насколько я помню, расстояние зависит от отношений длины волны и времени возврата эха. Когда будет готова математическая основа, то используя ее, нужно составить алгоритм программы. Только после этого можно написать программу. Сразу скажу, что за Вас эту работу никто делать не будет. В лучшем случае мы поможем с отдельными модулями программы и их отладкой...
Работу с дисплеем я описал выше, можно скачать бибилиотеку для работы с LCD в ассемблере, сложностей работы с библиотекой вообще нет...

Сообщение отредактировал galrad: 07 Апрель 2015 - 22:45

0

#228 Пользователь офлайн   galrad 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 240
  • Регистрация: 26 Февраль 11

Отправлено 08 Апрель 2015 - 19:54

Посмотрите ссылки:
http://home.roboticl...asonic_distance


Александр Писанец все разложил "по полочкам" правда программа на СИ, но перевести на ассемблер не представляет труда.
0

#229 Пользователь офлайн   hataori 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 2
  • Регистрация: 07 Апрель 15

Отправлено 09 Апрель 2015 - 04:58

Вы меня не совсем поняли.. Мне нужно сделать эмулятор устройства, не в железе.. Так вот, проблема в том, что я понятия не имею как сэмулировать дальномер.. У вас есть идеи? Пробовал качать библиотеку с дальномерами, но протеус вылетает при налиции их в схеме
0

#230 Пользователь офлайн   galrad 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 240
  • Регистрация: 26 Февраль 11

Отправлено 09 Апрель 2015 - 16:41

Если Вы посмотрели видео, то там четко показано, что расстояние имеет прямую зависимость от времени до формирования импульса "возврата". Для эмуляции (наладки) можно использовать компаратор или АЦП (если они свободны) т.е. сформировать время задержки в зависимости от напряжения на переменном резисторе - АЦП преобразует напряжение на переменном резисторе в определенное значение, от которого будет зависеть время задержки (по сути вольтметр, где напряжение будет преобразовываться в показатели расстояния)...
0

#231 Пользователь офлайн   york 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 2
  • Регистрация: 10 Июнь 15

Отправлено 13 Июнь 2015 - 13:17

Просмотр сообщенияgalrad (18 Август 2013 - 14:09) писал:

Программа индикации счета нажатий кнопок получилась небольшой, по комментариям можно легко ориентироваться. Нажатие на кнопку + увеличивает значение индикатора на 1, кнопка - , наоборот:




А как увеличить диапазон больше 255? Например 500
0

#232 Пользователь офлайн   galrad 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 240
  • Регистрация: 26 Февраль 11

Отправлено 13 Июнь 2015 - 22:32

Использовать 16 битный регистр, с ограничением в 500, усложнить программу 2-10 конвертирования...
0

#233 Пользователь офлайн   york 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 2
  • Регистрация: 10 Июнь 15

Отправлено 14 Июнь 2015 - 09:35

Просмотр сообщенияgalrad (13 Июнь 2015 - 22:32) писал:

Использовать 16 битный регистр, с ограничением в 500, усложнить программу 2-10 конвертирования...


Спасибо! Буду пробовать сделать.
0

#234 Пользователь офлайн   galrad 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 240
  • Регистрация: 26 Февраль 11

Отправлено 05 Октябрь 2015 - 13:13

Компания Atmel выпустила новую версию компилятора под названием Atmel Studio 7.0
http://www.atmel.com...tmelstudio.aspx
описание

Прикрепленное изображение: 0.png Прикрепленное изображение: 1.png Прикрепленное изображение: 2.png Прикрепленное изображение: 3.png Прикрепленное изображение: 4.png Прикрепленное изображение: 5.png Прикрепленное изображение: 6.png Прикрепленное изображение: 7.png Прикрепленное изображение: 8.png

Сообщение отредактировал galrad: 06 Октябрь 2015 - 10:14

0

#235 Пользователь офлайн   Игорь Бутывский 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 219
  • Регистрация: 15 Февраль 11

Отправлено 07 Октябрь 2015 - 08:54

Я Атмелами пока не занимаюсь. Но программы для них устанавливаю. Вдруг понадобится.
AtmelStudio 6.2 русифицировалось без проблем.
А седьмая версия не хочет.
Требует Visual Studio Professional или Enterprise. А они платные.
0

#236 Пользователь офлайн   galrad 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 240
  • Регистрация: 26 Февраль 11

Отправлено 07 Октябрь 2015 - 09:23

Да, программа "родилась" около недели. Специальной руссификации для неё нет, но есть руссифицированный Visual Studio Professional (крякнутый), с ним возможна частичная руссификация. 7 версия акцентирована больше в сторону 32 битных микроконтроллеров и на язык СИ и СИ++ для программирования arduino. Максимально расширен список поддерживаемых контроллеров. Поддерживает все последние программаторы. Иконки функционально не поменялись, но интерфейс претерпел изменения в сторону упрощения.
0

#237 Пользователь офлайн   MUVAZIN 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 9
  • Регистрация: 04 Январь 16

Отправлено 04 Январь 2016 - 03:35

Просмотр сообщенияgalrad (18 Август 2013 - 14:09) писал:

Программа индикации счета нажатий кнопок получилась небольшой, по комментариям можно легко ориентироваться. Нажатие на кнопку + увеличивает значение индикатора на 1, кнопка - , наоборот:




ребята почему эта прога не работает на atmega 8? файл описания поменял не работает :( если можно переделайте и скиньте если конечно не трудно, я новичок в этом дело если че извините ;)
0

#238 Пользователь офлайн   galrad 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 240
  • Регистрация: 26 Февраль 11

Отправлено 05 Январь 2016 - 22:28

Просмотр сообщенияMUVAZIN (04 Январь 2016 - 03:35) писал:

ребята почему эта прога не работает на atmega 8? файл описания поменял не работает :( если можно переделайте и скиньте если конечно не трудно, я новичок в этом дело если че извините ;)


Эта программа относительно простая и поэтому достаточно заменить строку .include "tn2313def.inc" на .include "m8def.inc" и правильно собрать схему. В компиляторе выставить контроллер ATmega8 вместо ATtiny2313
Все работает. Было бы сложнее если в программе использовались другие регистры...
Перекомпилировал под mega8 работает без проблем:
Изображение

Сообщение отредактировал galrad: 05 Январь 2016 - 23:58

0

#239 Пользователь офлайн   MUVAZIN 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 9
  • Регистрация: 04 Январь 16

Отправлено 07 Январь 2016 - 22:01

Просмотр сообщенияgalrad (15 Август 2013 - 22:19) писал:


; =================================================== Выводим значение на дисплей
led:
rcall Segment ; Переход в подпрограмму кодирования сегментов светодиодного дисплея
out portB, r0 ; Вывод значения на индикацию
ret ; Завершение подпрогрпммы
; =================================================== Кодирование значений индикатора



ребят мне интересна вот это строка "out PortB, r0" никак не могу понять откуда взялся этот регистр r0 или это не регистр? объясните пожалйуста если не трудно
0

#240 Пользователь офлайн   galrad 

  • Завсегдатай
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 240
  • Регистрация: 26 Февраль 11

Отправлено 08 Январь 2016 - 13:01

Просмотр сообщенияMUVAZIN (07 Январь 2016 - 22:01) писал:

ребят мне интересна вот это строка "out PortB, r0" никак не могу понять откуда взялся этот регистр r0 или это не регистр? объясните пожалйуста если не трудно


Уважаемый "MUVAZIN", просьба не копировать всю страницу, а указывать пост, на который Вы ссылаетесь, иначе администратор Вас заблокирует!
Если Вы хотите освоить программирование, то начните с системы команд для AVR микроконтроллеров. Вот именно там и найдете команду LPM.
Итак: команда LPM загружает один байт, адресованный регистром Z, в регистр 0 (R0).... и т.д. по ссылке
http://www.gaw.ru/ht...avr/asm/lpm.htm
Рекомендую внимательно читать предыдущие посты, коментарии и последующие пояснения к самой программе!

Сообщение отредактировал galrad: 08 Январь 2016 - 13:04

0

Поделиться темой:


  • 13 Страниц +
  • « Первая
  • 10
  • 11
  • 12
  • 13
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей