Test szybkich portów GPIO mikrokontrolerów z serii · PDF filejako LPC2148, w...

4
89 Elektronika Praktyczna 3/2007 POMIARY Po przeobrażeniach kapitało- wych firma Philips Semicontuctor przekazała produkcję mikrokontrole- rów firmie NXP. Już pod zmienio- nym szyldem powstał m.in. nowy mikrokontroler ARM oznaczony jako LPC2148, w którym niedorób- ki poprzedników zostały poprawio- ne. W artykule zawarto informa- cję o tym, jak można wykorzystać nowe, szybkie porty I/O. Zapre- zentowano również praktyczny test szybkich portów I/O wspomnianego wyżej układu. Powolne porty w szybkim mikrokontrolerze Czytelnicy zainteresowani te- matyką mikrokontrolerów ARM zapewne pamiętają, że powodem powolnej pracy portów pierwszych mikrokontrolerów serii LPC2000 było umieszczenie ich w przestrze- ni adresowej standardowych ukła- dów peryferyjnych. Rozwiązanie takie skutkowało tym, że dostęp do portu odbywał się przez mo- stek pomiędzy magistralami AHB i VPB. Powodowało to wydłużenie fazy execute tych spośród instruk- cji zapisu i odczytu, które odwo- ływały się do przestrzeni portów GPIO (General Purpose Input Out- Test szybkich portów GPIO mikrokontrolerów z serii LPC214x firmy NXP (Philips) W EP5/2005 zamieściliśmy artykuł „Czy ARM zawsze znaczy szybki? Badanie szybkości pracy portów mikrokontrolera LPC2114 firmy Philips.”. Treść artykułu dotyczyła niedoróbki, jakiej „dopuścili się” inżynierowie firmy Philips Semiconductor (obecnie NXP) projektujący strukturę mikrokontrolerów serii LPC2000, polegającej na powolnej pracy portów I/O. Niniejszy artykuł jest suplementem wspomnianego opracowania. put). Inżynierowie firmy NXP po- prawili konstrukcję mikrokontrole- rów z rdzeniem ARM produkowa- nych przez tę firmę i począwszy od serii LPC214x, mikrokontrolery te wolne są od opisanej wady. Na rys. 1 przedstawiono sche- mat blokowy układów serii LPC214x. Dla zachowania kom- patybilności z poprzednimi se- riami mikrokontrolerów rodziny LPC2000, mikrokontrolery serii LPC214x zachowały zwykłe porty GPIO umieszczone w przestrzeni standardowych urządzeń peryfe- ryjnych i komunikujące się z rdze- niem za pośrednictwem magistrali VPB, mostka AHB/VPB i magistrali AHB. Zachowanie tych portów po- zwala konstruktorom stosować mi- krokontrolery serii LPC214x tam, gdzie wcześniej używano starszych mikrokontrolerów rodziny LPC2000. Zamiana może być dokonana bez konieczności wprowadzania zmian w układzie sprzętowym bądź opro- gramowaniu (dodatkowe sztuczne opóźnienia). Możliwe jest zatem bezproblemowe zachowanie od- powiednich zależności czasowych w opracowanych wcześniej ukła- dach, w których szybkie porty GPIO mogłyby być zbyt szybkie dla współpracujących z nimi ukła- dów elektronicznych. Jednocześnie, mikrokontrolery serii LPC214x po- siadają odrębny blok szybkich por- tów GPIO ( Fast GPIO), które ko- munikują się z rdzeniem ARM7 za pośrednictwem szybkiej magistrali ARM7 local bus. Sposób wykorzystania szybkich portów GPIO mikrokontrolerów serii LPC214x Jako porty szybkie, pracować mogą porty P0 i P1 mikrokontrole- rów serii LPC214x, przy czym, ze względu na zastosowaną obudowę LQFP64, w przypadku mikrokontro- lerów tej serii nie są dostępne wy- prowadzenia odpowiadające bitom P0.24, P0.26 i P0.27 oraz P1.0... P1.15 (jest to spowodowane po prostu zbyt małą liczbą wyprowa- dzeń obudowy 64–końcówkowej). Szybkie porty posiadają własny ze- staw rejestrów SFR, podobny do zestawów rejestrów związanych ze standardowymi (powolnymi) porta- mi GPIO. Najważniejszymi spośród nich są (n = {0,1}): – FIOnDIR – rejestr kierunku por- tu n. Nadanie wartości 0 da- nemu bitowi oznacza, że odpo- wiadająca mu linia portu pracu- je jako wejście. W przeciwnym wypadku – jako wyjście; – FIOnPIN – rejestr portu n. Za- pis do tego rejestru zmienia stan portu, odczyt pozwala po- znać stan portu GPIO; – FIOnSET – zapis wartości 1 do bitów tego rejestru powodu- je nadanie odpowiadającym im wyprowadzeniom portu n stanu wysokiego. Zapis wartości 0 nie powoduje zmiany stanu portu; – FIOnCLR – zapis wartości 1 do bitów tego rejestru powodu- je nadanie odpowiadającym im wyprowadzeniom portu n stanu niskiego. Zapis wartości 0 nie powoduje zmiany stanu portu; – FIOnMASK – rejestr maski portu. Pozwala on na określenie, które linie (fizyczne) portu n mogą być zmieniane za pośrednic- twem rejestrów FIOnPIN, FIOn- SET i FIOnCLR lub odczytywane za pośrednictwem rejestru FIOn- PIN. Zapis i odczyt jest możliwy tylko do/z tych linii portu, któ- re odpowiadają bitom rejestru FIOnMASK o wartości zero. Ze względu na to, że zarów- no standardowe, jak i szybkie por- ty GPIO dzielą między siebie te same wyprowadzenia mikrokontro- lera, konieczne jest określenie, czy dany port pracuje jako zwykły, czy jako szybki port GPIO. Służy do tego rejestr SCS (System Con- trol and Status flags register). Bit numer 0 określa tryb pracy portu P0, zaś bit numer 1 – tryb pracy portu P1. Nadanie danemu bitowi (numer 0 lub 1) wartości 0 spra-

