KAŻDY Z 8-MIO BITOWYCH PORTÓW MIKROKONTROLERÓW RODZINY 51 MA JEDYNIE REJESTR PORTU: P0, P1, P2, P3, PEŁNIĄ ONE ROLĘ REJESTRÓW DANYCH WE/WY.

Podobne dokumenty
MIKROPROCESORY architektura i programowanie

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Mikrokontrolery AVR Wprowadzenie

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Porty wejścia/wyjścia w układach mikroprocesorowych i w mikrokontrolerach

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Porty wejścia/wyjścia w układach mikroprocesorowych i w mikrokontrolerach

Technika Mikroprocesorowa

Instytut Teleinformatyki

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

(Rysunek z książki T.Starecki. Mikokontrolery jednoukładowe rodziny 51. NOZOMI W-wa 1996)

Układy zegarowe w systemie mikroprocesorowym

Zerowanie mikroprocesora

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Programowanie w językach asemblera i C

Instytut Teleinformatyki

Ćwiczenie 7 Matryca RGB

Mikroprocesory i Mikrosterowniki

Mikroprocesory i Mikrosterowniki

Uproszczony schemat blokowy konwertera analogowo-cyfrowego przedstawiony został na rys.1.

MIKROKONTROLERY I MIKROPROCESORY

Systemy wbudowane. Wprowadzenie. Struktura. Mikrokontrolery AVR. Wprowadzenie do programowania w C

Komunikacja z urzadzeniami zewnętrznymi

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Porty GPIO w mikrokontrolerach STM32F3

2.1 Przesył danych między procesorem a tabelą zmiennych

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

Laboratorium 2 Sterowanie urządzeniami z wykorzystaniem systemu plików Intel Galileo

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

ASTOR IC200ALG320 4 wyjścia analogowe prądowe. Rozdzielczość 12 bitów. Kod: B8. 4-kanałowy moduł ALG320 przetwarza sygnały cyfrowe o rozdzielczości 12

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

Wbudowane układy peryferyjne cz. 1 Wykład 7

Programowanie mikrokontrolerów AVR

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Instytut Teleinformatyki

Programowanie mikrokontrolerów. 8 listopada 2007

Instytut Teleinformatyki

Hardware mikrokontrolera X51

Przetwornik analogowo-cyfrowy

Wbudowane układy komunikacyjne cz. 1 Wykład 10

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Programator układów HCS

Mikroprocesory i mikrosterowniki

Wstęp Architektura... 13

MIKROPROCESORY architektura i programowanie

2. Architektura mikrokontrolerów PIC16F8x... 13

MARM. Laboratorium 1 system zegarów, porty wejścia/wyjścia. M. Suchenek

E-TRONIX Sterownik Uniwersalny SU 1.2

2.1 Porównanie procesorów

Rysunek 1: Okno z lista

Uwaga: dioda na wyjściu 13 świeci gdy na wyjście podamy 0.

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie

Omówimy przykłady 8-mio bitowego licznika z wyposażenia ADuC812 (CISC 51) oraz mikrokontrolera ATMega128 należącego do rodziny AVR.

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

RS485 MODBUS Module 6RO

PC 3 PC^ TIMER IN RESET PC5 TIMER OUT. c 3. L 5 c.* Cl* 10/H CE RO WR ALE ADO AD1 AD2 AD3 AD4 A05 A06 LTJ CO H 17 AD7 U C-"

Charakterystyka mikrokontrolerów. Przygotowali: Łukasz Glapiński, Mateusz Kocur, Adam Kokot,

RS485 MODBUS Module 6RO

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

RS485 MODBUS Module 8I8O

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Mikrokontrolery STM32

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Instytut Teleinformatyki

Przetworniki analogowo-cyfrowe (A/C)

Komunikacja w mikrokontrolerach. Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface

Programowanie mikrokontrolerów. 3 stycznia 2008

Programowanie Mikrokontrolerów

MIKROPROCESORY architektura i programowanie

Ćwiczenie 3 Wyświetlacz ciekłokrystaliczny

RS485 MODBUS Module 6RO

Wykład 12. Przetwornik ADC

Techniki mikroprocesorowe i systemy wbudowane

Komunikacja w mikrokontrolerach. Wydział Elektroniki Mikrosystemów i Fotoniki Piotr Markowski

Mikroprocesory i Mikrosterowniki Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface

Projektowanie Systemów Wbudowanych

RS485 MODBUS Module 8AO

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

PROGRAMOWANIE PWM. Porty, które mogą być zamienione na PWM w każdym module RaT16 to port 3,4,5,6

SML3 październik

