Привет Вам всем!
Подскажите пожалуйста как зделать так чтоб на два выхода микроконтроллер генерировал пульсации разной частоты ОДНОВРЕМЕННО, например:
наB0 - 300 Гц
на B1 - 500 Гц
и при этом сканировал PortD на наличие сигнала?
И вобще это реально?
Или он будет выполнять всё только последовательно?
Это реально.
Если пренебречь небольшой погрешностью частоты, то это реально сделать даже без всяких аппаратных средств, но если использовать режим "Генератор частоты" таймера - будет гораздо точнее. Правда, выходные сигналы могут подаваться на другие выводы (это уж аппаратно задано).
Если выходные частоты формируются аппаратно таймерами, то опрашивать еще какой-то порт вообще проблем нет.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Артур писал(а):как зделать так чтоб на два пина микроконтроллер генерировал пульсации разной частоты ОДНОВРЕМЕННО, например:
на PINB.0 - 300 Гц
на PINB.1 - 500 Гц
и при этом сканировал PortD на наличие сигнала?
Вот пример вывода ШИМ сигнала на два вывода АППАРАТНО - т.е. не загружая вычислениями процессор - задача-упражнение 8 в курсе по AVR под кнопкой ниже.
Последний раз редактировалось tych Пн мар 31, 2008 22:01:29, всего редактировалось 1 раз.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Вот этот код будет выполняться последовательно как я понял?
тоесть на PINB.1 не будет генерации, пока не выполнится первая задержка? А как зделать чтоб генерировало одновременно на обоих пинах и при этом сканировало порт D на наличие сигнала?
Артур, посмотри сообщения выше!
Повторяю: настрой оин таймер на первую частоту, второй на вторую и в их прерываниях дергай нужными тебе выводами, в основной программе опрашивай порт Д - это первый способ.
Второй способ: программируешь оба таймера на генерацию частоты (есть такой режим - генератор частоты называется), причем частоты должны быть те, которые тебе нужны - при этом на выходах OCх будут формироваться импульсы АППРАТНО - в основной программе опрашиваешь порт Д. Вместо генератора частоты можно и режим ШИМ использовать.
Третий способ: настраиваешь один таймер на нужную тебе частоту опроса порта Д и в его прерывании делаешь этот опрос, одним пином дергаешь в основном цикле через задержки, а для второго пина настраиваешь оставшийся таймер по одному из предыдущих способов.
Если очень хорошо подумать, можно извратиться и не использовать один (а может и оба) таймера - это уж смотря какие частоты тебе надо формировать на выводах...
Думай и решай, как советует тебе tych.
P.S. Для МК "одновременно" можно понимать как "с очень небольшой паузой" - если между опросом вывода и переключением другого вывода проходит например 1-2 микросекунды - это и есть "одновременно", причем степень неодновременности может достигать и десятков миллисекунд (например, если результат расчитан на человека - он все равно разницы не заметит).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Тебе потребуется либо почитать даташит(Datasheet - документация по конкретному контроллеру выпускаемая производителем) либо сказать нам какой контроллер ты используеш. Обычно в регистры тацмера нужно записать в каком режиме будет работать таймер(возможны такие варианты(я пока тини2313 изучаю): Быстрый ШИМ, ШИМ с фазовой коррекцией, Очиска при переполнении...), записать пределитель частоты(частота счёта таймера может быть меньше либо равной частоте тактового генератора МК), ну и определить прерывания(компоратор, переполнение)... вроде всё
There is only 10 kind of people: those who understands binary code and those who dont!!!
С тини2313 ситуация такая: первый таймер - восьмибитный(может считать от 0 до 2 в степени 8 максимум).для настройки используются два регистра по восемь бит TCR0A и TCR0B. Для работы нужно выбрать режим с пом битов WGM0x, настроить компаратор(ы) OCR0A(биты COM0A0 COM0A1), OCR0B0(биты такие же тогка вместо A B) и пределитель частоты (биты СS00 CS01 CS 02). Таблици и описание битов есть в даташит. Что-нибуть ещё?
There is only 10 kind of people: those who understands binary code and those who dont!!!
Артур писал(а):Negor - Я тоже изучаю тини 2313 расскажи подробней про его таймеры даташит есть, но не понимаю я по английски а перевод корявый без смысла получается