Transcript of Test szybkich portów GPIO mikrokontrolerów z serii · PDF filejako LPC2148, w...

Page 1: Test szybkich portów GPIO mikrokontrolerów z serii · PDF filejako LPC2148, w którym niedorób- ... INTERRUPT CONTROLLER USB clock AMBAAHB ... UART0/UART1 REAL-TIMECLOCK WATCHDOG

89Elektronika Praktyczna 3/2007

P O M I A R Y

Po przeobrażeniach kapitało-wych firma Philips Semicontuctorprzekazała produkcję mikrokontrole-rów firmie NXP. Już pod zmienio-nym szyldem powstał m.in. nowy mikrokontroler ARM oznaczony jako LPC2148, w którym niedorób-ki poprzedników zostały poprawio-ne. W artykule zawarto informa-cję o tym, jak można wykorzystać nowe, szybkie porty I/O. Zapre-zentowano również praktyczny test szybkich portów I/O wspomnianego wyżej układu.

Powolne porty w szybkim mikrokontrolerze

Czytelnicy zainteresowani te-matyką mikrokontrolerów ARM zapewne pamiętają, że powodem powolnej pracy portów pierwszych mikrokontrolerów serii LPC2000 było umieszczenie ich w przestrze-ni adresowej standardowych ukła-dów peryferyjnych. Rozwiązanie takie skutkowało tym, że dostęp do portu odbywał się przez mo-stek pomiędzy magistralami AHB i VPB. Powodowało to wydłużenie fazy execute tych spośród instruk-cji zapisu i odczytu, które odwo-ływały się do przestrzeni portów GPIO (General Purpose Input Out-

Test szybkich portów GPIO mikrokontrolerów z serii LPC214x firmy NXP (Philips)

W EP5/2005 zamieściliśmy artykuł „Czy ARM zawsze

znaczy szybki? Badanie szybkości pracy portów

mikrokontrolera LPC2114 firmy Philips.”. Treść artykułu

dotyczyła niedoróbki, jakiej „dopuścili się” inżynierowie firmy Philips Semiconductor(obecnie NXP) projektujący strukturę mikrokontrolerów serii LPC2000, polegającej na powolnej pracy portów I/O. Niniejszy artykuł jest

suplementem wspomnianego opracowania.

put). Inżynierowie firmy NXP po-prawili konstrukcję mikrokontrole-rów z rdzeniem ARM produkowa-nych przez tę firmę i począwszyod serii LPC214x, mikrokontrolery te wolne są od opisanej wady.