HC541 8-bitowy bufor jednokierunkowy HC245 8-bitowy bufor dwukierunkowy HC244 dwa 4-bitowe bufory jednokierunkowe

M-1TI. PRECYZYJNY PRZETWORNIK RTD, TC, R, U NA SYGNAŁ ANALOGOWY 4-20mA Z SEPARACJĄ GALWANICZNĄ. 2

KA-Nucleo-Weather. Rev Źródło:

Research & Development Ultrasonic Technology / Fingerprint recognition

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

Uniwersalny zestaw uruchomieniowy ZL4PIC

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Programowanie mikrokontrolerów (CISC)

1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.

Transkrypt:

- Port to grupa (8, 16, 32 ) linii wyprowadzeń, które pełnią rolę wyjść/wejść mikrokontrolera. - Jako grupa mają wspólne rejestry, ale zwykle każda z linii ma swoją indywidualną rolę. - Zwykle poszczególne linie portu mogą być konfigurowane do pełnienia jednej z kilku funkcji. KAŻDY Z 8-MIO BITOWYCH PORTÓW MIKROKONTROLERÓW RODZINY 51 MA JEDYNIE REJESTR PORTU: P0, P1, P2, P3, PEŁNIĄ ONE ROLĘ REJESTRÓW DANYCH WE/WY. W rodzinie 51 KONFIGURACJA PORTÓW JEST W ZASADZIE NARZUCONA SPRZĘTOWO. JAKO TYPOWY PRZYKŁAD WEŹMY ADuC812, produkt Analog Devices: Porty P2 i P3 są cyfrowymi portami we/wy z wewnętrznymi opornikami podciągającymi. Wpisanie 1 do bitu rejestru P2 lub P3 ustawia linię wyjściową w stan wysoki. W architekturze 51, w której mamy jedynie jeden rejestr do obsługi, odróżnienie, czy odczyt portu odnosi się do stanu rejestru, czy do stanu linii jest dosyć niewygodne; trzeba pamiętać, że instrukcje typu odczyt-modyfikacja-zapis odnoszą się do rejestru, a pozostałe do stanu linii. Instrukcje O-M-Z dla 51 to bitowe MOV Px.y, C, CLR Px.y i SETB Px.y oraz ANL, ORL, XRL, CPL, INC, DEC, DJNZ i JBC. Wszystkie pozostałe odnoszą się do stanu linii (wyprowadzenia). 1/ 18

Struktura portu zależy od funkcji jakie pełnią linie we/wy. - wejścia/wyjścia wyłącznie cyfrowe - we/wy sygnałów strobujących - we/wy sygnałów impulsowych - we/wy sygnałów analogowych - linie adresowe - linie danych Rozmaite typy portów narzucają różne warunki programowania. Np.: WPISANIE JEDYNKI DO PRZERZUTNIKA JEST WARUNKIEM KONIECZNYM BY LINIA MOGŁA PRACOWAĆ JAKO WEJŚCIE CYFROWE 2/ 18

3/ 18

ODCZYTU PORTU MOŻNA DOKONAĆ NA DWA SPOSOBY: Odczyt stanu rejestru portu Odczyt stanu linii portu Instrukcje, które odczytują STAN REJESTRU portu to: ANL np.: ANL P2,A ORL XRL JBC np.: JBC P1.3 dotego CPL INC DEC DJNZ MOV Px.y C CLR SETB Px.y 4/ 18

Słynny przykład niezrozumienia powyższych zasad dla architektury 51 niech P1.0 będzie linią wejścia, (bit rejestru w stanie wysokim) P1.1 steruje bazą tranzystora (1-przewodzenie, 0- zatkanie) P1.2 P1.7 są wejściami cyfrowymi układ zewnętrzny wymusza stan niski na P1.0 Program : ANL P1,#0FFH ;nie spowoduje żadnej zmiany portu P1 Natomiast fragment programu: MOV A,P1 ANL A,#0FFH MOV P1,A spowoduje zmianę dwu najmłodszych bitów rejestru portu P1 (bo MOV A,P1 wczyta stan linii, a nie stan rejestru!) 5/ 18

PORT 0 jest skonfigurowany jako port we/wy z otwartym drenem (witaj elektroniko cyfrowa). Wpisanie 1 do bitów tego portu ustawia linie w stan wysokiej impedancji. Przełączenie roli danego wyprowadzenia portu dla obsługi innej, ze sprzętowo przypisanych ról, odbywa się w konsekwencji software owej aktywizacji takiego urządzenia. Często, np. też w ADuC812, port P1 jest sprzętowo przygotowany jako wejściowy port analogowy. W tej sytuacji, inaczej jak dla typowych portów, by skonfigurować linie tego portu jako cyfrowe wejścia należy na pozycje odpowiednich bitów w rejestrze P1 wpisać zera! 6/ 18

