Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

AT91SAM9260 uruchomienie 1Wire

fazolek 26 Oct 2009 18:49 1040 1
  • #1
    fazolek
    Level 12  
    Witam.

    Chodzi mi po głowie uruchomienie 1-Wire pod Linuxem.
    W sumie pomysł dla sportu ale zawsze do czegoś kiedyś komuś może się przydać.

    Jak wiadomo obsługa z poziomu Linuxa portów gpio nie należy do najszybszych i tutaj pojawia się pytanie. Chciałbym napisać program w C wykorzystując poniższe funkcje
    Code:

    static inline u32 at91_read(unsigned int offset)
    {
       return __raw_readl(tc_base + offset);
    }

    static inline void at91_write(unsigned int offset, u32 value)
    {
       __raw_writel(value, tc_base + offset);
    }





    Czy wówczas on schodzi do sprzętu i ustawia to, że tak powiem w czasie rzeczywistym czy faktycznie zapisanie do konkretnego rejestru konkretnej wartości twa dużo dłużej niż powyższa instrukcja C - jak z poziomu Linuxa:

    Code:

    root@MMnet:/# echo "low" > /sys/class/gpio/gpio103/direction
    root@MMnet:/# echo 1 > /sys/class/gpio/gpio103/value


    Powiedzmy że częstotliwość 200kHz byłaby zadowalająca bo minimalny czas to jak dobrze pamiętam 15us.

    Chyba że jest jakaś inna koncepcja na okiełznanie 1-Wire w Linuxie.
  • #2
    arrevalk
    Level 25  
    Jest inna koncepcja.
    W drzewie linuxa są sterowniki do obsługi 1-Wire. Z tego co oprócz obsługi konwerterów i2c<-> 1-Wire czy RS232 jest też implementacja na gpio.
    Dodatkowo powstał nawet system plików OWFS który upraszcza dostęp do podłaczanych urządzeń 1-Wire z poziomu użytkownika.
    W drzewie kernela 2.6.26 sterowniki są tu: /drivers/w1
    natomiast dokumentacja: /Documentation/w1

    Jak wszystkie sterowniki w linuksie i ten jest modułowy więc jakiekolwiek modyfikacje nie powinny sprawić większych trudności.