Na rys. 1 przedstawiono sche-m a t b l o ko w y u k ł a d ó w s e r i i LPC214x. Dla zachowania kom-patybilności z poprzednimi se-riami mikrokontrolerów rodziny LPC2000, mikrokontrolery serii LPC214x zachowały zwykłe porty GPIO umieszczone w przestrzeni standardowych urządzeń peryfe-ryjnych i komunikujące się z rdze-niem za pośrednictwem magistrali VPB, mostka AHB/VPB i magistrali AHB. Zachowanie tych portów po-zwala konstruktorom stosować mi-krokontrolery serii LPC214x tam, gdzie wcześniej używano starszych mikrokontrolerów rodziny LPC2000. Zamiana może być dokonana bez konieczności wprowadzania zmian w układzie sprzętowym bądź opro-gramowaniu (dodatkowe sztuczne opóźnienia). Możliwe jest zatem bezproblemowe zachowanie od-powiednich zależności czasowych w opracowanych wcześniej ukła-dach, w których szybkie porty GPIO mogłyby być zbyt szybkie dla współpracujących z nimi ukła-dów elektronicznych. Jednocześnie, mikrokontrolery serii LPC214x po-siadają odrębny blok szybkich por-tów GPIO (Fast GPIO), które ko-munikują się z rdzeniem ARM7 za pośrednictwem szybkiej magistrali ARM7 local bus.

Sposób wykorzystania szybkich portów GPIO mikrokontrolerów serii LPC214x

Jako porty szybkie, pracować mogą porty P0 i P1 mikrokontrole-rów serii LPC214x, przy czym, ze względu na zastosowaną obudowę LQFP64, w przypadku mikrokontro-lerów tej serii nie są dostępne wy-prowadzenia odpowiadające bitom P0.24, P0.26 i P0.27 oraz P1.0...P1.15 (jest to spowodowane po

prostu zbyt małą liczbą wyprowa-dzeń obudowy 64–końcówkowej). Szybkie porty posiadają własny ze-staw rejestrów SFR, podobny do zestawów rejestrów związanych ze standardowymi (powolnymi) porta-mi GPIO. Najważniejszymi spośród nich są (n = {0,1}):

– FIOnDIR – rejestr kierunku por-tu n. Nadanie wartości 0 da-nemu bitowi oznacza, że odpo-wiadająca mu linia portu pracu-je jako wejście. W przeciwnym wypadku – jako wyjście;

– FIOnPIN – rejestr portu n. Za-pis do tego rejestru zmienia stan portu, odczyt pozwala po-znać stan portu GPIO;

– FIOnSET – zapis wartości 1 do bitów tego rejestru powodu-je nadanie odpowiadającym im wyprowadzeniom portu n stanu wysokiego. Zapis wartości 0 nie powoduje zmiany stanu portu;

– FIOnCLR – zapis wartości 1 do bitów tego rejestru powodu-je nadanie odpowiadającym im wyprowadzeniom portu n stanu niskiego. Zapis wartości 0 nie powoduje zmiany stanu portu;

– FIOnMASK – rejestr maski portu. Pozwala on na określenie, które linie (fizyczne) portu n mogą być zmieniane za pośrednic-twem rejestrów FIOnPIN, FIOn-SET i FIOnCLR lub odczytywane za pośrednictwem rejestru FIOn-PIN. Zapis i odczyt jest możliwy tylko do/z tych linii portu, któ-re odpowiadają bitom rejestru FIOnMASK o wartości zero.Ze względu na to, że zarów-

no standardowe, jak i szybkie por-ty GPIO dzielą między siebie te same wyprowadzenia mikrokontro-lera, konieczne jest określenie, czy dany port pracuje jako zwykły, czy jako szybki port GPIO. Służy do tego rejestr SCS (System Con-trol and Status flags register). Bit numer 0 określa tryb pracy portu P0, zaś bit numer 1 – tryb pracy portu P1. Nadanie danemu bitowi (numer 0 lub 1) wartości 0 spra-

Page 2: Test szybkich portów GPIO mikrokontrolerów z serii · PDF filejako LPC2148, w którym niedorób- ... INTERRUPT CONTROLLER USB clock AMBAAHB ... UART0/UART1 REAL-TIMECLOCK WATCHDOG

Elektronika Praktyczna 3/200790

P O M I A R Y

wia, że odpowiadający mu port GPIO pracuje jako port standardo-wy. Nadanie wartości 1 powoduje wejście portu w tryb Fast GPIO.

Przykład użycia szybkiego portu GPIO1 mikrokontrolera LPC2148. Pomiar czasu wykonania instrukcji zapisu i odczytu w przestrzeni szybkich portów GPIO

