logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATtiny10: Wewnętrzne rezystory pull-up - Wątpliwości dotyczące rejestru PORT i PUEB

robiw 28 Sty 2023 19:47 993 16
REKLAMA
  • #1 20410025
    robiw
    Poziom 26  
    Witajcie.
    Ostatnio przeglądałem datasheet rodziny ATtiny4/5/9/10 i napotkałem dość mylące informacje, jak i chyba pierwszy raz spotkałem się z tym zagadnieniem. Jak wiecie w starych AVR-ach aby włączyć wewnętrzny rezystor pull-up dla pinu pracującego, jako wejście należy ustawić odpowiedni bit w rejestrze PORT. W nowszych, z rodziny XMEGA, jest to dużo bardziej rozbudowane, gdyż port ma kilkanaście rejestrów i ustawienia są bardziej elastyczne, ale i bardziej skomplikowane. A jak jest w ATtiny10 i podobnych... dziwacznie... niby po staremu, a jednak nie. Producent podaje sprzeczne informacje. Pisze jednocześnie, iż ustawiamy odpowiedni bit w rejestrze PORT by za chwilę przedstawić tabelkę z nowym rejestrem PUEB, który to właśnie służy (i wyłącznie on) do włączania pull-up'ów. Proszę poniżej wycinek z datasheet'a:

    ATtiny10: Wewnętrzne rezystory pull-up - Wątpliwości dotyczące rejestru PORT i PUEB

    I wspomniany, nowy dla mnie, rejestr:

    ATtiny10: Wewnętrzne rezystory pull-up - Wątpliwości dotyczące rejestru PORT i PUEB

    Czy ja coś źle zrozumiałem, czy w tekście datasheet'a jest błąd? Pozdrowienia. R
  • REKLAMA
  • #2 20410538
    jarekgol
    Poziom 38  
    No coś tu się nie dodaję. Ja trzymam jeszcze dokumentacje Atmela, jakoś lepiej mi się w nie patrzy.
    ps. sprawdzałeś na żywym organiźmie jak to się zachowuje?
  • #3 20410595
    robiw
    Poziom 26  
    Jeszcze nie sprawdzałem, bo czekam na układy, ale na bank sprawdzę. Myślę, że ten akapit o ustawianiu bitów w rejestrze PORT to było "kopiuj/wklej", ale po co dodali w ATtiny10 specjalny rejestr??? Dotychczas wystarczyły 3 podstawowe... R
  • #4 20410657
    excray
    Poziom 41  
    Dalej są 3 rejestry. Tylko zrobili porządek. Teraz stan PORT nie ma znaczenia - zaznaczyłeś w rejestrze PUE bit? To masz podciaganie. Reszta jest bez znaczenia. Jest lepiej niż było w starych. Szkoda tylko, że nie zrobili pulldown i wyjścia OC NPN. Zresztą w ogóle brakuje mi takiego odpowiednika w obudowie SOT23-6 tylko z UPDI. 3 nóżki programowania w 4-ro nóżkowym uC to jednak przesada.

    Dodano po 14 [minuty]:

    robiw napisał:
    Pisze jednocześnie, iż ustawiamy odpowiedni bit w rejestrze PORT by za chwilę przedstawić tabelkę z nowym rejestrem PUEB, który to właśnie służy (i wyłącznie on) do włączania pull-up'ów.

    Prawdopodobnie nie wiesz o bicie PUD w "klasycznych" uC. Poszukaj w nich rejestru SFIOR/MCUCR i poczytaj sobie o nich.
  • #5 20410671
    robiw
    Poziom 26  
    excray napisał:
    Tylko zrobili porządek.


    Niezły mi porządek. Teraz możesz włączyć pull-up i do tego ustawić port, jako wyjściowy ze stanem 0, czyli procek sam z siebie będzie się obciążał. To jest ten Twój porządek?

    excray napisał:
    zaznaczyłeś w rejestrze PUE bit?


    Miałeś chyba na myśli PUEB.

    excray napisał:
    Jest lepiej niż było w starych.


    Jak wyżej - stan nierekomendowany. Lepiej to jest w Xmega.

    excray napisał:
    Prawdopodobnie nie wiesz o bicie PUD w "klasycznych" uC.


    Chodzi Ci o "globalne" wyłączanie podciągania? Znam, nie korzystam. Wracając do meritum...IMHO nic nie poprawili, wprowadzili zamęt - popatrz w tabelę. W dodatku po cholerę wprowadzili taki półśrodek w Tiny10??? To już lepiej było "zapodać" grupę rejestrów, tak jak jest to w Xmega albo...zostawić po staremu... R
  • REKLAMA
  • #6 20410675
    excray
    Poziom 41  
    robiw napisał:
    Niezły mi porządek. Teraz możesz włączyć pull-up i do tego ustawić port, jako wyjściowy ze stanem 0, czyli procek sam z siebie będzie się obciążał. To jest ten Twój porządek?

    Standard. Programować trzeba z głową. To, że czegoś nie rozumiesz to nie znaczy, że jest to głupie. Za chwilę dorobią PD i będzie komplet i logicznie a w starej nomenklaturze jak to ugryźć? A i tam miałeś ten swój "PUEB" tylko zaszyty jako PUD i to na dodatek jeszcze w negacji - "ustaw aby wyłączyć". I jeszcze umieszczony gdzieś w losowym rejestrze i zazwyczaj globalny na wszystkie porty. To dopiero był bajzel.
    robiw napisał:
    Miałeś chyba na myśli PUEB.

    Miałem na myśli PUE. PUEA1, PUEB2 i tak dalej w zależności od portu.

    Dodano po 17 [minuty]:

    robiw napisał:
    Chodzi Ci o "globalne" wyłączanie podciągania? Znam, nie korzystam. Wracając do meritum...IMHO nic nie poprawili, wprowadzili zamęt - popatrz w tabelę.

    Skoro nic nie wprowadzili, to powiedz mi jak zrobić na starym uC, przykładowo: na porcie B1 wyjście typu OC PNP z HiZ w stanie niskim, a na porcie B2 wejście z pullupem?
  • REKLAMA
  • #7 20410809
    robiw
    Poziom 26  
    Moderowany przez tmf:

    Fragment niezwiązany z tematem, łamiący regulamin - usunąłem.



    excray napisał:
    A i tam miałeś ten swój "PUEB" tylko zaszyty jako PUD i to na dodatek jeszcze w negacji

    PUD i PUEB mają zupełnie inne przeznaczenie! PUD-em globalnie wyłączasz pull-up'y dla wszystkich pinów, zaś PUB włączasz/wyłączasz wybiórczo, jak za "starego" PORT pracującego, jako wejście. Czy tutaj mam przytoczyć słowa z cytatu powyżej? ;-)

    excray napisał:
    na porcie B1 wyjście typu OC PNP z HiZ w stanie niskim

    Nie da się, od tego są nowsze procki, nowych rodzin AVR. Każdy produkt z czasem się rozwija, ewoluuje. Normalne zjawisko.

    Ale, żeby wrócić do MERITUM sprawy przypomnę Koledze temat tego postu: "Pull-up'y w ATtiny10 - czyżby błąd?" i pytanie, na które odpowiedzi oczekiwałem, bo widzę, że Kolega lubi zboczyć z tematu, żeby wykazać kogoś "niewiedzę". Zaznaczę jeszcze stosowny fragment dokumentacji, do którego odnosiło się zapytanie z tytułu posta, żeby Kolega nie miał problemu ze znalezieniem. Dodam, że zaznaczyłem na czerwono ;-).

    ATtiny10: Wewnętrzne rezystory pull-up - Wątpliwości dotyczące rejestru PORT i PUEB

    I mój komentarz wyrażający wątpliwość, co do zapisów w dokumentacji:

    "niby po staremu, a jednak nie. Producent podaje sprzeczne informacje. Pisze jednocześnie, iż ustawiamy odpowiedni bit w rejestrze PORT by za chwilę przedstawić tabelkę z nowym rejestrem PUEB, który to właśnie służy (i wyłącznie on) do włączania pull-up'ów."

    Czy teraz mogę prosić o merytoryczną odpowiedź? R
  • REKLAMA
  • #9 20410845
    Janusz_kk
    Poziom 38  
    Bo porty Attiny 10 są trochę inaczej zrobione niż w starych prockach, widać to na rysunkach, tu attiny 4,5,9,10
    ATtiny10: Wewnętrzne rezystory pull-up - Wątpliwości dotyczące rejestru PORT i PUEB
    a tu starsze attiny 13 jak i stare atmegi
    ATtiny10: Wewnętrzne rezystory pull-up - Wątpliwości dotyczące rejestru PORT i PUEB
    widać że różnica jest zasadnicza. Podciąganie jest odrębnym rejestrem dla każdego pinu a nie wspólnym dla wszystkich i można go włączać niezależnie od innych rejestrów pinu a w starych podciąganie było dozwolone tylko dla pewnej kombinacji logicznej.
  • #10 20410855
    robiw
    Poziom 26  
    Janusz_kk napisał:
    Bo porty Attiny 10 są trochę inaczej zrobione niż w starych prockach


    Wiem, że są inaczej zbudowane, bo już sobie zdążyłem rzucić okiem, ale nie takie było pytanie tego postu!
  • #11 20411719
    Janusz_kk
    Poziom 38  
    Coś jest pokręcone, u mnie jest tak
    ATtiny10: Wewnętrzne rezystory pull-up - Wątpliwości dotyczące rejestru PORT i PUEB
    a u ciebie tak
    ATtiny10: Wewnętrzne rezystory pull-up - Wątpliwości dotyczące rejestru PORT i PUEB

    Dodano po 4 [minuty]:

    Widać że ktoś przekombinował z tym opisem i już to jest poprawione.

    Dodano po 2 [minuty]:

    Jeszcze tabelka
    ATtiny10: Wewnętrzne rezystory pull-up - Wątpliwości dotyczące rejestru PORT i PUEB
  • #12 20411733
    robiw
    Poziom 26  
    Tak,.masz rację. Widzę, że w nowej dokumentacji poprawili ten błąd. Kopiuj/wklej jak widać króluje 😉. Swoją drogą ciekawy temat tej zmiany w tak małym procku. Coś pomiędzy tym, co mamy w nowych i starych. Rozwój jednym słowem 😉. Niemniej jednak do dokumentacji powinni się bardziej przykładać. Zupełnie przypadkiem trafiłem na ten rejestr. Pewnie standardowo uzywalbym PORT... R
  • #13 20411739
    Janusz_kk
    Poziom 38  
    robiw napisał:
    Kopiuj/wklej jak widać króluje 😉

    Widać że też mają praktykantów :)
  • #14 20411891
    jvoytech
    Poziom 21  
    robiw napisał:
    Czy ja coś źle zrozumiałem, czy w tekście datasheet'a jest błąd? Pozdrowienia. R


    Pytanie zasadnicze, coś ty wkleił bo nie mogę tego znaleźć w aktualnej dokumentacji? To jest fragment z datasheet ATtiny10
    ATtiny10: Wewnętrzne rezystory pull-up - Wątpliwości dotyczące rejestru PORT i PUEB

    Co co ty wkleiłeś pochodzi z pdfa dla Atmega48/.../328 gdzie konstrukcja portu jest inna
  • #15 20412033
    tronics
    Poziom 38  
    @jvoytech fajnie, a jak dam ci pdf z takim oznaczeniem w stopce
    Cytat:
    Atmel ATtiny4 / ATtiny5 / ATtiny9 / ATtiny10 [DATASHEET]
    Atmel-8127H-ATtiny4 / ATtiny5 / ATtiny9 / ATtiny10_Datasheet_Complete-11/2016

    gdzie będzie dokładnie co wkleił robiw to uznasz, że zmyślam, czy że ten pdf jest błędny w tym miejscu? Właśnie. Dokumentacja się zmienia. Nie ma się co upierać, że autor pobrał zły dokument skoro jest prawdopodobne, że jego wcześniejsza wersja zawierała właśnie taki błąd (a to prawdopodobieństwo w tym przypadku wynosi 100%).
  • #16 20412264
    Janusz_kk
    Poziom 38  
    Ja wklejałem z pdfa ATtiny4-5-9-10-Data-Sheet-DS40002060A.pdf z 02-2013 jak pisze w stopce.
    ale widzę że na stronie mikrochip-a już jest nowsza wersja z 2018 i tam układ na stronie jest faktycznie inny, ale opis jest taki sam.
  • #17 20412430
    jvoytech
    Poziom 21  
    tronics napisał:
    @jvoytech fajnie, a jak dam ci pdf z takim oznaczeniem w stopce
    Cytat:
    Atmel ATtiny4 / ATtiny5 / ATtiny9 / ATtiny10 [DATASHEET]
    Atmel-8127H-ATtiny4 / ATtiny5 / ATtiny9 / ATtiny10_Datasheet_Complete-11/2016

    gdzie będzie dokładnie co wkleił robiw to uznasz, że zmyślam, czy że ten pdf jest błędny w tym miejscu? Właśnie. Dokumentacja się zmienia. Nie ma się co upierać, że autor pobrał zły dokument skoro jest prawdopodobne, że jego wcześniejsza wersja zawierała właśnie taki błąd (a to prawdopodobieństwo w tym przypadku wynosi 100%).

    Ok, masz rację. W Atmelu więc ktoś zrobił kopy and pasta z innego pdfa, nie wszystko do końca zredagował i wyszło trochę nielogicznie. Trzeba więc sprawdzać najnowsze wersje pdfów i czytać erraty :)

Podsumowanie tematu

Dyskusja dotyczy wewnętrznych rezystorów pull-up w mikrokontrolerze ATtiny10 oraz niejasności związanych z rejestrami PORT i PUEB. Użytkownicy zauważają sprzeczności w dokumentacji, gdzie producent sugeruje, że ustawienie bitu w rejestrze PORT włącza pull-up, podczas gdy wprowadzenie rejestru PUEB wprowadza zamieszanie. Wskazują, że w ATtiny10 podciąganie jest teraz zarządzane przez oddzielny rejestr dla każdego pinu, co różni się od starszych mikrokontrolerów AVR. Uczestnicy dyskusji podkreślają, że dokumentacja wymaga poprawy, a zmiany w architekturze mikrokontrolera mogą wprowadzać nieporozumienia.
Podsumowanie wygenerowane przez model językowy.
REKLAMA