Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 19.05.2016, 15:04   #1
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 42
Сообщений: 375
Вес репутации: 243/22
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию pic18F25k80, пины в воздухе, как это определить?!

Добрый день,

контроллер pic18F25k80 в корпусе 28 ног.
пины 25-28 управляют светодиодами (МК ставит пин на землю - светодиод загорается).
Суть в чем, есть платы где все 4 светодиода установлены, а есть где только 2 (на пинах 25,26, а пины 27 и 28 в воздухе).
Задача: определить тип платы по признаку наличия светодиодов при инициализации.

Если я делаю все 4 пина как входы, то почему-то состояние читается как 1 у всех 4-х пинов... как правильно организовать определение типа платы?

Заранее благодарен, Михаил.
__________________
STM32F042
PIC18F25k80
hfmscan вне форума   Ответить с цитированием
Старый 19.05.2016, 15:21   #2
Рак
Senior Member
 
Регистрация: 02.04.2008
Адрес: Кременчуг
Возраст: 31
Сообщений: 1,278
Вес репутации: 2210/69
Рак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond repute
По умолчанию Re: pic18F25k80, пины в воздухе, как это определить?!

Цитата:
Сообщение от hfmscan Посмотреть сообщение
Добрый день,

контроллер pic18F25k80 в корпусе 28 ног.
пины 25-28 управляют светодиодами (МК ставит пин на землю - светодиод загорается).
Суть в чем, есть платы где все 4 светодиода установлены, а есть где только 2 (на пинах 25,26, а пины 27 и 28 в воздухе).
Задача: определить тип платы по признаку наличия светодиодов при инициализации.

Если я делаю все 4 пина как входы, то почему-то состояние читается как 1 у всех 4-х пинов... как правильно организовать определение типа платы?

Заранее благодарен, Михаил.
Входы со светодиодами притянуть к земле, тогда отсутствие светодиодов будет давать 0 на входе.
Недавно делал индикатор Z состояния, тумблер 3х позиционный, вверх - подключен к +, вниз к минусу, по центру - никуда не подключен. Там задействовал второй вывод через резистор 47кОм. Проверяю, если 1 на входе, то притягиваю через резистор к земле, если "потянулся", то вход болтается в воздухе, если нет, то подключен к +.
Рак вне форума   Ответить с цитированием
Старый 19.05.2016, 15:26   #3
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 42
Сообщений: 375
Вес репутации: 243/22
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: pic18F25k80, пины в воздухе, как это определить?!

не совсем понял. Я должен записать 0 в порты RB4-RB7? В этом случае все 4 светодиода загорятся и прочитать состояние PORTB? ну там нули будут я так полагаю, но если светодиода нет, то тоже ноль будет или я что-то не понимаю?
на железо и схему воздействовать не могу, т.е. никакие переделки невозможны.
__________________
STM32F042
PIC18F25k80
hfmscan вне форума   Ответить с цитированием
Старый 19.05.2016, 15:29   #4
Рак
Senior Member
 
Регистрация: 02.04.2008
Адрес: Кременчуг
Возраст: 31
Сообщений: 1,278
Вес репутации: 2210/69
Рак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond repute
По умолчанию Re: pic18F25k80, пины в воздухе, как это определить?!

Цитата:
Сообщение от hfmscan Посмотреть сообщение
на железо и схему воздействовать не могу, т.е. никакие переделки невозможны.
Допаять резисторы на заливку нет возможности?
Рак вне форума   Ответить с цитированием
Старый 19.05.2016, 15:35   #5
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 42
Сообщений: 375
Вес репутации: 243/22
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: pic18F25k80, пины в воздухе, как это определить?!

если есть возможность пайки то мне вообще нет необходимости что-то программировать... там суть в том, что на одном типе плат (назовем ее проблемная плата) китайцы забыли посадить на массу пин одной микрухи... отседова лезут глюки работы этой микры 74D125, и так случилось что они протянули дорогу от этого пина на пин 15 пик контроллера (теперь я хочу массу подавать сделав пин output)... но засада в том что обычно на пин 15 жестко 5В подается без всяких резисторов, а на этом виде проблемных плат мне нужно туда массу подать (чтобы исправить баг производителя)...
ну и на этом же типе проблемных плат нет 2-ух светодиодов, поэтому я теперь мудрю как мне определить тип платы чтобы подать на пин15 массу...
а то если я криво определю, то я порт пожгу (на большинстве плат +5В приходит на пин15)...