Do testów wykorzystano połączo-ne zestawy ewaluacyjne ZL9ARM i ZL10ARM firmy BTC, które po-

zwalają na szybkie zapoznanie się z mikrokontrolerami serii LPC214x. Na fot. 2 przedstawiono ich widok podczas dokonywania pomiarów. Podobnie jak w przypadku mikro-kontrolera LPC2114 (artykuł „Czy ARM zawsze znaczy szybki? Bada-nie szybkości pracy portów mikro-kontrolera LPC2114 firmy Philips” zamieszczony w EP5/2005) zmie-rzono czasy wykonania instrukcji zapisu i odczytu do/z portu GPIO, oczywiście z tą różnicą, że tym ra-zem wykorzystano szybki port I/O

– FGPIO1. Wykorzystano tę samą, co wcześniej, metodę pomiaru cza-su trwania instrukcji. Instrukcje, których czas wykonania mierzono, dodano do pętli, w której naprze-miennie zmieniany jest stan por-tu. Dzięki temu okres tych zmian wydłuża się o czas ich wykonania. Stworzono prosty program hybry-dowy, w którym główna część (od-powiedzialna za konfigurację proce-sora) została napisana w języku C (kompilator ARM–GCC 4.0.1), zaś właściwa pętla pomiarowa została

LPC2141/42/44/46/48TEST/DEBUGINTERFACE

TRST(1)

TCK(1)

TMS(1)

TDI(1)

TDO(1)

XTAL2

XTAL1 RST

PLL0

PLL1

SYSTEMFUNCTIONS

VECTOREDINTERRUPTCONTROLLER

USBclock

AMBA AHB

(Advanced High-performance Bus)

AHBDECODER

8 kB RAMSHARED WITH

USB DMA(3)

VPBDIVIDER

AHB TO VPBBRIDGE

VPB (VLSIperipheral bus) USB 2.0 FULL-SPEED

DEVICECONTROLLER

WITH DMA(3)

I C-BUS SERIALINTERFACES 0 AND 1

2

SPI AND SSPSERIAL INTERFACES

UART0/UART1

REAL-TIME CLOCK

WATCHDOGTIMER

SYSTEMCONTROL

002aab560

D+

D–

UP_LED

CONNECT

VBUS

SCL0, SCL1

SDA0, SDA1

SCK0, SCK1

MOSI0, MOSI1

MISO0, MISO1

SSEL0, SSEL1

TXD0, TXD1

RXD0, RXD1

DSR1 , CTS1

RTS1 , DTR1

DCD1 , RI1

(2) (2)

(2) (2)

(2) (2)

RTXC1RTXC2VBAT

(1) Piny współdzielone z GPIO(2) Tylko LPCC2144/6/8(3) Kontroler USB DMA z 8 kB RAM-u dostępną jako pamięć RAM ogólnego zastosowania i/lub DMA dostępne tylko w LPC2146/8.(4) Tylko LPC2142/4/6/8

systemclockFAST GENERAL

PURPOSE I/0

ARM7 local bus

INTERNALSRAM

CONTROLLER

INTERNALFLASH

CONTROLLER

8/16/32 kBSRAM

32/64/128/256/512 kBFLASH

EXTERNALINTERRUPTS

CAPTURE/COMPARE(W/EXTERNAL CLOCK)

TIMER 0/TIMER 1

A/D CONVERTERS

0 AND 1(2)

D/A CONVERTER

GENERALPURPOSE I/O

PWM0PWM6 to PWM0

P0[31:28] andP0[25:0]

P1[31:16]

AOUT(4)

EINT3 to EINT0

4 CAP0

4 CAP1

8 MAT0

8 MAT1

AD0[7:6] andAD0[4:1]

AD1[7:0](2)

AHB BRIDGE

ARM7TDMI-SEMULATIONTRACE

MODULE

P0[31:28] and

P0[25:0]

P1[31:16]

Rys. 1. Schemat blokowy mikrokontrolera z serii LPC214x

Page 3: Test szybkich portów GPIO mikrokontrolerów z serii · PDF filejako LPC2148, w którym niedorób- ... INTERRUPT CONTROLLER USB clock AMBAAHB ... UART0/UART1 REAL-TIMECLOCK WATCHDOG

91Elektronika Praktyczna 3/2007

P O M I A R Y

