Hirdetés

Keresés

Új hozzászólás Aktív témák

  • atesss

    addikt

    válasz And #13457 üzenetére

    No már elkezdtem írni hogy mi lehet ennek az "anomáliának" az oka.
    Aztán miközben írtam, esett le hogy mi is van:
    Mivel a --változásokat-- figyeli a PCF8574, akkor is van ugyanúgy interrupt, amikor elengedem a gombot (az INT pin akkor is 0-ba megy).
    És a gombot jelző sárga jel ugye így pont az inverze. De amúgy semmi más különbség nincs, most teszteltem.
    Valószínűleg csak annyi történt, hogy a 3. képnél még nyomva tartottam a gombot, amikor csináltam a képet. Vagy esetleg STOP-oltam a triggerelést a szkópon.

    A sárga mérőfej magán az input porton volt (illetve egy 20cm-es hozzáforrasztott kábel végén).
    A kék mérőfej pedig magán az INT porton (szintén egy 20cm kábelen).

    A felhúzó ellenállás még nem került fel. Írtam, hogy direkt úgy tesztelem most a szkóppal, hogy még nem forrasztom fel őket.

    Az I2C-s mérés is egy jó ötlet lenne. De közben még tesztelgettem, és egyértelműen programkód-oka van a dolognak.
    Ámde azon belül valami nagyon is fura oka...
    Direkt kiszedtem a GPIO interruptot. Illetve a PCF8574 beolvasását is közvetlenül a MAIN-be raktam (kiszedtem még a MAIN-ből meghívott függvényből is). De erre nem lett változás.
    Eddig amit találtam hogy "megoldja" a problémát, ha kiprintelem a tömböt, amibe előtte már beolvastam a PCF8574-nek a portját.
    Próbáltam, hogy kiprintelek egy másik, teljesen ugyanilyen adat-szerkezetű tömböt, de arra meg nem.
    Szóval egyelőre tiszta X-akták...
            if GPIO.input(I2C_IO_INTERRUPT_GPIO) == 0:
                # i2c_io_readed_array = i2c_io_reader()
                print("------")
                io_interrupt_flag = GPIO.input(I2C_IO_INTERRUPT_GPIO)
                print("Interrupt pin állapota - olvasás előtt: ", io_interrupt_flag)
                print("--")
                i2c_io_readed_array = i2c_io.port
                if len(i2c_io_readed_array) == 8:
                    # pass
                    print("az előző kiolvasás megfelelően megfordított értéke: ", i2c_io_readed_array_reversed)
                    teszt = i2c_io_readed_array
                    # print("A beolvasott port tömbje egy külön [teszt] nevű változóba átmásolva: ", teszt)
                    # print("PCF8574 Port beolvasva. A beolvasott port tömbje:", i2c_io_readed_array)
                time.sleep(0.125)
                io_interrupt_flag = GPIO.input(I2C_IO_INTERRUPT_GPIO)
                print("Interrupt pin állapota - 0.125 sec-el olvasás után: ", io_interrupt_flag)
                print("------")
                i2c_io_readed_array_reversed = i2c_io_reverser(i2c_io_readed_array)
                i2c_io_state = i2c_io_namer(i2c_io_readed_array_reversed)
                i2c_io_evaluator(i2c_io_readed_array_reversed, i2c_io_state)
                i2c_io_printer(i2c_io_readed_array_reversed, i2c_io_state)
    A legbelső if-ben láthatóak a tesztelt "feltételeim".
    Csak az utolsó két, most #-el kikommentezett print() bármelyike oldja meg a problémát (természetesen a teszt változós csak akkor ha előtte megvan az értékadása is).
    Ez valami eléggé érdekes bug lesz...

Új hozzászólás Aktív témák