Перейти к содержанию
    

Блокируется вывод у PIC12F675

Добрый день всем в это время суток и дальше тоже!

 

Такая вот у меня загогулина.

Сдохли все (5) рулевые машинки на модели самолетика по причине перепутанных потенциалов. Решил отремонтировать - там стоит обычный микроконтроллер (какой-то заказной с обвязкой без надписи) и 4 транзистора по мостовой схеме. Взял PIC12f675, четыре 2n4401 и, соответственно, резисторы в базы. Накидал программку за пару часов. Зашил в контроллеры. Стал радоваться. Но не тут-то было... Электроны перестали меня слушаться...

В произвольное время блокируется вывод GPIO5. У меня GPIO0 и GPIO1 управляют одной диагональю моста, GPIO4 и GPIO5 - другой. Почему-то вывод GPIO5 самопроизвольно переключается на вход (такое ощущение) то сразу, то через пару минут. С остальными выводами такого не происходит и исправно отрабатывают положение движка. Менял управление диагоналями, все регистры переустанавливал - не помогает. 3 дня уже "коту под хвост". Используются внутренние RCгенератор и MCLR.

Подскажите решение вопроса. А?

 

С уважением,

ОК

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Накидал программку за пару часов...

 

Внимательнее проверьте в симуляторе, может быт забываете правильно RP0 переключить (или он остается в 1 при выходе из подпрограммы, например), и наместо к GPIO обращаетесь к TRISIO? Инструкция "bsf GPIO,5", если RP0 = 1, делает из GPIO5 вход...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такое бывает при некорректном выполнении операции с портами чтение-модификация-запись. Чтобы не заморачиваться - 100%-ый способ решения проблемы. Введите дополнительно переменную, которая является полной копией Вашего GPIO и все модификации битова производите с этой ячейкой, а её содержимое, с помощью операнда movf копируйте в GPIO. Успехов !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за подсказки, но я их сразу учитываю - "собаку съел" за несколько-то лет программирования ПИКов. С PIC12F629/675 я часто имел дело и думал, что - "раз плюнуть" в любом случае его применения. Но...

Каналы-то 0, 1 и 4 работают, а 5-й - блокируется независимо от схемы подключения к диагоналям транзисторного моста. Такое ощущение, что где-то установки в микроконтроллере какие-то не сделал. Превышения по электрическим параметрам нет.

Ладно. На недельку откину в сторону, а там и мысля придет сама.......................................................

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Плюнул я на поиски причин блокировки GPIO5. Сделал я развязочку с одного выхода GPIO1 на одну диагональ, с GPIO4 - на другую. Пусть это не совсем правильно, но зато работает и жужжит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...