Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines
Końcówki GP0, GP1 i GP3 mogą zostać skonfigurowane do pracy ze słabymi opornikami podciągającymi jak również do wybudzania mikrokontrolera z trybu uśpienia przy zmianie stanu końcówki. Funkcje te są wybierane globalnie dla wszystkich trzech końcówek. Jeśli końcówka GP3/MCLR zostanie skonfigurowana jako MCLR, to słaby opornik podciągający jest zawsze do niej podłączony a wybudzanie przy zmianie stanu nie jest włączone.
Adres | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
06h | – | – | – | – | GP3 | GP2 | GP1 | GP0 |
U | U | U | U | W/R-x | W/R-x | W/R-x | W/R-x |
Legenda: | R = bit odczytywalny; |
Bit | Opis |
bity 7:4 | Niezaimplementowane Przy odczycie zwracają 0 |
bity 3:0 | GP3:0: Przy odczycie bity zwracają stan logiczny panujący na powiązanych z nimi końcówkach portu. Przy zapisie bity są zatrzaskiwane w rejestrze we/wy i ich stan pojawia się na powiązanych z nimi końcówkach, jeśli końcówki pracują jako wyjścia. |
Priorytet | GP0 | GP1 | GP2 | GP3 |
1 | CIN+ | CIN- | FOSC4 | I/MCLR |
2 | TRIS GPIO | TRIS GPIO | COUT | — |
3 | — | — | T0CKI | — |
4 | — | — | TRIS GPIO | — |
Uwaga: | Odczyt portów zwraca stan końcówek, nie wyjściowych zatrzasków danych. Oznacza to, iż jeśli włączono na końcówce driver wyjściowy i wysterowano go w stan wysoki, lecz zewnętrzny obwód wymusza na tej końcówce stan niski, to odczyt portu zwróci 0, informując o stanie niskim na końcówce. |
Rejestry TRIS są rejestrami tylko do odczytu i przy resecie ich bity są ustawiane na 1 (drivery wyjściowe wyłączone).
Wszystkie końcówki portu, z wyjątkiem GP3 będącą tylko do odczytu, mogą być używane zarówno w operacjach odczytu jak i zapisu. Przy odczycie dane nie są zatrzaskiwane w porcie. Każda dana wejściowa musi być obecna na końcówce aż do jej odczytu przez instrukcję wejścia (np. MOVF GPIO, W). Dane wyjściowe zostają zatrzaśnięte w przerzutniku a do ich nadpisania inną wartością.
Aby używać końcówki portu jako wyjście danych, odpowiadający jej bit sterowania kierunkiem w rejestrze TRIS musi być wyzerowany. Przy używaniu jako wejście bit ten należy ustawić na jeden. Każda końcówka we/wy (z wyjątkiem GP3) może być zaprogramowana indywidualnie jako wejście lub wyjście.
Adres | Nazwa | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | Wartość
przy resecie przy włączeniu |
Wartość przy wszystkich innych resetach |
N/A | TRIS | — | — | — | — | Rejestr sterujący we/wy | ---- 1111 |
---- 1111 |
|||
N/A | OPTION | GPWU | GPPU | T0CS | T0SE | PSA | PS2 | PS1 | PS0 | 1111 1111 |
1111 1111 |
03h | STATUS | GPWUF | CWUF | — | TO | PD | Z | DC | C | 00-1 1xxx |
qq-q quuu (1)(2) |
06h | GPIO | — | — | — | — | GP3 | GP2 | GP1 | GP0 | ---- xxxx |
---- uuuu |
Niektóre instrukcje działają wewnętrznie jak odczyt, którym następuje operacja zapisu. Na przykład instrukcje BCF i BSF odczytują do mikroprocesora cały port, wykonują operację bitową i zapisują z powrotem wynik. Należy podjąć środki ostrożności, gdy te instrukcje zostaną użyte do portu, w którym jedna lub więcej końcówek pracuje jako wejścia/wyjścia. Na przykład instrukcja BSF na bicie 2 rejestru GPIO spowoduje odczyt do mikroprocesora wszystkich ośmiu bitów, ustawi na 1 bit 2 i wartość GPIO zostanie zapisana do zatrzasków wyjściowych. Jeśli inny bit rejestru GPIO jest używany jako dwukierunkowa końcówka we/wy (powiedzmy bit 0), a została ona zdefiniowana w tym czasie jako wejście, to sygnał obecny na końcówce zostanie wczytany do mikroprocesora, a następnie zapisany do zatrzasku danych tej konkretnej końcówki, nadpisując poprzednią zawartość. Tak długo jak końcówka pozostaje w trybie odczytu nie pojawi się żaden problem. Jednakże, jeśli bit 0 zostanie przełączony później w tryb zapisu, to zawartość zatrzasku danych może być nieokreślona. Poniższy przykład pokazuje efekt dwóch kolejnych instrukcji odczytu-modyfikacji-zapisu (np. BCF, BSF, itp.) na porcie we/wy.
;Początkowe ustawienia GPIO ;GPIO<3:2> Wejścia ;GPIO<1:0> Wyjścia ; ; Zatrzask GPIO końcówki GPIO ; ---------- ---------- BCF GPIO, 1 ;---- pp01 ---- pp11 BCF GPIO, 0 ;---- pp10 ---- pp11 MOVLW 007h ; TRIS GPIO ;---- pp10 ---- pp11 ;
Uwaga | 1. | Użytkownik może spodziewać się wartości
----pp00 na końcówkach. Druga instrukcja BCF spowodowała
zatrzaśnięcie GP1 jako wartości wysokiej na końcówce. |
Końcówka aktywnie wyprowadzająca wartość wysoką lub niską nie powinna być w tym samym czasie wysterowywana przez zewnętrzne urządzenia w celu zmiany poziomu na tej końcówce (suma montażowa, iloczyn montażowy). Powstające w wyniku wysokie prądy wyjściowe mogą uszkodzić układ.
Faktyczny zapis do portu we/wy odbywa się na końcu cyklu rozkazowego, gdzie przy odczycie dane muszą być poprawne na początku cyklu rozkazowego.
Poniższy przykład pokazuje zapis do GPIO, po którym następuje odczyt z GPIO.
Czas ustalania się danych = (0,25·TCY-TPD)
gdzie:
TCY = cykl rozkazowy
TPD = opóźnienie propagacji
Dlatego przy wyższych częstotliwościach zegarowych zapis, po którym następuje
odczyt, może być problematyczny.
Dlatego należy bardzo uważać, jeśli po zapisie następuje bezpośrednio odczyt w tym samym porcie we/wy. Ciąg instrukcji powinien umożliwić ustabilizowanie się napięcia na końcówce (zależy to od obciążenia) zanim następna instrukcja wczyta stan końcówki do mikroprocesora. W przeciwnym razie do mikroprocesora zostanie wczytany poprzedni stan końcówki, a nie nowy. W razie wątpliwości lepiej rozdzielić w kodzie takie instrukcje instrukcją NOP lub inną, która nie operuje na porcie we/wy.
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.