Управление генератором сигналов на pic схема. Генератор импульсов на pic-контроллере

Управление генератором сигналов на pic схема. Генератор импульсов на pic-контроллере

Краткие характеристики:

· Три способа задания длительности импульсов: напряжение (в т. ч. потенциометр); USART; настройки во Flash-памяти.

· Диапазоны генерируемых частот:

– по напряжению – от менее 1 Гц до 10 кГц (три диапазона);

– по USART/Flash – от 0.11 Гц до 7.246 кГц.

· Включение/выключение генерации; управление состоянием покоя.

· Полностью автономен, не нуждается в дополнительных компонентах (кварцевом резонаторе, источниках опорной частоты и др.).

Возможные применения:

· Управляемый или неуправляемый частотозадающий узел, встраиваемый в электронное оборудование (задающий генератор).

· Управление световой индикацией с прерывистым режимом работы.

· Синтезатор звуковых частот.

· Имитатор сигналов для отладки электронного оборудования.

ОБЩЕЕ ОПИСАНИЕ ГЕНЕРАТОРА ИМПУЛЬСОВ

Генератор импульсов на базе микроконтроллера PIC12F675 предназначен для формирования прямоугольных логических импульсов регулируемой длительности.

Имеет гибкую настройку, широкий диапазон выходных частот и управление, которые делают применение этой микросхемы удобным для широкого круга задач. Благодаря своей компактности и автономности позволяет существенно упростить электронные схемы, имеющие узлы генерации частоты, сделать их более точными, наделить их дополнительными функциями, уменьшить площадь печатных плат.

Назначение выводов микросхемы (см. рисунок выше):

Вывод Обозначение Тип Описание
1 Vdd Пит. Питание (диапазон напряжений питания указан ниже).
2 Pulses Выход Генерируемые импульсы.
3 IdleState Вход Задание состояния покоя выхода Pulses (при выключенной генерации):
0 – при выключенной генерации выход Pulses находится в состоянии «0»;
1 – при выключенной генерации выход Pulses находится в состоянии «1»;
соединён с выходом Pulses – при отключении генерации выход Pulses будет оставаться в том состоянии, в котором он был на момент её отключения (после включения питания состояние Pulses будет неопределено).
Смена состояния входа IdleState при выключенной генерации приводит к немедленной смене состояния выхода Pulses (работает как повторитель). При этом время реакции на смену сигнала IdleState – до 100 мкс.
4 Run Вход Разрешение генерации импульсов: 1 – включена, 0 – выключена.
При переходе Run из 0 в 1 выход Pulses немедленно изменяет своё состояние на противоположное (фронт первого импульса).
При переходе Run из 1 в 0 выход Pulses немедленно переходит в состояние покоя (текущий импульс по длительности не завершается).
Время реакции на смену сигнала Run – до 100 мкс, в «медленном режиме» – до 500 мкс.
5 M1 Вход Выбор режима работы (M1:M0):
0:0 – напряжение, быстрый режим.
0:1 – напряжение, средний режим.
1:0 – напряжение, медленный режим.
1:1 – USART/Flash.
Режим работы может изменяться «на ходу», при этом желательно, чтобы ножки M0 и M1 меняли состояние одновременно. Время реакции на смену сигналов M1 и M0 обычно не превышает нескольких мкс.
Если генератор всегда используется в одном и том же режиме, ножки M0 и M1 можно притянуть к Vdd и Vss в соответствии с требуемым режимом.
6 M0 Вход
7 Ur / RX Вход В режиме напряжения – аналоговый вход Ur (задаёт длительность импульсов: Vss – минимальная, Vdd – максимальная).
В режиме USART – цифровой вход RX (линия связи).
В режиме Flash – цифровой вход RX, должен быть притянут к Vdd.
8 Vss Земля «Земля» питания и логики.

Рекомендуется (не является обязательной) установка конденсатора ёмкостью 1–10 мкФ между линиями Vdd и Vss в непосредственной близости от микросхемы, особенно при управлении длительностью импульсов с помощью напряжения (способствует снижению помех на линии питания).