zaimplementowana w asemblerze ARM7. Do edycji programu wyko-rzystano środowisko uVision3 firmyKeil. Program uruchomiono przy częstotliwości taktowania rdzenia równej 60 MHz i całkowicie włą-czonym module MAM (Memory Acceleration Module), co zapewniło najszybszy z możliwych odczyt in-strukcji z pamięci Flash.

Na list. 1 przedstawiono część napisaną w języku C. Jest to krót-ki program, w którym najpierw jest odpowiednio konfigurowana szyb-kość taktowania peryferiów (rejestr VPBDIV), a następnie port numer 1 konfigurowany jest do pracy w try-bie szybkim. Nadanie rejestrowi FIO1MASK wartości 0xFF00FFFF sprawia, że możliwy jest dostęp

do linii P1.16...P1.23 trak-towanych jako szybki port I/O. Tuż przed wywoła-niem funkcji toggle() linie P1.16...P1.23 ustawiane są jako wyjścia. Funkcja tog-gle() została zadeklarowana z dyrektywą extern po to, aby jej ciało można było umieścić w innym pliku źródłowym (w tym przy-padku jest to plik toggle.s). Kompilatora nie intere-suje w jakim języku zosta-ła ona zaimplementowana – wystarczy, aby linker miał informację o tym, gdzie jej szukać. Na list. 2 przedstawiono kod funkcji toggle(). Dyrektywa .global toggle pozwala wywołać ją z innych plików projektu,

zaś zgodność nazw funkcji w pli-kach *.c i *.s daje linkerowi jed-noznaczną informację o tym, gdzie się ona znajduje.

Pierwszą część funkcji toggle() stanowi inicjalizacja rejestru R3, który przechowuje adres rejestru szybkiego portu numer 1 – FIO-1PIN. Adres ten jest równy 0x3FF-FC034. Rejestry R1 i R2 przechowu-ją wartości, które będą wpisywane do FIO1PIN powodując odpowied-nio wygaszenie lub zapalenie linii P1.23...P1.16. To, że adres rejestru FIO1PIN nie jest bezpośrednio wpisywany do rejestru R3 wynika stąd, że asembler akceptuje jedynie takie stałe 32–bitowe, z których da się otrzymać stałe 8–bitowe po ro-tacji o parzystą liczbę miejsc (0, 2, 4, ..., 30). Na przykład – nie da się przesłać do rejestru stałej 0x1234. Da się natomiast wpi-sać tam stałą 0xC000003F, gdyż po rotacji o 2 miejsca w lewo otrzymujemy z niej 8–bitową licz-bę 0xFF. W niniejszym przypadku wartość 0x3FFFC034 jest otrzymy-wana poprzez odjęcie od wartości 0x40000000 liczb 0x3F00 i 0xCC (każda z wymienionych liczb speł-nia podany wyżej warunek).

Po fazie inicjalizacji następuje właściwa pętla pomiarowa toggle_loop. Stanowią ją dwie instrukcje str wpisujące do rejestru FIO1PIN zawartość rejestrów R1 i R2. Po nich występuje instrukcja mierzo-na, a następnie skok zamykający pętlę. Należy zauważyć, że jed-ną z instrukcji mierzonych może być instrukcja zapisu do portu (str R2,[R3]). Ze względu na to, że wpisuje ona tam to samo co poprzednia instrukcja str R2,[R3], wpływa ona na okres przebiegu wyjściowego jedynie czasem swoje-go wykonywania.

Schemat układu tes towego przedstawiono na rys. 3. Pomiary polegały na odkomentowaniu wy-branej instrukcji i zmierzeniu czę-stotliwości na linii P1.16. Wyniki zamieszczono w tab. 1. Jak widać, w przeciwieństwie do starszych układów rodziny LPC2000, w tym przypadku czas wykonywania in-strukcji przesłań do portu i do pamięci RAM nie różni się (przy-pomnijmy – zapis i odczyt do/z pa-mięci RAM zajmuje odpowiednio 2 i 3 cykle, czyli tyle samo co dostęp do szybkich portów GPIO). W starszych wersjach mikrokontro-

Fot. 2. Połączone zestawy ZL9ARM i ZL10ARM podczas testów

ZL9ARM+

ZL10ARM(LPC2148)

P1.16

GND

Częstościomierzcyfrowy

IN

GND

Rys. 3. Schemat układu testowego