можно было бы конечно и паять, но много устройств уже нахолдится у клиентов дааалеко от меня, поэтому программное решение сильно лучше
__________________
STM32F042
PIC18F25k80

Последний раз редактировалось hfmscan; 19.05.2016 в 15:40.
hfmscan вне форума   Ответить с цитированием
Старый 19.05.2016, 18:30   #6
masterok999
Member
 
Регистрация: 28.07.2015
Адрес: NA
Возраст: 53
Сообщений: 82
Вес репутации: 317/11
masterok999 is a jewel in the roughmasterok999 is a jewel in the roughmasterok999 is a jewel in the roughmasterok999 is a jewel in the rough
По умолчанию Re: pic18F25k80, пины в воздухе, как это определить?!

Как я понял, порт подключен к катоду диода, а его анод через резистор на + питания. Если светодиода нет, то порт болтается в воздухе.
Не вижу особых проблем в решении вопроса без паяльника вообще.
Нужно при включении быстро опросить каждый из четырех пинов порта
таким образом (на примере одного):
1. конфигурируем порт на выход, записав в его LAT предварительно "0"
2. конфигурируем его на вход
3. читаем его, смотрим что покажет
4. записать в его LAT "1"
5. конфигурируем его на выход
6. снова читаем его, смотрим что покажет
7. этот цикл можно сделать пару раз для статистики
8. если при чтении пин повторяет то, что записывали - значит болтается в воздухе, если торчит всегда в "1" - подключен светодиод.

Дело в том, что порт имеет некую емкость, так вот за счет этого (если пин в воздухе) он и будет на короткое время "помнить" состояние которое было при режиме выхода, при быстрой скорости опроса.
Единственное что может потребоваться, добавить нопов (или даже микрозадержку) между п.2 и 3 и между 5 и 6.
masterok999 вне форума   Ответить с цитированием
Старый 19.05.2016, 20:08   #7
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 42
Сообщений: 375
Вес репутации: 243/22
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: pic18F25k80, пины в воздухе, как это определить?!