УПРАВЛЕНИЕ ДЛИТЕЛЬНОСТЬЮ ИМПУЛЬСОВ С ПОМОЩЬЮ НАПРЯЖЕНИЯ

В режиме управления длительностью импульсов с помощью напряжения управляющее напряжение подаётся на вход Ur, который в этом режиме работает как вход АЦП, преобразующего величину напряжения в 10-битное значение (0...1023). Значение 0 (Ur=Vss) соответствует минимальной длительности импульсов, значение 1023 (Ur=Vdd) – максимальной.

Для задания длительности импульсов вручную в качестве источника напряжения можно использовать потенциометр (например, 10–20 кОм), как показано на схеме справа. Так как вход Ur практически не потребляет тока, потенциометр обеспечит линейную регулировку длительности импульсов во всём диапазоне. При этом для снижения помех на входе АЦП и повышения стабильности генерируемой частоты рекомендуется заземлить вход Ur через конденсатор 1–10 мкФ, установленный в непосредственной близости от микросхемы.

Коэффициент заполнения импульсов при управлении напряжением всегда равен 50%.

Регулировка с помощью напряжения осуществляется в трёх диапазонах, выбираемых входами M1:M0:

Обозначение «(0...1023)» в таблице – это значение АЦП, полученное после преобразования входного напряжения Ur (Vss...Vdd).

УПРАВЛЕНИЕ ДЛИТЕЛЬНОСТЬЮ ИМПУЛЬСОВ ПО USART

Выбор режима USART/Flash осуществляется подачей логических единиц на оба входа M0 и M1. При этом вход RX является цифровым входом линии связи USART.

Внимание! Уровни напряжения на входе RX логические (Vss и Vdd)! Для подключения к линии RS-232 используйте микросхемы-драйверы (например, MAX232). Подача сигнала линии RS-232 напрямую на вход RX может привести к его выходу из строя!

Связь с контроллером однонаправленная (только на приём). Параметры связи: скорость обмена 4800 бод, 8 бит, 1 стоп-бит, без контроля чётности. Неактивным состоянием линии (отсутствием передачи) считается высокий уровень. Передача символов по линии может осуществляться в любой момент и сама по себе не влияет на генерацию импульсов, в том числе не создаёт дополнительного джиттера («дрожания») фронтов.

При управлении по USART коэффициент заполнения импульсов может меняться произвольно (длительность импульсов и пауз между ними задаются отдельно).

Управление генерацией может осуществляться как с помощью входов Run и IdleState, так и с помощью команд по USART, при этом использование каждого из этих двух входов настраивается индивидуально.

Обращение к генератору импульсов по USART всегда имеет следующий вид:

Все символы внутри скобок – шестнадцатеричные цифры (0...F, буквы A...F строго заглавные!). Для всех двухбайтовых полей первой передаётся старшая цифра, последней – младшая.

Пакет передаётся без пробелов, длина пакета всегда составляет 14 символов (считая скобки). Все символы до "" игнорируются. Пакеты меньшей или большей длины игнорируются (не выполняются). Если во время приёма пакета происходила смена сигналов M1:M0, такой пакет также игнорируется. Выполнение команды, содержащейся в корректном пакете, происходит сразу после приёма символа ">".

Назначение полей пакета:

Поле Описание
KK Команда (значения шестнадцатеричные):
22 – задание параметров генерации;
2D – задание параметров генерации и их запись во Flash-память (настройка режима Flash).
Изменения параметров генерации вступают в силу немедленно (текущий импульс или пауза по длительности не завершаются).
Пакеты с другими командами игнорируются (не выполняются).
СС Конфигурация выводов Run и IdleState. Биты значения: C7 C6 C5 C4 C3 C2 C1 C0.
Бит C0 : 0 = включать генерацию по входу Run; 1 = включать генерацию по значению бита C3.
Бит C1 : 0 = состояние покоя по значению входа IdleState; 1 = состояние покоя по значению бита C4.
Бит C3 : при C0 = 1: 1 – генерация импульсов включена, 0 – генерация импульсов выключена.
Бит C4 : при C1 = 1: значение выхода Pulses в состоянии покоя (при выключенной генерации).
Остальные биты игнорируются.
LLLL Длительность
импульсов.
Определяются формулой: длительность = [значение+1]*69 мкс.
Минимальная длительность (значение = 0): 69 мкс.
Максимальная длительность (значение = 65535): 4.521984 c.
Дискретность задания длительности: 69 мкс.
Значения в формуле – десятичные, при передаче – шестнадцатеричные.
PPPP Длительность пауз
между импульсами.

