eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › RP2040 PIO
Ilość wypowiedzi w tym wątku: 5

  • 1. Data: 2023-03-20 19:57:24
    Temat: RP2040 PIO
    Od: Mirek <m...@n...dev>

    Potrzebuję zrobić enkoder kwadraturowy na Raspberry Pi Pico.
    Spróbowałem tego:

    https://github.com/jamon/pi-pico-pio-quadrature-enco
    der/blob/main/python/quadrature.py
    i to działa, ale ma jedną wadę: zmienia stan tylko na podstawie
    opadającego zbocza jednej linii - to bez sensu, bo traci się
    czterokrotnie rozdzielczość.
    Próbowałem to:

    https://github.com/raspberrypi/pico-examples/blob/ma
    ster/pio/quadrature_encoder/quadrature_encoder.pio
    przerobić na Pythona, ale nie działa - coś tam pojawiają się jakieś
    bzdury a później zamiera.
    Czy problem może być w tej dyrektywie .origin 0?
    Bo w Micropythonie nie ma możliwości takiej deklaracji albo o tym nie wiem.

    Oczywiście chcąc nie chcąc zacząłem rozgryzać jak to PIO działa -
    dlaczego w ogóle nazywają to maszyną stanów?

    Maszyna stanów to ja bym rozumiał jakiś rejestr do zapamiętania stanu i
    jeżeli maszyna jest w danym stanie to wykonuje jakiś tam kod, następnie
    sprawdza w kółko jakieś warunki, które powodują przejścia do innych
    stanów - przynajmniej ja to tak rozumiem i tak zawsze programowałem.
    Oczywiście taka sprzętowa maszyna powinna sprzętowo sprawdzać np. piny i
    zmieniać stan jaki się tam ustawi.
    Niestety w tym PIO czegoś takiego nie ma - sprawdza jedynie jeden pin
    blokujący warunek wait i instrukcja jmp, która jest jeszcze bardziej
    ograniczona, bo można jej przyporządkować tylko raz konkretny pin.

    --
    Mirek.




  • 2. Data: 2023-03-21 14:54:49
    Temat: Re: RP2040 PIO
    Od: "J.F" <j...@p...onet.pl>

    On Mon, 20 Mar 2023 19:57:24 +0100, Mirek wrote:
    > Potrzebuję zrobić enkoder kwadraturowy na Raspberry Pi Pico.
    > Spróbowałem tego:
    >
    > https://github.com/jamon/pi-pico-pio-quadrature-enco
    der/blob/main/python/quadrature.py
    > i to działa, ale ma jedną wadę: zmienia stan tylko na podstawie
    > opadającego zbocza jednej linii - to bez sensu, bo traci się
    > czterokrotnie rozdzielczość.
    > Próbowałem to:
    >
    > https://github.com/raspberrypi/pico-examples/blob/ma
    ster/pio/quadrature_encoder/quadrature_encoder.pio
    > przerobić na Pythona, ale nie działa - coś tam pojawiają się jakieś
    > bzdury a później zamiera.
    > Czy problem może być w tej dyrektywie .origin 0?
    > Bo w Micropythonie nie ma możliwości takiej deklaracji albo o tym nie wiem.
    >
    > Oczywiście chcąc nie chcąc zacząłem rozgryzać jak to PIO działa -
    > dlaczego w ogóle nazywają to maszyną stanów?
    >
    > Maszyna stanów to ja bym rozumiał jakiś rejestr do zapamiętania stanu i
    > jeżeli maszyna jest w danym stanie to wykonuje jakiś tam kod, następnie
    > sprawdza w kółko jakieś warunki, które powodują przejścia do innych
    > stanów - przynajmniej ja to tak rozumiem i tak zawsze programowałem.
    > Oczywiście taka sprzętowa maszyna powinna sprzętowo sprawdzać np. piny i
    > zmieniać stan jaki się tam ustawi.
    > Niestety w tym PIO czegoś takiego nie ma - sprawdza jedynie jeden pin
    > blokujący warunek wait i instrukcja jmp, która jest jeszcze bardziej
    > ograniczona, bo można jej przyporządkować tylko raz konkretny pin.

    Ogolnie: taki enkoder najlepiej sie obsluguje automatem/maszyną
    stanów. Tylko musi miec osobny zegar i odpowiednią szybkosc.
    Wydaje sie, ze w procku z takim wspomagaczem PIO powinno sie dać to
    zrobic, ale moze sa tam za duze ograniczenia/chcą zrobic oszczedniej.

    Jesli jedno z wejsc musi byc "zegarem" do tego automatu, to sprawa sie
    komplikuje.

    Ten drugi program chyba realizuje pierwszą koncepcje, i jest tym,
    czego szukasz, tylko faktycznie wymaga tego .origin
    Nie wiem, czy w pythonie jest nad tym jakas kontrola.

    A moze połączyc jakos pythona z C?

    J.


  • 3. Data: 2023-03-21 19:36:16
    Temat: Re: RP2040 PIO
    Od: Mirek <m...@n...dev>

    On 21.03.2023 14:54, J.F wrote:

    > Ten drugi program chyba realizuje pierwszą koncepcje, i jest tym,
    > czego szukasz, tylko faktycznie wymaga tego .origin

    No tak - on ma działać trochę jak ten "komputer diy" z niedawnego wątku:
    stan pinów obecny i poprzedni jest przesyłany jako 4 bity do licznika
    programu i wykonuje się wskazany przez ten licznik skok do odpowiedniej
    procedury.

    > Nie wiem, czy w pythonie jest nad tym jakas kontrola.
    No ale z drugiej strony czemu program nie miał by się zaczynać od adresu 0?
    Chyba że tam już jest jakiś program przeznaczony dla innej maszyny
    obsługującej coś w Pythonie - bo pamięć jest chyba wspólna dla 4-ech maszyn?

    >
    > A moze połączyc jakos pythona z C?
    >
    Już prędzej przerobię swoją część na C - ale to już w finalnej wersji,
    bo póki co tak wygodniej mi się pisze i testuje,

    --
    Mirek.




  • 4. Data: 2023-03-22 14:38:21
    Temat: Re: RP2040 PIO
    Od: "J.F" <j...@p...onet.pl>

    On Tue, 21 Mar 2023 19:36:16 +0100, Mirek wrote:
    > On 21.03.2023 14:54, J.F wrote:
    >> Ten drugi program chyba realizuje pierwszą koncepcje, i jest tym,
    >> czego szukasz, tylko faktycznie wymaga tego .origin
    >
    > No tak - on ma działać trochę jak ten "komputer diy" z niedawnego wątku:
    > stan pinów obecny i poprzedni jest przesyłany jako 4 bity do licznika
    > programu i wykonuje się wskazany przez ten licznik skok do odpowiedniej
    > procedury.
    >
    >> Nie wiem, czy w pythonie jest nad tym jakas kontrola.
    > No ale z drugiej strony czemu program nie miał by się zaczynać od adresu 0?
    > Chyba że tam już jest jakiś program przeznaczony dla innej maszyny
    > obsługującej coś w Pythonie - bo pamięć jest chyba wspólna dla 4-ech maszyn?

    Na ile wyczytałem - jest tam jakis system ładowania tych programów do
    pamieci, i python ładuje tam, gdzie mu sie wydaje najlepiej.
    I kontroli na tym nie masz, trzeba by grzebac w źródlach i poprawiac.
    Albo hasło rzucic - może ktos poprawi.

    >> A moze połączyc jakos pythona z C?
    > Już prędzej przerobię swoją część na C - ale to już w finalnej wersji,
    > bo póki co tak wygodniej mi się pisze i testuje,

    Ale tu masz jeden obiekt z C do uzycia w Pythonie ...

    J.


  • 5. Data: 2023-03-23 23:13:28
    Temat: Re: RP2040 PIO
    Od: Mirek <m...@n...dev>

    On 22.03.2023 14:38, J.F wrote:

    > Ale tu masz jeden obiekt z C do uzycia w Pythonie ...

    Coś w tym rodzaju?
    https://docs.micropython.org/en/latest/develop/exten
    dingmicropython.html

    Na chwilę obecną jednak dam sobie spokój - chyba wystarczy mi taka
    rozdzielczość jak mam teraz. Jest mniejsza tylko dwukrotnie a nie
    czterokrotnie jak wcześniej pisałem. Do tego zwiększyłem liczbę
    przesłon: transoptory mam w rozstawie 6mm, więc pierwotnie zrobiłem 12mm
    przesłonę i 12mm otwór, Okazuje się, że równie dobrze mogę zrobić 4mm
    przesłony i 4mm otwory (ale nie potrafię tego matematycznie uzasadnić
    ;)), powiększyłem trochę tarczę enkodera i jest prawie 4 razy gęściej.

    Jeszcze pozostaje precyzja wykonania tej tarczy. Sprawdzałem
    oscyloskopem i ciężko jest uzyskać idealnie symetryczny przebieg, tzn
    żeby wypełnienie było 50/50 i zbocza jednego czujnika wypadały dokładnie
    w połowie drugiego.

    --
    Mirek.

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: