Свежие обсуждения
Микроконтроллеры

Странное поведение PICa (PIC12C508)

Сделал я вот эту сирену на ПИК-контроллере. http://www.rcdesign.ru/articles/electronics/buzzer
Работать она работает, но выяснилось одно но.
Если на выходе ничего не потключено, то на 2ой и 3ей ноге есть парафазный меандр. При подключении пьезоизлучателя на 3ей ноге устанавливается постоянный высокий уровень и соответственно о мостовом включении пищика можно забыть.
Котроллер использован PIC12C508A. (В исходном варианте без "А" контроллер.
Эффект стабильно повторяется: два экземпляра контроллера, пищики - наш ЗП-18 и неск. ихних разных.
Подозреваю, что связано это с ёмкостной нагрузкой и схемотехникой выходных ключей контроллера. В ПИКах не специалист.
Может ли кто проанализировать программу: нет ли там каких хитростей с программированием работы ног на ввод\вывод?

Дополнительный вопрос: как изменить текст программы, чтобы выходными стали не 2 и 3 ноги, а 2я и 7я или 3я и 6я?
Так удобнее для монтажа.

На форуме RCD пока полезной информации нет. Автор молчит.

 

SAN: как изменить текст программы
Там в тексте так:
#define INPUT GP0 // Control pulses input
#define OUT1 GP4 // Buzzer output 1
#define OUT2 GP5 // Buzzer output 2 (inverted, to get more power)
Поменяйте GP0, GP4 и GP5 на то, что вам нужно... - по аналогии со схемой

 

Спасибо, но транслятора-то у меня нету.
А,главное, почему 3 нога в высоком состоянии зависает?
Помогает резистор последовательно с пищиком. Тогда всё правильно работает

 

SAN: транслятора-то у меня нету
У меня тоже нет, но при желании можно найти в поисковиках. Ищите программы типа picc или HITECH C
SAN: почему 3 нога в высоком состоянии зависает
...трудно сказать. Может от того, что обычно ко 2 и3 ножкам подключают кварц... А у Вас там пищалка..
Попробуйте другой тип пищалки, или поменяйте программно выходные ножки, или вместо последовательного резистора поставьте конденсатор..

 

SAN, отправьте мне исходник и схему, погляжу. А то у меня страничка http://www.rcdesign.ru/articles/electronics/buzzer не открывается.

 

picmaniac: отправьте мне исходник и схему, погляжу
Сегодня отправил.
Не знаю, дошло ли.

Левон: Попробуйте другой тип пищалки, или поменяйте программно выходные ножки, или вместо последовательного резистора поставьте конденсатор..
Товарищ дезасемблировал HEX-файл и поменял выход на 2-7ноги.
Проверил на одном экземпляре - помогло.
А почему - х.з.?
В Протеусе все работало и в старом и в новом вариантах.

 

SAN: Не знаю, дошло ли.
Да, я получил. Только дизассемблера на 12С508 у меня нет. Товарищ чем пользовался? А в исходнике на С я пока мало что понимаю. Но раз проблема уже решена - значит, моё вмешательство уже не нужно?

 

picmaniac: значит, моё вмешательство уже не нужно?
Да, способ обойти глюк найден.
Но почему он изначально появился остается неясным.
Значит на него можно будет ещё раз напороться.

 

Есть одно соображение-предположение... Допустим, емкостная нагрузка подключена к двум выходам контроллера. Изначально оба выхода - лог.0.
Даем команду bsf OUT1 и ждем некоторое время. Затем нам нужно поменять уровни на выходах.
bcf OUT1
bsf OUT2
Первая команда - контроллер считывает уровни на выходах, сбрасывает в 0 бит, который соответствует OUT1, и записывает новые значения обратно в выходные защелки порта. НО напряжение на выходе OUT1 мгновенно не снижается до лог.0 (емкостная нагрузка).
Вторая команда - контроллер снова считывает уровни на выходах, устанавливает в 1 бит, который соответствует OUT2, и записывает новые значения обратно в выходные защелки порта. НО напряжение на выходе OUT1 еще считано как лог.1! В итоге имеем нулевое напряжение на звукоизлучателе.
Далее
bcf OUT2 ; сбросили OUT2 в 0
bsf OUT1 ; OUT2 сброситься не успел, снова получаем две лог.1

Поэтому - полезна осторожность в случае применения команд bsf/bcf к регистрам портов. Особенно если это - открытый коллектор (сток).

Это так, навскидку. Возможно, дело и не в этом.

 

Сегодня проверил ещё один экземпляр с выходом на 2.7 ноги.
Опять тот же эффект. Но теперь в "1" зависает 2я нога.
62 Ома хватает чтобы подавить. Как только закорачиваю, уровень зависает,
там где должны быть фронты переключения видны иголки чуть не в размах питания.
А кстати, какой допуск по питанию контроллера реальный?
У меня 4 никелькадмиевых акк. 4.5-4.8В.

Вашу идею завтра покажу товарищу, который мне помогает.
Может это ему подскажет чего поправить.