31. Lektion: Interrupts: Unterschied zwischen den Versionen

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche
(Interrupt Trigger)
(Interrupt Handler)
Zeile 31: Zeile 31:
  
 
=== Interrupt Handler===
 
=== Interrupt Handler===
 +
 +
 +
<pre>
 +
# Source: Electrocredible.com, Language: MicroPython
 +
from machine import Pin
 +
import time
 +
interrupt_flag=0
 +
debounce_time=0
 +
pin = Pin(5, Pin.IN, Pin.PULL_UP)
 +
led = Pin("LED", Pin.OUT)
 +
count=0
 +
 +
def callback(pin):
 +
    global interrupt_flag, debounce_time
 +
    if (time.ticks_ms()-debounce_time) > 500:
 +
        interrupt_flag= 1
 +
        debounce_time=time.ticks_ms()
 +
 +
pin.irq(trigger=Pin.IRQ_FALLING, handler=callback)
 +
 +
while True:
 +
    if interrupt_flag is 1:
 +
        interrupt_flag=0
 +
        print("Interrupt Detected")
 +
        led.toggle()
 +
</pre>
 +
 +
 +
 
Hinweise zum Schreiben von Interrupt Handlern: http://docs.micropython.org/en/latest/reference/isr_rules.html
 
Hinweise zum Schreiben von Interrupt Handlern: http://docs.micropython.org/en/latest/reference/isr_rules.html
  

Version vom 19. Dezember 2023, 19:39 Uhr

Interrupts

Interrupts einrichten

Die Interruptfunktion ist eine Methode der Klasse Pin.

Pin.irq(handler=None, trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING, *, priority=1, wake=None, hard=False)
Beispiel
# int_test_01.py

from machine import Pin

int_pin = Pin(14, Pin.IN, Pin.PULL_DOWN)
led_pin = Pin(22, Pin.OUT)
led_pin.value(1)

int_pin.irq(handler=lambda t:led_pin.toggle(), trigger=int_pin.IRQ_RISING)

Interrupt Trigger

Pin.IRQ_FALLING
Pin.IRQ_RISING
Pin.IRQ_LOW_LEVEL
Pin.IRQ_HIGH_LEVEL

Trigger können auch ODER (|) verknüpft werden (Pin.IRQ_FALLING | Pin.IRQ_RISING) .

Interrupt Handler

# Source: Electrocredible.com, Language: MicroPython
from machine import Pin
import time
interrupt_flag=0
debounce_time=0
pin = Pin(5, Pin.IN, Pin.PULL_UP)
led = Pin("LED", Pin.OUT)
count=0

def callback(pin):
    global interrupt_flag, debounce_time
    if (time.ticks_ms()-debounce_time) > 500:
        interrupt_flag= 1
        debounce_time=time.ticks_ms()

pin.irq(trigger=Pin.IRQ_FALLING, handler=callback)

while True:
    if interrupt_flag is 1:
        interrupt_flag=0
        print("Interrupt Detected")
        led.toggle()


Hinweise zum Schreiben von Interrupt Handlern: http://docs.micropython.org/en/latest/reference/isr_rules.html

Navigation

Zurück zur "Micropython Kurs 2023 Teil 2" Startseite
Zurück zur "Micropython Kurs 2023" Startseite
Zurück zur Programmieren Startseite
Zurück zur Wiki Startseite