Примеры конфигурирования параметра CC (значения двоичные, в скобках – шестнадцатеричные):

· 00000000 (00) – генерация включается входом Run, состояние покоя определяется входом IdleState.

· 00000010 (02) – генерация включается входом Run, состояние покоя равно 0.

· 00010010 (12) – генерация включается входом Run, состояние покоя равно 1.

· 00001001 (09) – генерация постоянно включена (состояние покоя значения не имеет).

· 00000001 (01) – генерация постоянно выключена (состояние покоя определяется входом IdleState).

· 00000011 (03) – генерация постоянно выключена (на выходе всегда 0).

· 00010011 (13) – генерация постоянно выключена (на выходе всегда 1).

Длительность периода импульсов определяется формулой TTTT = LLLL+PPPP и лежит в пределах от 138 мкс (около 7246 Гц) до 9.044 с (около 0.11 Гц). Дискретность задания периода 69 мкс (или 138 мкс при коэффициенте заполнения 50%).

При входе в режим USART генерация импульсов начинает осуществляться в соответствии с настройками, хранящимися во Flash-памяти. Поэтому при определённых настройках, отличающихся от заводских, генерация может начаться ещё до подачи соответствующей команды по USART (об установках Flash-памяти см. ниже).

Замечание. После корректной команды записи во Flash-память («2D») новые параметры генерации вступают в силу немедленно (как после команды «22»). Однако за этим следует пауза, в течение которой микросхема производит запись параметров в энергонезависимую память и не реагирует на смену внешних сигналов и новые символы USART (генерация продолжается в заданном режиме). Длительность паузы составляет порядка 23 мс. Однако, так как время записи в энергонезависимую память может отличаться, рекомендуется выдерживать 25–30 мс, прежде чем посылать новые команды по USART.

УПРАВЛЕНИЕ ДЛИТЕЛЬНОСТЬЮ ИМПУЛЬСОВ ЧЕРЕЗ FLASH-ПАМЯТЬ

Выбор режима USART/Flash осуществляется подачей логических единиц на оба входа M0 и M1. При этом для работы в режиме Flash на входе RX также должна быть непрерывная логическая единица.

Настройки, хранимые во Flash-памяти, соответствуют константам CC (конфигурация выводов), LLLL (длительность импульсов) и PPPP (длительность пауз между импульсами) из таблицы выше, значения которых устанавливаются изготовителем либо программируются через режим USART.

Если в константе CC биты C0=1 и C3=1, генерация начнётся сразу при переходе в режим Flash и будет продолжаться всё время нахождения в нём. Если бит C0=0, генерация будет включаться/выключаться входом Run, при этом состояние покоя конфигурируется битами C1 и C4 (примеры смотрите выше).

Режим Flash удобен для создания автономных генераторов постоянной частоты, не требующих настройки «снаружи» (через напряжение или USART) и имеет более высокую стабильность частоты, чем при управлении напряжением (из-за отсутствия влияния помех на входе Ur).

Заводские установки во Flash-памяти по умолчанию:

CC = 00 (управление генерацией сигналами Run и IdleState);

LLLL = десятичное 7245 (соответствует 500 мс);

PPPP = десятичное 7245 (соответствует 500 мс).

Таким образом, по умолчанию микросхема настроена как генератор частоты 1 Гц (коэффициент заполнения 50%) с управлением от входов Run и IdleState.

При поставке мы можем сконфигурировать микросхему по Вашим пожеланиям (подробнее ниже), либо Вы сможете самостоятельно однократно или многократно переконфигурировать её посредством USART (потребуется соответствующее оборудование). Встроенная энергонезависимая память микросхемы обеспечивает не менее 100000 циклов перезаписи (обычно до 1000000).

ГЕНЕРАТОР ПАЧЕК ИМПУЛЬСОВ

Генератор пачек импульсов может быть реализован с помощью двух одинаковых микросхем генератора импульсов, при этом выход Pulses первой микросхемы соединяется с входом Run второй, а вход IdleState первой микросхемы заземляется (см. схему справа).

Включение и выключение генерации пачек импульсов осуществляется с помощью входа Run первой микросхемы, а состояние покоя при выключенной генерации – входом IdleState второй микросхемы.

Входы Ur / RX, M0 и M1 первой микросхемы определяют параметры пачек, а входы Ur / RX, M0 и M1 второй микросхемы – параметры импульсов внутри пачек. При этом, если необходимо, первая и вторая микросхемы могут работать в разных режимах (например, одна от потенциометра, а другая по настройкам Flash-памяти).

Возможное применение генераторов пачек импульсов: прерывистая звуковая сигнализация, прерывистая световая индикация с регулированием яркости и другое.

ПРОЧИЕ ХАРАКТЕРИСТИКИ

Электрические и температурные характеристики микросхемы соответствуют микроконтроллеру PIC12F675, описание которого на русском языке можно найти (формат PDF) .

Основные электрические характеристики генератора импульсов следующие:

· Напряжение питания Vdd: от 2.5 до 5.5 В (в т. ч. 3.3 В, 5 В).

· Диапазон рабочих температур: от –40 до +85 °C.

· Максимальный ток стока/истока на выходе Pulses: 25 мА.

· Потребляемый ток: не более 4 мА (типично 1 мА) плюс ток на выходе Pulses.

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

ЗАКАЗ МИКРОКОНТРОЛЛЕРА С ПРОГРАММОЙ

ВНИМАНИЕ! У нас Вы можете приобрести микроконтроллер PIC12F675 с уже прошитой программой генерации частоты по фиксированной цене – 250 рублей!

При заказе более 5 штук цена снижается; для оптовых партий цена в несколько раз ниже (зависит от размера партии: заполните форму ниже, чтобы узнать цену).

При желании вы также можете самостоятельно приобрести чистый контроллер PIC12F675 в розничной торговой сети и заказать у нас только его прошивку (стоимость по общему тарифу).

При заказе Вы можете указать настройки, зашиваемые во Flash-память (длительности импульсов, режим работы, конфигурацию выводов Run и IdleState) для работы генератора импульсов в режиме Flash. Конфигурирование микросхем по Вашим пожеланиям осуществляется совершенно бесплатно при любом объёме заказа (от 1 штуки).

ОФОРМЛЕНИЕ ЗАКАЗА

Используйте форму ниже для отправки заказа на микроконтроллер с указанной выше прошивкой. Пожалуйста, заполните её как можно более полно.

Предлагаемое устройство представляет собой генератор прямоугольных импульсов управляемый через последовательный порт с компьютера. Оно было сделано для решения конкретной задачи буквально за день и возможно содержит ошибки или недоделки, я не могу гарантировать что продавая его вы заработаете кучу денег. Но все основные функции были проверены.
Максимальная частота выдаваемая генератором немного больше 13 кГц, минимальная меньше 0,01 Гц (для частоты кварцевого генератора 4 МГц).

Схема.

width=710>
Рисунок не помещается на странице и поэтому сжат!
Для того, чтобы просмотреть его полностью, щелкните .

Схема достаточно простая. Она собрана на основе микроконтроллера PIC16C63A, сигнал снимается с двух его выводов, их состояние всегда разное. Без нагрузки уровень единицы отличается от напряжения питания меньше чем на 0,1 вольт, уровень нуля тоже очень низкий. Выводы рассчитаны на ток до 30 мА. Микросхема МАХ232 используется для преобразования уровней интерфейса RS232 в уровни TTL. Для питания устройства нужен 5 вольтовый блок питания, на рисунке он не показан.

