•
Электрическое противоречие
Если датчик выставит 1, а мы нажмем кнопку, то очевидно, что GND с
Vcc в одном проводе не уживутся и кто нибудь умрет. В данном случае
умрет выход датчика, как более слабый — куда там хилому
транзистору тягаться с медной кнопкой.
Организационными методами такое противоречие не решить — на глаз
нельзя определить напряжение на линии и решить можно жать кнопку
или нет. Да и в каком месте сейчас программа можно тоже только
догадываться. Поэтому решать будем схемотехнически.
Добавим резистор в цепь кнопки, резистор небольшой, рассчитывается
исходя из максимального тока самого слабого вывода линии.
Если у нас, например, вывод датчика может дать не более 10мА, то
резистор нужен такой, чтобы ток через него от Vcc до GND не
превышал этой величины. При питании 5 вольт это будет 510Ом.
Теперь, даже если на линии со стороны датчика будет лог1, высокий
уровень, то нажатие на кнопку не вызовет даже искажения логического
уровня т.к. резистор рассчитан с учетом максимальной нагрузки порта
Пример получился немного сумбурный, но суть думаю понятна. Я хочу
чтобы ты увидел и понял не только как делается, но и зачем это делается :)
Ну и несколько примеров нескольких функций на одной ноге:
Во-первых, ISP разьем. Я уже давным давно забыл что такое тыкать
микроконтроллер вначале в колодку программатора, потом в плату, потом
обратно и так по многу раз, пока прогу не отладишь. У меня на плате торчат
6 выводов ISP разьема и при отладке программатор вечно воткнут в плату, а
программу я перешиваю порой по нескольку раз в 10 минут. Прошил —
проверил. Не работает? Подправил, перепрошил еще раз… И так до тех пор
пока не заработает. Ресурс у МК на перепрошивку исчисляется тысячами раз.
Но ISP разьем сжирает выводы. Целых 3 штуки — MOSI, MISO, SCK.
В принципе, на эти выводы можно еще повесить и кнопки. В таком случае