onewire — 1-Wire busz protokoll

A onewire modul az 1-Wire busz mester protokollt valósítja meg, amelyet olyan eszközök használnak, mint a DS18x20 hőmérséklet-érzékelő. Egyetlen, nyitott kollektorúként (open-drain) konfigurált machine.Pin lábat használ a megosztott buszon lévő egy vagy több alárendelt (slave) eszközzel való kommunikációhoz.

Példa:

from machine import Pin
from onewire import OneWire

ow = OneWire(Pin("P7"))
devices = ow.scan()
for rom in devices:
    print(rom)

Osztályok

class onewire.OneWire(pin: machine.Pin)

1-Wire busz mester létrehozása az adott machine.Pin lábon. A láb automatikusan nyitott kollektorúként (open-drain) konfigurálódik felhúzással.

ROM parancs konstansok:

SEARCH_ROM: int

Search ROM parancs (0xF0). A scan() belsőleg használja a buszon lévő eszközök felderítéséhez.

MATCH_ROM: int

Match ROM parancs (0x55). A select_rom() belsőleg használja egy adott eszköz megcímzéséhez a 64 bites ROM kódja alapján.

SKIP_ROM: int

Skip ROM parancs (0xCC). A buszon lévő összes eszközt egyszerre címzi meg, kihagyva a ROM egyeztetést.

Busz visszaállítás:

reset(required: bool = False) bool

Visszaállító impulzus küldése a buszra. True értéket ad vissza, ha legalább egy alárendelt eszköz jelenléti impulzussal válaszolt, egyébként False értéket. Ha a required értéke True és egyetlen eszköz sem válaszol, OneWireError kivételt vált ki.

Bit/bájt I/O:

readbit() int

Egyetlen bit beolvasása a buszról, 0 vagy 1 értékként visszaadva.

readbyte() int

Egyetlen bájt beolvasása a buszról, egész számként visszaadva (0–255).

readinto(buf: bytearray) None

len(buf) darab bájt beolvasása a buszról a megadott, előre lefoglalt pufferbe.

writebit(value: int) None

Egyetlen bit (0 vagy 1) írása a buszra.

writebyte(value: int) None

Egyetlen bájt (0–255) írása a buszra.

write(buf: bytes | bytearray) None

A buf bájtjainak írása a buszra.

Eszközcímzés:

select_rom(rom: bytes | bytearray) None

Visszaállítás küldése, majd egy MATCH ROM parancs annak az eszköznek a megcímzéséhez, amelynek 64 bites ROM kódja a rom (egy 8 bájtos puffer) tartalma.

scan() list[bytearray]

A busz átvizsgálása és a 8 bájtos ROM kódok listájának visszaadása (egy bytearray minden észlelt eszközhöz). Üres listát ad vissza, ha nincs jelen eszköz.

Ciklikus redundancia-ellenőrzés:

crc8(data: bytes | bytearray) int

A Maxim/Dallas 8 bites CRC kiszámítása a data fölött. Az eredmény 0, ha a data már tartalmaz egy érvényes záró CRC bájtot, ami a fogadott scratchpad tartalom érvényesítésére használható.

Kivételek

exception onewire.OneWireError

Akkor váltódik ki, ha egy 1-Wire művelet meghiúsul. Jelenleg a OneWire.reset() váltja ki, amikor a required értéke True és egyetlen alárendelt eszköz sem válaszol a visszaállító impulzusra.