Программа.

Для установки параметров сигнала выдаваемого микроконтроллером необходимо использовать специальную программу. Программа написана для ОС Windows, ниже приведен вид ее окна.

Элементы управления предназначены для задания частоты выходного сигнала, отношения длин положительного и отрицательного полупериодов. Есть возможность ограничить количество выдаваемых импульсов (1...2 23 -1). Так как программа в микроконтроллере не позволяет выводить любую частоту, после нажатия на кнопку "Send" будет рассчитано ближайшее возможное значение частоты и оно запишется в поле частота вместо введенного с клавиатуры. Поля "Длительность 1" и "Длительность 0" содержат длительности сигнала в условных единицах с которыми работает программа в PICе, это целые числа больше нуля и меньше 2 24 . Предусмотрены настройки для выбора номера последовательного порта и частоты используемого кварцевого резонатора.

Измерительные генераторы, в которых требуемое значение частоты устанавливают с помощью клавиатуры, читателям журнала известны (см., например, статью Пискаева А. "Частотомер-генератор-часы" в "Радио", 2002, № 7, с. 31, 32). Как правило, эти приборы выполнены на микроконтроллере, диапазон генерируемых частот ограничен несколькими мегагерцами, а получение точного значения частоты невозможно. Описываемый в статье генератор тоже содержит микроконтроллер, но использован он только для управления специализированной микросхемой - синтезатором частоты AD9850. Применение этой микросхемы позволило расширить диапазон генерируемых частот от долей герца до 60 МГц, в пределах которого можно получить любое значение частоты с точностью 1 Гц.

Он опрашивает клавиатуру SB1-SB16, выводит информацию на ЖК индикатор HG1, вычисляет значение кода частоты и передает его по последовательному интерфейсу в синтезатор DD2. Звукоизлучатель НА1 служит для подтверждения нажатия кнопок клавиатуры. Микросхема AD9850 (DD2) использована в стандартном включении. На выходе ее ЦАПа включен фильтр Z1. После фильтра сигнал синусоидальной формы подается на гнездо XW2 и на вход компаратора микросхемы DD2 (вывод 16). С выхода последнего сигнал прямоугольной формы поступает на гнездо XW1. В качестве тактового генератора для DDS применен кварцевый генератор G1. Подстроечным резистором R7 регулируют контрастность изображения на индикаторе HG1.
После сброса микроконтроллера производится настройка ЖК индикатора HG1 на режим обмена по шине 4 бита, что необходимо для уменьшения числа линий ввода/вывода, требуемых для записи информации.



