roboforum.ru

Технический форум по робототехнике.

МикроКонтроллер AVR начинающим - общие вопросы

Re: МикроКонтроллер AVR начинающим - общие вопросы

к561ЛА7 » 10 дек 2009, 21:56

Отцы!
Мигать светодиодом я уже научился, а вот как им плавно мерцать!
НАучите меня пожалуйста плавно мерцать светодиодом и с разной частотой!
ПОЖАЛУЙСТА!

Re: МикроКонтроллер AVR начинающим - общие вопросы

avr123.nm.ru » 10 дек 2009, 22:04

Опиши алгоритм по-русски а потом запиши на Си.

Re: МикроКонтроллер AVR начинающим - общие вопросы

к561ЛА7 » 11 дек 2009, 09:42

Ура!
А как плавно мерцать 8-ю светодиодами? и с разной частотой?
Хелп, плиз!
Словарного запаса не хватает

Re: МикроКонтроллер AVR начинающим - общие вопросы

EdGull » 11 дек 2009, 09:44

тебе ж сказали "Опиши алгоритм по-русски"

Re: МикроКонтроллер AVR начинающим - общие вопросы

к561ЛА7 » 11 дек 2009, 11:00

Плавно мерцаем одним светодиодом
Тем временем плавно мерцаем другим светодиодом с другой частой
Тем временем плавно мерцаем другим светодиодом с другой частой
Тем временем плавно мерцаем другим светодиодом с другой частой
пятым светодиодом мигаем
шестым - 2 мигания - 5 мерцаний
седьмым - 3 мигания - пауза - 5 миганий - пауза
восьмой то горит то не горит

Re: МикроКонтроллер AVR начинающим - общие вопросы

EdGull » 11 дек 2009, 11:05

а теперь в цифрах пожалуйста, т.е. сколько раз в секунду, яркость указываем в пределах 0-100%

Re: МикроКонтроллер AVR начинающим - общие вопросы

к561ЛА7 » 11 дек 2009, 11:43

Плавно мерцаем одним светодиодом
с периодом мерцания 2 сек , яркость изменяется от 0 до 80 %

Тем временем плавно мерцаем другим светодиодом
с периодом мерцания 5 сек , яркость изменяется от 0 до 100 %

Тем временем плавно мерцаем другим светодиодом с периодом мерцания 1 сек , яркость изменяется от 0 до 60 %


Тем временем плавно мерцаем другим светодиодом
с периодом мерцания 10 сек , яркость изменяется от 0 до 100 %


пятым светодиодом мигаем
с частотой 3 герц

шестым - 2 мигания с частой 2 герц - 5 мерцаний
с частой 7 рерц

седьмым - 3 мигания с часто1 0,5 герц - пауза - 5 миганий (3 герц) - пауза
восьмой то горит то не горит случайным образом но не чаще чем с частой 5 герц

Re: МикроКонтроллер AVR начинающим - общие вопросы

avr123.nm.ru » 11 дек 2009, 11:46

Вы нарисуйте для себя это в виде графика на временнОй оси - у вас получатся точки по времени когда происходит смена состояний выводов МК - вот это в него и запрограмите - получится простой автомат. т.е.

бесконечный цикл:
сосотояние 8 выходов 1
пауза 1
сосотояние 8 выходов 2
пауза 2

и так далее

некоторые выходы могут быть на 1 и 0 а ШИМ для плавности но тогда паузы будут поменьше.

Re: МикроКонтроллер AVR начинающим - общие вопросы

к561ЛА7 » 11 дек 2009, 12:07

А для каждой ноги подпрограмку написать никак?

Re: МикроКонтроллер AVR начинающим - общие вопросы

avr123.nm.ru » 11 дек 2009, 12:27

Можно конечно, но если вы по-русски не можете алгоритм описать то как вы это будете делать на любом языке пограммирования ?

Принцип автомата тоже широко применяется и достаточно хорош хотя и жрет память иногда. Но в Мега8 за 48 рублей вы его наверняка поместите.

Re: МикроКонтроллер AVR начинающим - общие вопросы

к561ЛА7 » 11 дек 2009, 13:53

Проблема не в языке, а в понимании.
Как написатиь подпрограмку для каждой ноги если паузы контроллер выполняет для всей программы в целом.

Re: МикроКонтроллер AVR начинающим - общие вопросы

avr123.nm.ru » 11 дек 2009, 14:29

Надо найти минималльную паузу между изменениями состояний дискретных выходов и на него настроить прерывание таймера. В этом рерывании сделать несколько счетчиков - свой для каждого канала и по их насчету выполнять переключения.

Для ШИМ аналогично но прерывание свое делать.

Re: МикроКонтроллер AVR начинающим - общие вопросы

contr » 11 дек 2009, 15:16

Разбить на субпрограммы для каждой ноги не получится. Пока выполняется такая подпрограмма, другие диоды остаются без управления. Придется управлять всем портом, зажигая нужные диоды в определенный момент. Если лишь яркость, то примерно так
Код: Выделить всёРазвернуть
PORT='00000001' яркость первого 100%
delay
PORT='00000011' второго 90%
delay
PORT='00000111' третьего 80%

и т.д. ~ 10 раз, что даст столько же значений спадающей от 1--> 8 leds яркости
Весь цикл должен занять порядка 10мс, чтобы ШИМ сильно видно не было.

Re: МикроКонтроллер AVR начинающим - общие вопросы

milkpower » 11 дек 2009, 19:02

вопрос о таймерах, в меге128 инициализирую 16-ти битные таймеры 1 и 3 соотв. регистры у обоих одинаковые, но при отладке выясняется что счетчик 1 прибавляется, а счетчик 3 вычитается. подскажите в каких регистрах может быть ошибка?

Добавлено спустя 1 час 38 минут 53 секунды:
походу это глюк студии, в железе ведет себя по другому

Re: МикроКонтроллер AVR начинающим - общие вопросы

Duhas » 11 дек 2009, 19:04

мб у тебя счетчик в фэйз коррект пвм ушел ) и ходит вверх-вниз ...


cron
Rambler\'s Top100 Mail.ru counter