Model programowy procesora ColdFire 1
Model programowy procesora ColdFire 2
Kolejność bajtów w pamięci (1) Bajt najmniejsza adresowalna jednostka pamięci komputerowej Endianess Big-endian middle-endian od lewej do prawej podobnie jak w języku polskim, angielskim Motorola, SPARC, ARM Little-endian od prawej do lewej liczby zmiennoprzecinkowe podwójnej precyzji VAX and ARM podobnie jak w językach arabskich, hebrajski Intel x86, 6502 VAX Bi-Endian ARM, PowerPC (za wyjątkiem PPC970/G5), DEC Alpha, MIPS, PA-RISC oraz IA64 3
Kolejność bajtów w pamięci (2) Architektura 8-bitowa 7 0 0x0000.0000 Byte 1 0x0000.0001 Byte 2 0x0000.0002 Byte 3 0x0000.0003 Byte 4 0x0000.0004 Byte 5 7 0 0x0000.0000 0x12 0x0000.0001 0x34 0x0000.0002 0x56 0x0000.0003 0x78 0x0000.0004 0x90 4
Kolejność bajtów w pamięci (3) Byte 4... Byte 1 MSB LSB Big-endian 0x0000.0000 Byte 4 Byte 3 Byte 2 Byte 1 0x0000.0004 Byte 8 0x0000.0008 Byte 12 Byte 7... Byte 6... Byte 5... 0x0000.000C 0x0000.0010 Little-endian 0x0000.0000 Byte 1 Byte 2 Byte 3 Byte 4 0x0000.0004 Byte 5 0x0000.0008 Byte 9 Byte 6... Byte 7... Byte 8... 0x0000.000C 0x0000.0010 5
Kolejność bajtów w pamięci (4) Podwójne słowo (DW): 0x1234.5678 Big-endian 0x0000.0000 8 7 24 23 16 15 0x12 0x34 0x56 0x78 0x0000.0004 Byte 5 0x0000.0008 Byte 9 32 Byte 6... Byte 7... 0 Byte 8... 0x0000.000C 0x0000.0010 Little-endian 32 24 23 16 15 0 8 7 0x0000.0000 0x78 0x56 0x34 0x12 0x0000.0004 Byte 8 0x0000.0008 Byte 12 Byte 7... Byte 6... Byte 5... 0x0000.000C 0x0000.0010 6
Kolejność bajtów w pamięci (5) Jak rozpoznać architekturę procesora oraz rozkład bajtów w pamięci? #define LITTLE_ENDIAN 0 #define BIG_ENDIAN 1 int machineendianness() { long int i = 1; const char *p = (const char *) &i; if (p[0] == 1) // Lowest address contains the least significant byte return LITTLE_ENDIAN; else return BIG_ENDIAN; } 7
Model programowy procesora ColdFire 8
Przykład użycia rejestrów danych y = wsp. temp. * ADC + wsp. skalujacy ACC = wsp. temp. ACC = ACC * ADC ACC = ACC + wsp. skalujacy y = ACC D0 = wsp. temp. D1 = wsp. skalujacy D2 = ADC D2 = D0 * D2 y = D2 + D1 9
Przykład użycia rejestrów adresowych (1) Zapisanie tablicy adresów przerwań 4B VBR Adres 1 Adres 2 256 komórek VBR = 0x500.000 A1 = VBR (A1) = adres procedury przerwania A1 = A1 + 1 Adres 256 10
Przykład użycia rejestrów adresowych (2) y = A0 + A1 4B A0 = adres 1 A1 = adres 2 A3 = adres 3 D0 = 0 y Dana 1 Dana 1 Dana 2 Dana 2 n komórek A0, A1 n komórek A = adres 2 ACC = (A) A = adres 1 ACC = ACC + (A) A = adres 3 (A) = ACC 4B Dana n Dana n (A3, D0) = (A1, D0) + (A2, D0) 11
Model programowy procesora ColdFire Rejestry dostępne w trybie superużytkownika 20 0 19 0 0 16 BA31 BA30 VAL IPSBAR INTERNAL PERIPHERAL SYSTEM BASE ADDRESS REGISTER 12
Rejestry mikrokontrolera MCF5282 Liczba ujemna w kodzie U2 U2 przeniesienie/pożyczka NKB przeniesienie/pożyczka 13
Instrukcja dodawania 14
Instrukcja porównująca argumenty 15
Instrukcja skoku warunkowego 16
Moduł arytmetyczny EMAC (1) Enhanced Multiply-ACcumulate Unit 17
Moduł arytmetyczny EMAC (2) 18
Moduł portów wejścia-wyjścia (General Purpose I/O module) 19
Moduł portów I/O (1) 20
Moduł portów I/O (2) Zewnętrzne magistrale danych i adresowe 21
Moduł portów I/O (3) Wyprowadzenie skonfigurowane jako DebugDATA oraz Status bits po restarcie procesora 22
Rejestry sterujące PnPAR - rejestr kontrolujący przeznaczenie portu DDRn - Rejestr kontrolujący kierunek sygnałów portu I/O PORTn - rejestr kontrolujący stan wyprowadzeń wyjściowych PORTnP - rejestr odwzorowujący stan wyprowadzenia I/O SETn/CLRn - Rejestr służący do ustawiania/zerowania przerzutnika wyjściowego 23
Schemat blokowy portu I/O Port I/O PORTn odczyt PORTn zapis D SETn Q D Q DDRn CLRn Clk Clk Clk PORTnP odczyt stanu logicznego wyprowadzenia I/O 24
Przykładowe rejestry sterujące modułu I/O 25
Podłączenie wyświetlacza LCD 26
Port przerwań zewnętrznych (EPORT) 27
Tablica wektorów przerwań 28
Zakresy napięć wejściowych 29
Moduł generatora sygnału zegarowego (Clock Module) 30
Modułu generatora sygnału zegarowego x 4-18 31
Kamerton 32
Generator z zamkniętą pętlą fazową PLL Phase-Locked Loop (PLL) U D 33
Rejestry sterujące modułem PLL Blokada pętli f < 0.0075 * fclk Utrata synchronizacji f > 0.015 * fclk 34
Częstotliwość sygnału zegarowego fsys * 2 ***(MFD 2)+ /2)2RFD 88 Mhz 28 *(MFD / 2RFD fsys == fref Mhz = 64+MHz 35
Moduł transceivera szeregowego UART (Universal Asynchronous Receiver/Transmitter module) 36
Transceiver UART Rejestr przesuwny D0-D7 Nadajnik TxD Clk D0-D7 Odbiornik RxD Clk 37
Ramka danych transmitera UART Mark Space 38
Kabel null modem EIA 232 39
Dodatkowe linie sterujące Hardware Flow Control 40
Pełny kabel null modem 41
Sygnały złącza zgodne ze standardem EIA232 42
Poziomy napięć określone przez standard EIA 232 Wyjście procesora Standard EIA 232 43
Konwerter poziomów napięć MAX 232 (5 V) MAX 3232 (3,3 V) CD Carried Detect RI Ring Indicator 44
Moduł transmitera procesora ColdFire UART 0 UART 2 45
Interfejs modułu transmitera 46
Źródło sygnału zegarowego Nadajnik odpowiedzialny jest za generowanie ramek zgodnych ze standardem EIA232 (bit startu, 5-8 bitów danych, opcjonalny bit parzystości, bity stopu). Odbierane dane są próbkowane na narastającym zboczu zegara. Jeżeli długość ramki się nie zgadza ustawiona jest flaga FE. Jeżeli nie zgadza się parzystość ustawiana flaga jest PE. flaga OE ustawiana jest, gdy przepełni się bufor odbiorczy lub FIFO. flaga RB ustawiana jest, gdy odebrany jest sygnał Receiver Break. 47
Przykład obliczenia dzielnika sygnału zegarowego Baudrate = 19 200 fclk = 66 Mhz Divider = 107,421875 d 0x6B UBG1n = 0x00, UBG2n = 0x6B 48
Rejestry modułu UART UCR[MISC] = 001b 49
Rejestry modułu UART 50
Rejestr sterujący UMR1n 51
Rejestr statusowy USRn 52
Przebiegi sterujące nadajnikiem wyjście TxD '01' tr. wł. UCRn '1' tr. ready wew. syg. sterujące wejście wyjście 53
Przebiegi sterujące odbiornikiem wejście RxD '01' rec. wł. UCRn Flaga RxRDY Flaga FFULL wew. syg. sterujące Flaga OE Flagi RB, FE, PE tracą ważność Reset Error Status (UCRn) 54
Tryby diagnostyczne modułu UART CF PC 55
Rejestr sterujący UMR2n 56
Przerwania generowane przez moduł UART, transmisja DMA (1) wybór przerwania: RxRDY/FFULL narastające zbocze na linii /CTS wykryto sygnał przerwy RxRDY lub FFULL (UMR1x) bufor nadajnika wolny 0 dana w buforze FIFO 1 bufor FIFO zapełniony 57
Tablica wektorów przerwań 58
Wyprowadzenia modułu UART 59
Konfiguracja wyprowadzeń modułu UART 60
Przerwania generowane przez moduł UART, transmisja DMA (2) MISC=0x010 MISC=0x011 IACKLPRn=UART_IRQ, adres IRQ w tab. IRQ COS / DB / FFUL/RxRDY / TxRDY IRQ dla UISRn[cos]? RCS=1101, TCS=1101 IRQ od RxRDY, czy FFULL? Sterowanie flagą ERR PM=10 brak kontroli parzystości B/C=11 ramka 8 bitowa CM=00, tryb normalnej pracy SB=0111, pojedyncza długość TC=01, RC=01 włącz TxD oraz RxD Konfiguracja wprowadzeń TxD/RxD oraz UBG1n/BG2n 61
Timery procesora MCF528x (1) Moduł timera PIT (Programmable Interrupt Time Module) (2) Moduł timera GPT (General Purpose Timer Module) (3) Moduł timera DMA (DMA Timer Module) (4) Moduł licznika WatchDog 62
Moduł timera PIT (Programmable Interrupt Timer Module) 63
Schemat blokowy modułu timera PIT 2-65636 64
Rejestry sterujące PIT0 - PIT3 65
Rejestr sterujący oraz statusowy 66
Tryby pracy timera PIT 67
Automatyczne przeładowanie timera 0xFFFF PMR 0x8FFF 0x0000 PIF=1 jeżeli PITcounter = 0x0000 PCSRn [RLD] = 0 PCSRn [RLD] = 1 PIF=1 jeżeli PITcounter = 0x0000 PIT timer = PMR 68
Czas odmierzany przez timer PIT fclk = 66 MHz => 120 ns 130 s 69
Tablica wektorów przerwań 70
Moduł timera GPT (General Purpose Timer Module) 71
Możliwości timera GPT Input capture pomiar długości sygnałów doprowadzonych do wejścia IOSn. Minimalna długość mierzonego impulsu musi być większa od dwóch taktów zegara. Output compare generacja przebiegów o określonej polaryzacji, częstotliwości lub długości (ustawienie,negacja lub wyzerowanie wyprowadzenia sterującego). Event counter zliczanie zdarzeń (zboczy) o określonej polaryzacji. Gated time accumulation akumulacyjne zliczanie czasu trwania doprowadzonych impulsów 72
Schemat blokowy timera GPT A/B 1-128 Input Capture Output Compare zew. zegar incrementujący licznikgpt 73
Sygnały wejścia/wyjścia timera GPT A/B 74
Rejestr danych portu timera GPT 75
Rejestr kierunku danych portu timera GPT 76
Rejestry sterujące timerami GPTA/GPTB 77
Rejestr stanu timera GPT 78
Rejestr stanu PA 79
Rejestr sterujący GPTSCR1 80
Rejestr sterujący GPTCLT1 81
Rejestr sterujący GPTCLT2 82
Rejestr sterujący GPTSCR2 83
Inne rejestry timera GPT GPTCNT 16-bit GPT Counter Register GPTC0 GPTC3 16-bit GPT Channel Registers GPTPACNT 16-bit Pulse Accumulator Counter GPTPACTL 8-bit Pulse Accumulator Control Register GPTPAFLG 8-bit Pulse Accumulator Flag Register GPTIOS 8-bit GPT IC/OC Select Register GPTCFORC 8-bit Compare Force Register GPTOC3M 8-bit Output Compare 3 Mask Register GPTOC3D 8-bit Output Compare 3 Data Register 84
Tablica wektorów przerwań 85
Generacja przebiegu prostokątnego TOF =1 0xFFFF 0xBFFF 0x7FFF 0x4FFF 0x0000 CnF = 1 OCn 86
Modulacja szerokości impulsów PWM (1) Pulse Width Modulation Wypełnienie D = szerokość impulsu / okres impulsu 87
Modulacja szerokości impulsów PWM (2) Pulse Width Modulation 88
Implementacja PWM z użyciem GPT Kanał 0 modułu GPT A okres D = 100 % OC0 = '1' OC0 = '0' D = 25 % 0x3FFF D = 50 % 0x7FFF 0 D = 75 % 0xBFFF 0xFFFF 89
Moduł timera DMA (DMA Timers) 90
Schemat blokowy timera DMA (DTIM0 - DTIM3) 91
Charakterystyka timera DMA Maksymalny okres timera 266521 s (~74 h) dla fclk=66 Mhz (dzielnik 16-bit, dzielnik 8-bit, licznik 32-bit), Minimalny okres timera 15 ns, Możliwość reakcji na zewnętrzne zdarzenia oraz generacji sygnału o kreślonym okresie, Możliwość zgłaszania przerwań oraz incjowania transferów DMA. 92
Zerowanie licznika DTCNn DTMRn [FRR] Free Run/Restart = 0 0xF...F DTRRn 0x0...0 DTMRn [FRR] Free Run/Restart = 1 93
Rejestry konfiguracyjne 94
Rejestr sterujący timerem DMA 95
Pomocniczy rejestr sterujący 0 => IRQ 1 => DMA 96
Rejestr statusowy 97
Tablica wektorów przerwań 98
Przykład DTMRn[PS] = 0x00-0xFF <= prescaler 1-255 fclk = 66 MHz prescaler wstępny = 16 DTMRn[PS] = 0x7F <= prescaler równy 127 Rejestr porównawczy = 0xFBC5 DMA timer time-out = 1/66 Mhz * 16 * (127+1) * 64453 = 1.999996 99
Moduł sterujący sygnałem resetujący (Reset Controller Module) 100
Schemat blokowy modułu sterującego sygnałem reset min. 4 cykli zegara ok. 512 cykli zegara flagi źródła uaktywniającego dostępne są RSR Jeżeli Vcc < VLVD (2.7 V) 101
Rejestr sterujący 102
Moduł timera Watchdog (Watchdog Timer Module) 103
Timer Watchdog (1) Watchdog (z ang. "Czuwający pies") to urządzenie, najczęściej układ elektroniczny, chroniący system mikroprocesorowy przed zbyt długim przebywaniem w stanie zablokowania (zawieszeniem się). Jego działanie polega na zresetowaniu procesora w przypadku nieotrzymania od niego sygnału w określonym czasie. 16-bitowy licznik dekrementowany sygnałem zegarowym podzielonym przez 8192 (2^13). 66.000.000 Hz / 8192 = 8056 Hz (124 µs 8.13 s) 104
Timer Watchdog (2) 1. wpis 0x5555 2. wpis 0xAAAA 105
Rejestry modułu Watchdog 106