Мастерок, спасибо за идею, я сегодня получил половину вашей идеи, мой алгоритм такой
1. пины сконфигурированы на выход
2. зажигаю светодиоды записав 0 в PORTB
3. конфигурирую пины на вход
4. читаю PORTB и получаю то что нужно
но финально я пока не решился это использовать... ну просто не понимаю насколько это надежно...
В вашем коде мне понятны шаги 1-3, а вот дальше я не понимаю что даст запись 1 в порт и чтение? мне кажется оно и вернет 1 для любого состояния (во всяком случае пока я не записывал в PORTB 0 у меня читались одни единички...

теперь для верности я хочу еще пин15 проверить, он либо висит в воздухе либо туда подано 5В напрямую... вот тут я не очень понимаю как мне вообще проверить... это на случай если вдруг светодиоды сдохнут или в цепи будет проблема чтобы случайно не врубить землю на пин куда 5В идет напрямую
__________________
STM32F042
PIC18F25k80
hfmscan вне форума   Ответить с цитированием
Старый 20.05.2016, 07:45   #8
masterok999
Member
 
Регистрация: 28.07.2015
Адрес: NA
Возраст: 53
Сообщений: 82
Вес репутации: 317/11
masterok999 is a jewel in the roughmasterok999 is a jewel in the roughmasterok999 is a jewel in the roughmasterok999 is a jewel in the rough
По умолчанию Re: pic18F25k80, пины в воздухе, как это определить?!

Я описал полную проверку и на тот случай, если порт притянут светодиодом к земле, поэтому в Вашей ситуации можно ограничиться четырьмя шагами.
Эти проверки вообще нужно делать единожды при первом включении, и запоминать в EEPROM, тогда никаких проблем в дальнейшем не будет.
Я обычно выделяю чистую ячейку EEPROM для этих целей, после прошивки она всегда имеет FF.
Перед проверкой пинов, я бы проверял эту ячейку в перкую очередь и если FF - тест пинов и запись в нее их конфигурации.
При последующих включениях, если в ячейке не FF, пины уже проверены, конфигурируем соответственно, и повторные проверки не нужны.
3а надежность можно не беспокоится.
Кстати, так же можно проверить и пин-15, за то короткое время в пару микросекунд, ничего не сгорит даже если там будет питание и тянуть пин на землю...
Транзисторы контроллеров имеют замечательное свойство ограничивать ток, поэтому их не так просто убить, главное - рассеиваимая мощность, а в нашем случае она равна 0.
Проверьте на нескольких девайсах и сделайте выводы, должно работать.
Проще уже некуда, без аппаратной переделки, Удачи!

Последний раз редактировалось masterok999; 20.05.2016 в 07:58.
masterok999 вне форума   Ответить с цитированием
Старый 20.05.2016, 08:44   #9
Рак
Senior Member
 
Регистрация: 02.04.2008
Адрес: Кременчуг
Возраст: 31
Сообщений: 1,278
Вес репутации: 2210/69
Рак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond repute
По умолчанию Re: pic18F25k80, пины в воздухе, как это определить?!

Цитата:
Сообщение от masterok999 Посмотреть сообщение
Я описал полную проверку и на тот случай, если порт притянут светодиодом к земле, поэтому в Вашей ситуации можно ограничиться четырьмя шагами.
Эти проверки вообще нужно делать единожды при первом включении, и запоминать в EEPROM, тогда никаких проблем в дальнейшем не будет.
Я обычно выделяю чистую ячейку EEPROM для этих целей, после прошивки она всегда имеет FF.
Перед проверкой пинов, я бы проверял эту ячейку в перкую очередь и если FF - тест пинов и запись в нее их конфигурации.
При последующих включениях, если в ячейке не FF, пины уже проверены, конфигурируем соответственно, и повторные проверки не нужны.
3а надежность можно не беспокоится.
Кстати, так же можно проверить и пин-15, за то короткое время в пару микросекунд, ничего не сгорит даже если там будет питание и тянуть пин на землю...
Транзисторы контроллеров имеют замечательное свойство ограничивать ток, поэтому их не так просто убить, главное - рассеиваимая мощность, а в нашем случае она равна 0.
Проверьте на нескольких девайсах и сделайте выводы, должно работать.
Проще уже некуда, без аппаратной переделки, Удачи!
Идея с eeprom куда лучше чем постоянно мониторить состояние пина. Сама калибровка будет под присмотром разработчика, по-этому даже если сбой при первой произойдет, то можно перекалибровать снова. Но лучше не eeprom, а flash задействовать для этого.
Справедливости ради скажу, что на PIC18F2580 RC6, RС7 и еще кто-то с RA, при переключении с выхода на вход первое чтение всегда давало состояние 0, не зависимо от того, какое состояние было на пине. Помогали два nopa между изменением tris и чтением порта. Тут нужно проверять.
Рак вне форума   Ответить с цитированием
Старый 20.05.2016, 08:58   #10
masterok999
Member
 
Регистрация: 28.07.2015
Адрес: NA
Возраст: 53
Сообщений: 82
Вес репутации: 317/11
masterok999 is a jewel in the roughmasterok999 is a jewel in the roughmasterok999 is a jewel in the roughmasterok999 is a jewel in the rough
По умолчанию Re: pic18F25k80, пины в воздухе, как это определить?!

Изначально был вопрос "pic18F25k80, пины в воздухе, как это определить?!" поэтому и дал рекомендации для этого случая в полном обьеме.
В своих девайсах я ВСЕГДА использую память для фиксирования факта первого включения, и это правильно, особенно в случае этого поста, а какую память использовать уже каждый решает сам.
Естественно, не имеет смысла мониторить постоянно, нужно делать так чтобы "включил, проверил, и забыл о существовании прибора".
masterok999 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в подключаемом файле определить какой компилятор? Vovka Продукция MICROCHIP 2 08.01.2013 22:46
Как это работает? Alexander77 Общетехнические вопросы 13 09.07.2007 21:47
А как это у фирменного ICD2 происходит? Max2 Продукция MICROCHIP 1 25.06.2007 23:14
как определить поднятие трубки sim300 war Продукция MICROCHIP 1 22.03.2007 11:26
Как надёжно определить на входе МК импульсы? michipic Продукция MICROCHIP 13 12.03.2007 20:33


Часовой пояс GMT +3, время: 03:33.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot