Генерация двух различных синалов на разные выходы МК

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Пн дек 04, 2006 09:50:08
Откуда: Vladivostok

Сообщение Артур »

Привет Вам всем!
Подскажите пожалуйста как зделать так чтоб на два выхода микроконтроллер генерировал пульсации разной частоты ОДНОВРЕМЕННО, например:
наB0 - 300 Гц
на B1 - 500 Гц
и при этом сканировал PortD на наличие сигнала?
И вобще это реально?
Или он будет выполнять всё только последовательно?
Век живи! - Век учись!
ICQ-15B87330h
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Это реально.
Если пренебречь небольшой погрешностью частоты, то это реально сделать даже без всяких аппаратных средств, но если использовать режим "Генератор частоты" таймера - будет гораздо точнее. Правда, выходные сигналы могут подаваться на другие выводы (это уж аппаратно задано).
Если выходные частоты формируются аппаратно таймерами, то опрашивать еще какой-то порт вообще проблем нет.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

Артур писал(а):как зделать так чтоб на два пина микроконтроллер генерировал пульсации разной частоты ОДНОВРЕМЕННО, например:
на PINB.0 - 300 Гц
на PINB.1 - 500 Гц
и при этом сканировал PortD на наличие сигнала?
Вот пример вывода ШИМ сигнала на два вывода АППАРАТНО - т.е. не загружая вычислениями процессор - задача-упражнение 8 в курсе по AVR под кнопкой Изображение ниже.
Последний раз редактировалось tych Пн мар 31, 2008 22:01:29, всего редактировалось 1 раз.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Пн дек 04, 2006 09:50:08
Откуда: Vladivostok

Сообщение Артур »

Вот этот код будет выполняться последовательно как я понял?
тоесть на PINB.1 не будет генерации, пока не выполнится первая задержка? А как зделать чтоб генерировало одновременно на обоих пинах и при этом сканировало порт D на наличие сигнала?

Код: Выделить всё

main()
 ...
 ...
 ...
{
  while(1)
             {
                PINB.0=1;
                delay_ms(1000);
                PINB.0=0;

                PINB.1=1;
                delay_ms(500);
                PINB.1=0;
             };
}
Век живи! - Век учись!
ICQ-15B87330h
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Используйте таймеры, уже двое же ответили..
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Артур, посмотри сообщения выше!
Повторяю: настрой оин таймер на первую частоту, второй на вторую и в их прерываниях дергай нужными тебе выводами, в основной программе опрашивай порт Д - это первый способ.
Второй способ: программируешь оба таймера на генерацию частоты (есть такой режим - генератор частоты называется), причем частоты должны быть те, которые тебе нужны - при этом на выходах OCх будут формироваться импульсы АППРАТНО - в основной программе опрашиваешь порт Д. Вместо генератора частоты можно и режим ШИМ использовать.
Третий способ: настраиваешь один таймер на нужную тебе частоту опроса порта Д и в его прерывании делаешь этот опрос, одним пином дергаешь в основном цикле через задержки, а для второго пина настраиваешь оставшийся таймер по одному из предыдущих способов.
Если очень хорошо подумать, можно извратиться и не использовать один (а может и оба) таймера - это уж смотря какие частоты тебе надо формировать на выводах...
Думай и решай, как советует тебе tych.

P.S. Для МК "одновременно" можно понимать как "с очень небольшой паузой" - если между опросом вывода и переключением другого вывода проходит например 1-2 микросекунды - это и есть "одновременно", причем степень неодновременности может достигать и десятков миллисекунд (например, если результат расчитан на человека - он все равно разницы не заметит).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Пн дек 04, 2006 09:50:08
Откуда: Vladivostok

Сообщение Артур »

как задействовать таймеры?
Век живи! - Век учись!
ICQ-15B87330h
Вымогатель припоя
Аватара пользователя
Сообщения: 586
Зарегистрирован: Ср мар 07, 2007 22:58:02
Откуда: Черкассы, Украина

Сообщение Negor »

Тебе потребуется либо почитать даташит(Datasheet - документация по конкретному контроллеру выпускаемая производителем) либо сказать нам какой контроллер ты используеш. Обычно в регистры тацмера нужно записать в каком режиме будет работать таймер(возможны такие варианты(я пока тини2313 изучаю): Быстрый ШИМ, ШИМ с фазовой коррекцией, Очиска при переполнении...), записать пределитель частоты(частота счёта таймера может быть меньше либо равной частоте тактового генератора МК), ну и определить прерывания(компоратор, переполнение)... вроде всё
There is only 10 kind of people: those who understands binary code and those who dont!!!
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Пн дек 04, 2006 09:50:08
Откуда: Vladivostok

Сообщение Артур »

Negor - Я тоже изучаю тини 2313 расскажи подробней про его таймеры даташит есть, но не понимаю я по английски а перевод корявый без смысла получается :(
Век живи! - Век учись!
ICQ-15B87330h
Вымогатель припоя
Аватара пользователя
Сообщения: 586
Зарегистрирован: Ср мар 07, 2007 22:58:02
Откуда: Черкассы, Украина

Сообщение Negor »

С тини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!!!
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 157
Зарегистрирован: Пн дек 04, 2006 09:50:08
Откуда: Vladivostok

Сообщение Артур »

пасибо! извините за невнимательность! :)
Век живи! - Век учись!
ICQ-15B87330h
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 173
Зарегистрирован: Чт мар 20, 2008 20:33:43

Сообщение delay »

Артур писал(а):Negor - Я тоже изучаю тини 2313 расскажи подробней про его таймеры даташит есть, но не понимаю я по английски а перевод корявый без смысла получается :(
Здравствуй тезка!
О даташите на русском и описании таймеров и пр. я давал ссылки здесь
http://radiokot.ru/forum/viewtopic.php? ... E%EC#93182
А в этом твоем коде:
PINB.0=1;
delay_ms(1000);
PINB.0=0;

PINB.1=1;
delay_ms(500);
PINB.1=0;
Ты хочешь выставить 1 и 0 на выходах порта B?
Тогда нужно PORTB.0=0;
PINB.0 используется при опросе порта. Или я что-то не понял?
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 586
Зарегистрирован: Ср мар 07, 2007 22:58:02
Откуда: Черкассы, Украина

Сообщение Negor »

Хм... а что тема не исчерпана? Я сужу по дате сообщений.
There is only 10 kind of people: those who understands binary code and those who dont!!!
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 173
Зарегистрирован: Чт мар 20, 2008 20:33:43

Сообщение delay »

Действительно, как-то растянуто во времени. Я посмотрел толко на последний пост 31.03.08.
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»