ESP32 IRQ - спонтанное возникновение прерываний

Тема в разделе "ESP8266, ESP32", создана пользователем max_mazur, 2 авг 2019.

  1. max_mazur

    max_mazur Нуб

    Доброго дня!

    Я новичек в работе с контроллерами, и потому если вдруг написал глупости - ткните носом в документацию.

    Проблема

    - хочу детектировать сработку инфракрасного сенсора который в отсутвие отраженного сигнала выдает логичискую "1" (3.3V) а при наличии - "0"

    - Плата прошита под micropython

    - Код обработчика (тестовый)
    Код (Python):
    def ir_sensor_irq_handler(pin):

        IRQ_COUNTER = IRQ_COUNTER +1.
        print("IRQ CALL number {IRQ_COUNTER}".format(IRQ_COUNTER=IRQ_COUNTER))
        # Detect if it was rise or fall
        status = "uncknown"
        pin_id = T._get_pin_id(pin)
        print(pin.value())
        if pin.value() == 0:
            print("changed from 1 to 0 on pin {pin_id}".format(pin_id=pin_id))
            status = "falling"
        else:
            print("changed from 0 to 1 on pin {pin_id}".format(pin_id=pin_id))
            status = "rising"
        print(status)

    pin_irq = machine.Pin(SENSOR_DIGIT_PINS["left"], machine.Pin.IN, machine.Pin.PULL_UP)

    pin_irq.irq(trigger=(machine.Pin.IRQ_RISING|machine.Pin.IRQ_FALLING), handler=ir_sensor_irq_handler)

    К 25 пину подключен цифровой вывод сенсора

    я наблюдаю в логах периодическое срабатывание прерывания

    Код (Python):
    changed from 0 to 1 on pin 25
    rising
    IRQ CALL number 74
    - всегда именно такое и не могу пока понять как это происходит

    при эт ом на осцилографе я не вижу никаких импульсов, светодиод на самом датчике не моргает

    возможно какой-то дребезг (но откуда когда есть PULL_UP? )
    Буду благодарен за любой совет
     
  2. parovoZZ

    parovoZZ Гуру

    Осциллограф в триггерном режиме работает? Входная полоса превышает тактовую частоту МК?
    Проверяется просто - нога садится на одну из шин питания. Если прерывание срабатывает, значит сбоит питание или сам esp/
     
  3. max_mazur

    max_mazur Нуб

    >>Осциллограф в триггерном режиме работает?
    Да

    >>>Входная полоса превышает тактовую частоту

    Нет , осциллограф самый простой карманный, я как начинающий купил бу дешевый.

    Прерывания не возникают ни на висящий в воздухе ноге, ни при посаженой на землю или на питание.

    Я попробовал посадить выход датчика на землю через 10ком резистор и это тоже не меняет ситуацию


    Сама esp запитан от расберри с преобразователем от лабораторного бп, и остальной код (прерывания только малая часть проекта) работает хорошо

    Возможно, я что то важное упускаю так как я сисадмин и это мой первый опыт с контроллерам

    Спасибо за ответ
     
  4. parovoZZ

    parovoZZ Гуру

    с ним и не увидишь ничего.
    Значит, сбоит модуль. Можно на эту же ногу что-то другое повесить и посмотреть.
     
  5. max_mazur

    max_mazur Нуб

    Имеет ли смысл попробовать другую ногу?