Управляют генератором с помощью клавиатуры, состоящей из кнопок SB1-SB16. Поскольку все линии порта В, являющиеся входными, подключены к источнику питания через резисторы, необходимости во внешних резисторах, "подтягивающих" порты RB4 -RB7 к линии питания, нет. Резисторы R3-R6 защищают выходы микроконтроллера от перегрузки при случайном нажатии нескольких кнопок одновременно.
Требуемую частоту устанавливают с клавиатуры. Для этого, нажимая на кнопки с соответствующими цифрами, вводят нужное значение (в герцах) и нажимают кнопку "*". Если частота не превышает максимально допустимой, на индикаторе на короткое время появляется сообщение "ОК" и генератор переходит в рабочий режим, а если превышает, - сообщение "Error". В этом случае нужно нажать кнопку "С" ("Сброс") и заново набрать правильное значение. Точно так же поступают и при ошибке в процессе ввода частоты. Двукратное нажатие этой кнопки переводит прибор в рабочий режим с установленным ранее значением частоты.
В рабочем режиме в крайнем правом знакоместе индикатора мигает символ звездочки. Если текущее значение частоты введено с внешнего блока управления (например, с компьютера), то чтобы вернуться к частоте, отображаемой на индикаторе, достаточно нажать кнопку "*".
Кнопки "U" (Up - вверх) и "D" (Down - вниз) позволяют ступенчато изменять выходную частоту генератора, соответственно увеличивая или уменьшая значение десятичного разряда на единицу. Требуемый десятичный разряд выбирают, перемещая курсор кнопками "L" (Left - влево) и "R" (Right - вправо).
При нажатии кнопки "*" значение частоты и позиция курсора сохраняются в энергонезависимой памяти микроконтроллера, благодаря чему при следующем включении питания прерванный режим работы автоматически восстанавливается. Поскольку вычислительные способности микроконтроллера ограничены, значение выходной частоты выставляется с точностью около 1 Гц, что достаточно для большинства случаев. Чтобы в полной мере реализовать возможности синтезатора, им можно управлять с помощью ПК. Для этого генератор необходимо доработать, дополнив его узлом, схема которого показана на рис. 3. ПК (или иное управляющее устройство) подключают к розетке
XS1. При низком логическом уровне на адресных входах А мультиплексоры микросхемы DD3 подключают входы управления синтезатором к микроконтроллеру DD1, а при высоком - к внешнему устройству. Сигналы управления поступают через контакт "ENABLE" розетки XS1. Резистор R19 обеспечивает низкий логический уровень на адресных входах DD3 при неподключенном устройстве управления.
Генератор собран и испытан на макетной плате. Если не удастся приобрести плату под корпус SSOP для микросхемы DD2, можно использовать для подключения ее выводов к соответствующим контактным площадкам короткие (длиной 10 15 мм) отрезки луженого провода диаметром 0,2 мм. Выводы 1,2,5,10,19, 24, 26, 27, 28 соединяют с общим проводом одним отрезком большей длины.
ЖК индикатор HG1 - 1ТМ1601 (16-символьный однострочный с встроенным контроллером). НА1 - любой пьезоэлектрический излучатель звука с встроенным генератором, рассчитанный на напряжение 5 В. В качестве тактового генератора (G1) можно использовать микросборку кварцевого генератора на частоту до 125 МГц, допустимо применение подобного узла с кварцевой стабилизацией и на дискретных элементах.
Управляющая программа микроконтроллера зависит от частоты тактового генератора.
При программировании микроконтроллера в конфигурационном слове устанавливают следующие значения битов: тип генератора (OSC) - RC. сторожевой таймер (WDT) - выключен, задержка после включения питания (PWRTE) - разрешена.

Для генерации видеосигнала достаточно всего одного микроконтроллера и двух резисторов. То есть можно сделать буквально карманный генератор видеосигнала размером с брелок. Такой прибор пригодится телемастеру. Его можно использовать при сведении кинескопа, регулировке чистоты цвета и линейности.

Работа генератора и его характеристики.
Генератор подключается к видеовходу телевизора, обычно это разъем типа "тюльпан" или "SCART"
Прибор генерирует шесть полей:
- текстовое поле из 17 строк;
- сетка 8x6;
- сетка 12x9;
- мелкое шахматное поле 8x6;
- крупное шахматное поле 2x2;
- белое поле.

Переключение между полями осуществляется кратковременным (длительностью менее 1с.) нажатием кнопки S2. Удержание этой кнопки в нажатом состоянии более длительное время (дольше 1 с.) приводит к выключению генератора (микроконтроллер переходит в состояние "SLEEP"). Включение генератора производится нажатием кнопки S1. О состоянии прибора (включен / выключен) сигнализирует светодиод.

Технические характеристики прибора:
- тактовая частота - 12 МГц;
- напряжение питания 3 - 5 В;
- ток потрребления в рабочем режиме:
- при напряжении питания 3В - около 5мА;
- при напряжении питания 5В - около 12мА;
- частота кадров - 50 Гц;
- число строк в кадре - 625.

Схема.
Схема очень проста.
Вся работа по формир-
ованию видеосигнала
выполняется программой,
зашитой в микрокон-
троллере. Два резистора
вместе с сопротивлением
видеовхода телевизора
обеспечивают необходи-
мые уровни напряжения
видеосигнала:
- 0 В - синхроуровень;
- 0,3 В - уровень черного;
- 0,7 В - уровень серого;
- 1 В - уровень белого.

Для формирования видеосигнала используется нулевой бит PORTA и целиком весь PORTB. (Этот порт работает в сдвиговом режиме. Несмотря на то, что сигнал снимается только с его нулевого бита, программа использует его весь. Поэтому все биты PORTB настроены как выходы.) Первый бит PORTA используется для индикации состояния генератора. Когда прибор включен, - светодиод горит. Когда прибор выключен, - светодиод погашен. Третий бит PORTA используется для переключения режимов работы генератора и его выключения. Кратковременное нажатие кнопки S2 позволяет перейти от одного поля генератора к другому. При удержании этой кнопки в нажатом состоянии дольше 1 с. прибор выключается (микроконтроллер переходит в состояние "SLEEP"). Чтобы включить генератор необходимо выполнить сброс. Это осуществляется нажатием кнопки S1. Напряжение питания прибора можно выбрать в пределах 3 - 5 В. При этом соответственно должны быть подобраны номиналы резисторов.
3В...– R5=456Ом и R6=228Ом
3,5В – R5=571Ом и R6=285Ом
4В...– R5=684Ом и R6=342Ом
4,5В – R5=802Ом и R6=401Ом
5В...- R5=900Ом и R6=450Ом
Здесь указаны расчетные значения. Реально можно ставить резисторы из стандартного ряда, например для 5В - 910Ом и 470Ом, а для 3В - 470Ом и 240Ом.
Напряжение питания генератора может быть и меньше 3В. Для каждого конкретного PICа минимум следует определять эксперементально. У меня, например, 20МГц-й PIC выпуска 2001 года работал и при 2,3 В.

Прграмма.
Программа формирует 6 полей. Каждое поле состоит из 301 строки (300 информационных строк + одна черная). Вообще расчетное число – 305 (625 строк растра - 15 строк кадровой синхронизации = 610. Информация в кадре выводится через строку (подробнее об этом смотри здесь), поэтому 610 / 2 = 305). Но при таком числе строк размер растра по вертикали получается немного больше того, что формирует видеосигнал, передаваемый телецентром.
Первая строка в каждом поле черная. В это время опрашивается состояние кнопки S2, вычисляется время удержания ее в нажатом состоянии и определяется необходимость перехода от одного поля к другому.
В графических полях есть небольшие искажения вертикальных линий. Это связано с тем, что длина некоторых строк на пару тактов больше остальных из за необходимости установления счетчиков циклов. Вцелом подпрограммы, формирующие графические поля, очень просты, поэтому нет необходимости их коментировать.
Подробнее разберем ту часть программы, которая формирует текстовое поле. Это наиболее сложный участок программы, занимает большую ее часть, использует максимум ресурсов микроконтроллера (вся память данных и значительная часть ОЗУ). Здесь используются фрагменты кода, взятые из игры Pong, которую написал Rickard Gunee.
Текстовое поле состоит из 17 строк, каждая из которых может состоять не более, чем из восьми символов. Символы отображаются через строку, то есть одна строка текста занимает 17 строк растра. (Такое отображение связано с ограниченными возможностями PIC.) Информация о графике символов хранится в памяти программ в разделе таблица. Информация о тексте строк хранится в памяти данных (64 слова = 8 строк по 8 символов). Например в строке 08h (адресами от 08h до 0Fh) записано следующее:.20.60.48.50.90.58.20 20. Каждое значение - это координата (смещение от начала) символа в таблице. Значение.20. соответствует пробелу, .60. - буква "В", .48. - буква "И", и так далее. А все вместе образует "_ВИДЕО__".
Разберем на примере, как выводится текст. Согласно программе, в 12-й текстовой строке экрана необходимо вывести информацию, на которую ссылается строка памяти данных 28h (A0 B8 68 C8 D8 70 E0 D0). Таким образом, в следующих 17 строках растра должен быть выведен текст: " p i c 1 6 f 8 4 ". Это происходит следующим образом. В первой из 17 строк выводится только черный уровень. В эти 64 мкс, пока на экране отображается черная строка, в регистры ОЗУ переписываются "верхние значения" символов: 00h.от "p", 08h от "i", 00h от "c" 18h от "1" и так далее. Во время следующей строки эти данные последовательно передаются в PORTB, то есть на видеовыход. Третья строка снова черная. За время ее выполнения, в буфер переписываются "вторые сверху" значения символов: 00h.от "p", 00h от "i", 00h от "c" 1Ch от "1"… В четвертой строке эти данные выводятся на экран. И так далее, пока вся строка не будет отображена.
Подпрограмма кадровой синхронизации целиком взята из игры Pong, которую написал Rickard Gunee . Эта подпрограмма короткая, но довольно запутанная. Если объяснять, как она работает то, получится еще длиннее и запутаннее. Лучше всего положить рядом текст подпрограммы и рисунок осциллограммы кадровых синхроимпульсов, и не торопясь разобрать каждую строку кода. Скажу только, что подпрограмма начинает выполняться не с верхней строчки, а из середины (:-)), от метки "vertsync".