Przykład nawet stosunkowo prostego procesora 51 pokazuje, że poszczególne wyprowadzenia mogą pełnić kilka funkcji. W architekturze 51 zmiana funkcji jest konsekwencją konfiguracji danego układu peryferyjnego. Np. odpowiednia konfiguracja bitów w rejestrach ADCCON1 i ADCCON2 ustawia linię P1.2 jako analogowe wejście trzeciego (ADC2) kanału przetwornika analogowocyfrowego 7/ 18

PORTY architektury AVR (więc też 8-mio bitowe) obsługiwane są przez TRZY grupy rejestrów: PORTx, DDRx oraz PINx gdzie x oznacza numer LITERĘ portu PORTA7 PORTA6 PORTA5 PORTA4 PORTA3 PORTA2 PORTA1 PORTA0 Wartość początkowa 0 0 0 0 0 0 0 0 DDA7 DDA6 DDA5 DDA4 DDA3 DDA2 DDA1 DDA0 Wartość początkowa 0 0 0 0 0 0 0 0 PINA7 PINA6 PINA5 PINA4 PINA3 PINA2 PINA1 PINA0 Wartość początkowa n/a n/a n/a n/a n/a n/a n/a n/a 8/ 18

Konfiguracja portów PRZEŁĄCZANIE POMIĘDZY STANEM WYSOKIEJ IMPEDANCJI (DDxn, PORTxn) = 0b00 A STANEM OUTPUT HIGH (DDxn, PORTxn) = 0b11 musi przejść przez PULL-UP ENABLED (0b01) lub przez OUTPUT LOW (0b10). Zwykle stan pull-up enable jest akceptowalny w układzie z wysokimi Impedancjami. Jeśli elektronicy sygnalizuja problem, to zawsze można użyć PUD (bit 2) w SFIOR, który wyłącza wszystkie podciągania we wszystkich portach. PODOBNIE JEST PRZY PRZEŁĄCZANIU ZE STANU INPUT WITH PULL-UP DO OUTPUT LOW. Programista musi użyć stanu pośredniego 0b00 ( tri-state ) lub OUT HIGH (0b11) 9/ 18

W odróżnieniu od rodziny 51, dla której prawie nie wspomina się o synchronizacji pracy portów w risc-owych AVR pojawia się synchronizacja, ale nie ma to konsekwencji dla programisty Nie ma specjalnego konfigurowania portów z tego powodu. To zmienia się wyraźnie dopiero w architekturach ARM 10/ 18

Synchronizacja pozwala uniknąć niestabilnych przełączeń, ale wprowadza opóźnienia. Maximum i minimum opóźnienia przy sygnale nadchodzącym Opóźnienie (i synchronizacja) przy sygnale ustalanym programowo 11/ 18

Przykład: PortB, wyprowadzenia 0, 1 H wyprowadzenia 2, 3 L linie 4,5,6,7 skonfigurowane jako wejścia ldi r16, (1<<PB7) (1<<PB6) (1<<PB1) (1<<PB0) ldi r17, (1<<DDB3) (1<<DDB2) (1<<DDB1) (1<<DDB0) out PORTB, r16 out DDRB, r17 nop ;NOP dla synchronizacji! in r16, PINB ;czyta stan linii portu B do r16 Użycie r16 i r17 minimalizuje czas ustawienia oporników podciągających na liniach 0,1, 6 i 7, ustawienia bitów kierunku 2 i 3 na stan niski oraz skonfigurowania 0 i 1 jako strong high drivers 12/ 18

Obciążalność portów (zarówno jako high sink jak i źródło) jest znaczna i symetryczna. Jako regułę można przyjąć, że każdy pin Portu może sterować bezpośrednio diodę LED. Konfiguracje poszczególnych linii portu są od siebie niezależne. Ustawienie direction, czy opornika podciągającego dla jednej linii NIE wpływa na ustawienia pozostałych. Większość linii portów może pełnić kilka różnych funkcji obsługując różne, wewnętrzne układy peryferyjne. Wybranie, włączenie takiego układu wybiera odpowiednią, alternatywną funkcję odpowiednich linii portów. Nie wpływa to na funkcje pozostałych linii portu, które zachowują swoje dotychczasowe role. 13/ 18

PODSTAWOWA STRUKTURA JEDNEJ LINII (BITU) PORTU ARM GPIO GENERAL PURPOSE I/O 14/ 18