List. 1. Ustawienie portu 1 w tryb Fast GPIO////////////////////////////////////////////////////////// Function: LPC214x fast GPIO test// Target: LPC2148// Board: ZL9ARM + ZL10ARM// Quartz: 12MHz// Compiler: ARM-GCC 4.0.1// Author: Arkadiusz Antoniak @ 2006, Poland// Copyright: (c) Arkadiusz Antoniak, 2006////////////////////////////////////////////////////////#include <LPC214x.H> //toggle assembly functionextern void toggle(void);//*******************************// MAIN//*******************************int main(void){ //Peripherials’ frequency pclk = cclk/4 = 15MHz VPBDIV&=0xFFFFFFFC; VPBDIV|=0x00; //Enable PORT1 as fast GPIO SCS|=(1<<1); //Fast IO mask - enable access to P1.16 ... P1.23 pins FIO1MASK = ~(0xFF << 16); //Set PORT1 direction FIO1DIR = 0x00FF0000; //Toggle P1.16 ... P1.23 toggle(); while(1);}

Page 4: Test szybkich portów GPIO mikrokontrolerów z serii · PDF filejako LPC2148, w którym niedorób- ... INTERRUPT CONTROLLER USB clock AMBAAHB ... UART0/UART1 REAL-TIMECLOCK WATCHDOG

Elektronika Praktyczna 3/200792

P O M I A R Y

taktowania rdzenia cclk. Skok jest wykonywany w ciągu trzech cykli, zaś każdy z zapisów do portu zaj-muje 2 cykle. Stąd też maksymal-na możliwa do uzyskania często-tliwość przełączania portu wynosi 60 [MHz] /4=15 [MHz]. Oczywi-ście, przebieg o takiej częstotliwo-ści pojawi się na wyjściu portu, gdy fragment programu generujący przebieg wyjściowy będzie miał postać szeregu instrukcji postaci str R2,[R3] nie ujętych w pętlę (skok wprowadza dodatkowe opóźnienie).

PodsumowanieWyposażenie mikrokontrolerów

serii LPC214x w szybkie porty GPIO jest przykładem, jak feedback ze strony konstruktorów i użytkow-ników elementów elektronicznych może skłonić producenta do popra-wienia ich funkcjonalności, a zatem konkurencyjności na dynamicznym rynku mikrokontrolerów z rdzeniem ARM. W mikrokontrolerach wy-posażonych w ten rdzeń szybkie porty nie są w prawdzie najistot-niejszym czynnikiem decydującym o ich użyteczności (lub jej braku), nie mniej jednak istnieje szeroki zakres zastosowań tych układów, gdzie szybkość pracy portów GPIO jest bardzo istotna. Tym bardziej cieszy, że historia drobnego, acz dokuczliwego w wielu przypadkach błędu, została zamknięta.Arkadiusz Antoniak, [email protected]

Tab. 1. Wyniki pomiarów (cclk=60 MHz)

Instrukcjamierzona

Częstotliwość[kHz]

Okres T[ns]

Okres T[cykle]

DT=T-116,7[ns]

Liczba cykli wykonywania fazy Execute

-brak instrukcji 8572 116,(6) 7 0 -

str R2,[R3]rejestr -> port 6666 150 9 33,(3) 2

ldr R4,[R3]rejestr <- port 6000 166,(6) 10 50 3

Fot. 4. Maksymalna częstotliwość przełączania

List. 2. Funkcja toggle() .global toggletoggle: mov R3,#0x40000000 sub R3,R3,#0x3F00 sub R3,R3,#0xCC @ R3 = 0x3FFFC034 (FIO1PIN) mov R1,#0 mov R2,#0x00FF0000 toggle_loop: str R1,[R3] @ P1.16 ... P1.23 = 00000000b str R2,[R3] @ P1.16 ... P1.23 = 11111111b @ -- testing instructions execution time -- @ldr R4,[R3] @ read P1 (FIO1PIN) str R2,[R3] @ write P1 (FIO1PIN) b toggle_loop

odczyt z portu jes t o 1 cykl wolniejszy niż zapis.

N a f o t . 4 zamieszczono fotografię czę-s tościomierza p o d c z a s p o -miaru maksy-malnej często-tliwości przełą-

czania portu (przy usuniętych obu instrukcjach mierzonych). Częstotli-wość ta wynosi 1/7 częstotliwości

lerów serii LPC2000 zapis i odczyt do/z portu trwają odpowiednio 7 i 8 cykli. Należy odnotować, że