Параллельное включение выходов порта контроллера
Есть необходимость непосредственно с вывода порта контроллера включать и выключать нагрузку, которую он тянет на пределе (пищалка).
Могу-ли я запитать ее с двух выходов порта, подключенных в параллель (допустим PB0 и PB1)? Включить и выключить их одновременно ассемблер позволяет. Развязывающих резисторов нет, токоограничителем является сама нагрузка.
Вопрос к практикам - могут ли при этом возникнуть проблемы с аппаратной частью, типа сквозных токов при включении-выключении?
P.S. Подключать транзистор в выходу порта я умею, хочется обойтись без него.
Если при этом потребляемый контроллером ток не превысит 200ма, то по идее можно. В вашем случае остается запас 120ма на остальные порты. Если камень большой, с несколькими входами под питание, то лучше не экспериментировать, может и не сгорит, но возможны глюки.
Зы. Это для атмелов
Спасибо, но, как я понимаю, ответ теоретический. Нашел пару полу-практических обсуждений:
www.arduino.cc/en/Reference/PortManipulation
…stackexchange.com/…/can-i-use-two-arduino-digital…
Проверил на макетке работу тиньки 13 с тремя запараллелеными выходами и пищалкой. Все работает. Программно выходы РВ0, РВ1, РВ2 можно параллелить так:
ldi temp, 0b000111
out PortB, temp ; включить выходы 0,1,2
…
ldi temp, 0b000000
out PortB, temp ; выключить выходы 0,1,2
И нельзя так:
sbi PortB, 0 ; включить выход 0
sbi PortB, 1 ; включить выход 1
sbi PortB, 2 ; включить выход 2
…
cbi PortB, 0 ; выключить выход 0
cbi PortB, 1 ; выключить выход 1
cbi PortB, 2 ; выключить выход 2
Может кому-то пригодится…
Дополнительная аппаратная защита выходов может осуществляться токоограничивающим резистором на каждый выход (например, для совместного управления мощным светодиодом) или диодной развязкой.
Может кому-то пригодится…
Диодная развязка (“монтажное И”) - крайне уместна. Напрямую соединять и уповать на программу - некрасиво как-то, не то… То что писАть одновременно в порт - нет сомнений, только и только так. Побитно - никак нельзя.
У меня была история - делал на PIC16F… автомат долива воды в бассейн - всё очень просто, логический автомат. В качестве исполнительного устройства попалось реле - обмотка 5в 20ма, вроде бы подходит, естественно с диодом. Схемка и программа замечательно работали, но время от времени - глюки. Сто раз переписывал программу (там на Ассемблере строк 20, не больше) - глючит и всё тут. Поставил транзисторный ключ - все косяки вмиг ушли. Теперь (а было это лет 10 назад) все нагрузки (разве что кроме светодиодов и оптронов) - через транзисторные ключи. Даже “пищалки”.
У меня была история - делал на PIC16F… автомат долива воды в бассейн - всё очень просто, логический автомат. В качестве исполнительного устройства попалось реле - обмотка 5в 20ма, вроде бы подходит, естественно с диодом. Схемка и программа замечательно работали, но время от времени - глюки…
Не совсем понятна ситуация. Вы подключали реле на спаренные выходы контроллера или на один? Реле - источник серьезных выбросов и при прямом подключении проблемы должны быть обязательно.
Просто для информации: в хоббикинговских индикаторах пищалка висит напрямую на одном выходе 13 тиньки. Пищалка имеет встроенный генератор, который играет роль транзисторной развязки. Сама пищалка потребляет 30 мА, тинька дает до 40 мА на выход. При 5В питании проблем нет, но при снижении питающего напряжения до 3В нагрузочная способность выхода значительно падает, поэтому пришлось параллелить выходы.
Вы подключали реле на спаренные выходы
Нет, на один. Паралелить не стал бы, неправильно это как-то, мне кажется. ВременнЫе параметры выходов всё-таки немного отличаться могут, отсюда возможны косяки. Да и зависнуть МК может, из-за помехи по питанию, например. “Цифровой” транзистор надёжнее, места требуется минимум.
Паралелить не стал бы, неправильно это как-то, мне кажется. ВременнЫе параметры выходов всё-таки немного отличаться могут, отсюда возможны косяки.
Я исходил из того, что КМОП-элементы параллелятся нормально, а разброс по параметрам там бывает весьма значительный. Но то, что это - не самый лучший вариант решения, согласен полностью.