Разгон PIC16F84.
Как видно из схемы в этом проекте микроконтроллер работает на частоте 12МГц. На сегодняшний день выпускаются три версии PIC16F84: на 4МГц, на 10МГц и на 20МГц. (на 1.1.2002 соотношение цен приблизительно такое: $3.5, $5.3 и $6.3) В своем проекте Pong Rickard Gunee утверждает, что использовал 4МГц-е PIC16F84 и они часами работали на частоте 12МГц без проблем. Я попробовал, и действительно 4МГц-й PIC нормально работает на частоте, которая в три раза (!!!) превышает его допустимую частоту (правда я не стал испытывать судьбу и включал генератор лишь на несколько минут). При этом у 4МГц-го PICа потребляемый ток был на 10 .. 20 % больше, чем у 20МГц-го (отсюда, видимо и ограничение по частоте). Думаю, что 10МГц-й микроконтроллер можно разгонять до 12МГц без риска, но в коммерческих проектах этого, конечно же, делать не стоит.

Изготовление.

Предлагаемое устройство представляет собой генератор прямоугольных импульсов управляемый через последовательный порт с компьютера. Оно было сделано для решения конкретной задачи буквально за день и возможно содержит ошибки или недоделки, я не могу гарантировать что продавая его вы заработаете кучу денег. Но все основные функции были проверены.
Максимальная частота выдаваемая генератором немного больше 13 кГц, минимальная меньше 0,01 Гц (для частоты кварцевого генератора 4 МГц).

Схема.

Схема достаточно простая. Она собрана на основе микроконтроллера PIC16C63A, сигнал снимается с двух его выводов, их состояние всегда разное. Без нагрузки уровень единицы отличается от напряжения питания меньше чем на 0,1 вольт, уровень нуля тоже очень низкий. Выводы рассчитаны на ток до 30 мА. Микросхема МАХ232 используется для преобразования уровней интерфейса RS232 в уровни TTL. Для питания устройства нужен 5 вольтовый блок питания, на рисунке он не показан.

Программа.

Для установки параметров сигнала выдаваемого микроконтроллером необходимо использовать специальную программу. Программа написана для ОС Windows, ниже приведен вид ее окна.

Элементы управления предназначены для задания частоты выходного сигнала, отношения длин положительного и отрицательного полупериодов. Есть возможность ограничить количество выдаваемых импульсов (1...2 23 -1). Так как программа в микроконтроллере не позволяет выводить любую частоту, после нажатия на кнопку "Send" будет рассчитано ближайшее возможное значение частоты и оно запишется в поле частота вместо введенного с клавиатуры. Поля "Длительность 1" и "Длительность 0" содержат длительности сигнала в условных единицах с которыми работает программа в PICе, это целые числа больше нуля и меньше 2 24 . Предусмотрены настройки для выбора номера последовательного порта и частоты используемого кварцевого резонатора.

Источник: svv.on.ufanet.ru


C этой схемой также часто просматривают:
просмотров