ARM są produkowane przez wielu producentów, którym wolno wprowadzać pewne modyfikacje. Ponadto jest szereg podgrup w ramach tej architektury, jak np. podgrupy CORTEX. Poniższe przykłady dotyczą CORTEX-M3, prod. STM Każdy port (GPIO) ma cztery 32-bitowe rejestry konfiguracyjne GPIOx_MODER GPIOx_OTYPER GPIO x_ospeedr GPIOx_PUPDR dwa 32 bitowe rejestry danych GPIOx_IDR GPIOx_ODR jeden 32-bitowy rejestr set/reset GPIOx_BSRR jeden 32-bitowy locking rejestr GPIOx_LCKR dwa 32-bitowe rejestry wyboru funkcji (Alternate Function Selection Register) GPIOx_AFRH GPIOx_AFRL x PORT (A,B,C, G,H) może mieć do szesnastu linii (w nomenklaturze ARM to GPIOs) 15/ 18

Rejestry GPIO GPIOx_MODER (x oznacza w tym przykładzie dla CORTEX-M3 porty A H ) 32 bity tego rejestru to 16 par bitów konfigurujących tryb kierunku: 00 input, 01 output, 10 alternatywna funkcja linii, 11 tryb analogowy GPIOx_OTYPER (port output type register). 16 młodszych bitów rejestru określa typ wyjścia: 0 wyjście typu push-pull, 1 wyjście typu otwarty dren 16 starszych bitów (16 31 ) nieużywane GPIOx_OSPEEDR 16 par bitów konfigurujących szybkość linii I/O 00 very low, 01 low, 10 medium, 11 high speed (dane techniczne konkretnego procesora podają aktualne wartości.) GPIOx_PUPDR pull-up / pull-down register. 16 par bitów konfigurujących użycie oporników podciągających : 00 nie podłączone, 01 pull-up, 10 pull-down, 11 konfiguracja nieużywana. GPIOx_IDR input data register. 16 młodszych bitów (0 : 15) zawiera dane wejściowe (cyfrowe). 16/ 18

Rejestry GPIO cont.. GPIOx_ODR output data register. 16 młodszych bitów (0 : 15) zawiera dane wejściowe (cyfrowe). Bity wpisywane przez software (mogą też być odczytywane). Bity w tym rejestrze mogę też być indywidualnie ustawiane lub zerowane przy użyciu rejestru GPIOx_BSRR. GPIOx_BSRR bit set / reset register. 16 młodszych bitów tego rejestru (bity BSy, y = 0, 15) ustawia odpowiadające im bity w GPIOx_ODR. 16 starszych (BRy) zeruje odpowiadające im bity w ODR. Jeśli równocześnie Bsy i Bry jest 1 to decyduje Bsy. GPIOx_LCKR 16 młodszych bitów tego rejestru używanych jest do wybrania (linii) portów, których konfiguracja ma być zamrożona. Bit 16 rejestru GPIOx_LCKR zwany Lock key bierze udział w operacji LOCK key write sequence : WR LCKR[16] = 1 + LCKR[15:0] WR LCKR[16] = 0 + LCKR[15:0] WR LCKR[16] = 1 + LCKR[15:0] RD LCKR Odblokowanie modyfikacji konfiguracji może nastąpić dopiero przy najbliższym reset. 17/ 18

Rejestry GPIO cont.. GPIOx_AFRL ORAZ GPIOx_AFRH te dwa 32-bitowe rejestry zawierają po osiem czwórek bitów. Każda czwórka określa jedną z 16 możliwych funkcji alternatywnych danego wyprowadzenia linii we/wy. Najmłodsza czwórka portu GPIOx_AFRL (bity 3:0) wybierają funkcję dla linii 0 portu x. PROGRAMOWANIE LINII I/O DLA FUNKCJI WEJŚCIA, WYJŚCIA, DLA FUNKCJI ALTERNATYWNYCH LUB SYGNAŁÓW ANALOGOWYCH PRZEZ ODPOWIEDNIE WYPEŁNIANIE REJESTRÓW STERUJE USTAWIENIA SPRZĘTOWYMI (rys. na slajdzie 14) NP. GDY LINIA PROGRAMOWANA JEST JAKO WEJŚCIE BUFOR WYJŚCIOWY ZOSTAJE WYŁĄCZONY TRYGER SCHMITTA ZOSTAJE ZAŁĄCZONY OPORNIKI PULL-UP I PULL DOWN ZOSTAJĄ ZAŁACZONE ZGODNIE Z USTAWIENIAMI GPIOx_PUPDR SYGNAŁ OBECNY NA LINII WEJŚCIA JEST POBIERANY DO REJESTRU WEJŚCIOWEGO PRZY KAŻDYM CYKLU ZEGARA MAGISTRALI AHB. 18/ 18