Ćw. 1 Wprowadzenie: Obsługa mikroprocesorowych modułów, podstawy techniki programowania, obsługa operacji WE/WY

Podobne dokumenty
Systemy Pomiarowe Wielkości Fizycznych Ćw. 9. Ćw.9 Badanie mikroprocesorowego przetwornika A/C

Mikrosystemy Pomiarowe i Procesory Sygnałowe

Mikrosystemy Pomiarowe i Procesory Sygnałowe

ĆWICZENIE. TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

Start Bity Bit Stop 1 Bit Par Rys. 1

1.2. Architektura rdzenia ARM Cortex-M3...16

Ćw. 10 Badanie toru przetwarzania C/A w mikrokontrolerach analogowych

Oprogramowanie Systemów Pomiarowych

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

Architektura mikrokontrolera MCS51

Architektura mikrokontrolera MCS51

Szkolenia specjalistyczne

dokument DOK wersja 1.0

APPLICATION OF ADUC MICROCONTROLLER MANUFACTURED BY ANALOG DEVICES FOR PRECISION TENSOMETER MEASUREMENT

2. Architektura mikrokontrolerów PIC16F8x... 13

Instytut Teleinformatyki

Mikrokontrolery w mechatronice. Wykład 4

Wstęp. do języka C na procesor (kompilator RC51)

1. Wstęp Różnice pomiędzy mikrokontrolerami ST7 a ST7LITE Rdzeń mikrokontrolerów ST7FLITE... 15

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

8-bitowe mikrokontrolery ADuC firmy Analog Devices w układach pomiarowych

Instytut Teleinformatyki

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Wstęp Architektura... 13

Instytut Teleinformatyki

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

Politechnika Warszawska

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Ćw. 12. Akwizycja sygnałów w komputerowych systemach pomiarowych ( NI DAQPad-6015 )

TECHNIKA MIKROPROCESOROWA

Generator przebiegów pomiarowych Ex-GPP2

ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna

Podstawy budowy wirtualnych przyrządów pomiarowych

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

ZL5ARM. Zestaw uruchomieniowy dla mikrokontrolerów LPC2119/2129 (rdzeń ARM7TMDI-S) Kompatybilność z zestawem MCB2100 firmy Keil

MIKROPROCESORY architektura i programowanie

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy

Programowanie sterowników przemysłowych / Jerzy Kasprzyk. wyd. 2 1 dodr. (PWN). Warszawa, Spis treści

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

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

1. Opis. 2. Wymagania sprzętowe:

Programowanie Układów Logicznych kod kursu: ETD6203. Szczegóły realizacji projektu indywidualnego W dr inż.

Temat: System przerwań, liczniki i wyświetlacz w STRC51. Ćwiczenie 3.

Struktura QSM (Queued Serial Module)

NX700 PLC

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Kurs Podstawowy S7. Spis treści. Dzień 1

Kod produktu: MP01611

Ćwiczenie 9 Częstościomierz oparty na µc 8051(8052)

MIKROKONTROLERY I MIKROPROCESORY

IIPW_SML3_680 (Z80) przewodnik do ćwiczeń laboratoryjnych

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

System mikroprocesorowy i peryferia. Dariusz Chaberski

MIKROPROCESORY architektura i programowanie

Kurs STARTER S5. Spis treści. Dzień 1. III Budowa wewnętrzna, działanie i obsługa sterownika (wersja 0504)

TECHNIKA MIKROPROCESOROWA

Parametryzacja przetworników analogowocyfrowych

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC2100, które można zastosować w zestawie ZL3ARM.

Instytut Teleinformatyki

Obługa czujników do robota śledzącego linie. Michał Wendland czerwca 2011

1.Wstęp. 2.Generowanie systemu w EDK

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Architektura komputerów

NX70 PLC

LABORATORIUM nr 2. Temat: Obsługa wyświetlacza siedmiosegmentowego LED

Zerowanie mikroprocesora

Temat: System przerwań, liczniki i wyświetlacz w STRC51. Ćwiczenie 3.

Instrukcja do oprogramowania ENAP DEC-1

ZAAWANSOWANY TIA. Spis treści

ZL25ARM. Płyta bazowa dla modułów diparm z mikrokontrolerami STR912. [rdzeń ARM966E-S]

2. Code Composer Studio v4 zintegrowane środowisko projektowe... 41

Architektura Systemów Komputerowych. Bezpośredni dostęp do pamięci Realizacja zależności czasowych

Metody obsługi zdarzeń

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej. Instrukcja do zajęć laboratoryjnych z przedmiotu:

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

Spis treści. Dzień 1. I Rozpoczęcie pracy ze sterownikiem (wersja 1707) II Bloki danych (wersja 1707) ZAAWANSOWANY TIA DLA S7-300/400

1. Tworzenie nowego projektu.

Systemy Wbudowane. Arduino, AVR. Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler. Mikrokontroler Platforma Arduino. Arduino IDE: Arduino C:

Zastosowania mikrokontrolerów w przemyśle

ZL6ARM Zestaw uruchomieniowy dla mikrokontrolerów LPC213x. Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC213x

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Budowa mikrokontrolera UC3C. - 3 rodzaje obudów

Mini Modbus 1AI. Moduł rozszerzający 1 wejście analogowe, 1 wyjście cyfrowe. Wyprodukowano dla

1. Podstawowe wiadomości Możliwości sprzętowe Połączenia elektryczne Elementy funkcjonalne programów...

Technika Cyfrowa. Badanie pamięci

Konfigurowanie sterownika BC8150 firmy Beckhoff wprowadzenie

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Kompilator języka C na procesor 8051 RC51 implementacja

Program ćwiczenia: SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH - LABORATORIUM

Research & Development Ultrasonic Technology / Fingerprint recognition

Spis treści. Dzień 1. I Konfiguracja sterownika (wersja 1410) II Edycja programu (wersja 1406) III Środowisko TIA Portal (wersja 1410)

LABORATORIUM STEROWNIKÓW MIKROPROCESOROWYCH

INSTRUKCJA OBSŁUGI systemu pomiarowego

2. PRZERZUTNIKI I REJESTRY

Transkrypt:

Ćw. 1 Wprowadzenie: Obsługa mikroprocesorowych modułów, podstawy techniki programowania, obsługa operacji WE/WY Problemy teoretyczne: Podstawy architektury mikrokontrolerów analogowych i mikrokonwerterów pamięć programu, pamięć danych, interfejs komunikacyjny RS-232, moduły programowanych liczników/dzielników, system przerwań. języki programowania mikrokontrolerów analogowych, środowisko programowe, emulatory programowe i sprzętowe obsługa operacji WE/WY, przechwytywanie strumieni danych przy pomocy terminala Program ćwiczenia: 1. Uruchomić mikrokomputer PC system operacyjny WINDOWS 7 i zalogować się w systemie jako użytkownik student (bez hasła). 2. W folderze..\mikrosys\ założyć unikalny folder dla studenckiej grupy laboratoryjnej (tylko w tym folderze można dokonywać zapisów i modyfikacji własnych plików). 3. Zapoznać się z podstawowymi własnościami mikrokonwerterów przeglądając odpowiednie pliki kart katalogowych dostępnych w zakładce Karty katalogowe aparatury Laboratorium A208 (pliki: AduC8xx.pdf): multiplekser kanałów analogowych, układ T-H, przetwornik A/C, napięcie referencyjne przetwornika, metody transferu danych uzyskiwanych z przetwornika, kanał monitorowania temperatury układu mikrokonwertera, pamięć (organizacja pamięci programu, pamięci danych, pamięci zewnętrznej, rodzaje pamięci, procesor rdzeniowy 8051, podstawowe własności, zegar systemowy, liczniki/dzielniki, porty WE/WY, moduły dodatkowe, zasilanie, urządzenia peryferyjne (moduły transmisji szeregowej, transmisji I 2 C, moduł nadzorcy systemu, moduł kontrolera zasilania), zastosowania modułu mikrokonwertera. 4. Zapoznać się z modułem typu EVAL-KIT ADuC8xx (zasilanie, konfigurowanie pamięci, podłączanie zewnętrznych analogowych sygnałów testowych: sinus, trójkąt, prostokąt)

t 0 1 2 3 4 5 6 7 khz x(t) y(t) U DC A x Reg. f x x1 x10 x100 x1000 oscyloskop Generator / Częstościomierz moduł ADuC831 AI7 AI6 AI5 AI4 AI3 AI2 AI1 AI0 Sensor temp. U REF A GND T/H rdzeń 8051/52 A/C U REF 2.5V RAM zewn. 2kB mikrokomputer UART RS232 Rys. 1. Schemat blokowy układu testowania przetwornika A/C modułu mikrokonwertera ADuC8xx (a) & zwolnione (b) wciśnij (c) wciśnij (PSEN=1) (PSEN=0) (RESET=1) (PSEN=1) (d) zwolnij (e) zwolnij (PSEN=0) (PSEN=1) Rys. 2. Zasada wprowadzenia modułu ADuC8xx w tryb ładowania programu użytkownika (-RESET, - Serial_Download kolejność wciskania i zwalnia przycisków) 5. Uruchomić program komunikacyjny HyperTerminal (ADuC8xx.ht), dostosować port oraz parametry transmisji do współpracy z minimodułem: - kanał komunikacyjny COM1: parametry transmisji (prędkość transmisji- 9600bitów/sek, 8 bitów danych, parzystość/brak, 1 bit stopu, brak sterowania przepływem danych, bufor FIFO z zapewnioną zgodnością z UART em 16550. - konfiguracja terminala ANSI. 6. Uruchomić i zapoznać się z obsługą pakietu programowego μvision2 do edycji, kompilowania, konsolidowania i uruchamiania aplikacji użytkownika w środowisku C- Keil (GS51.pdf) 7. W środowisku μvision2 zweryfikować parametry przetwarzania projektu (kompilacja, konsolidacja, hex-konwersja) stosując poniższe parametry: - opcje kompilacji C51 CD SB DB OE ROM(Small) Large - opcje konsolidacji BL51 NOOL RS(256) PL(68) PW(78) CO(0) 8. Załadować i uruchomić własny projekt Cw1_8xx.uv2 zawierający pojedynczy moduł programu Cw1_8xx.c.

W pliku źródłowym ustalić sekcje: definicji typu mikrokroprocesora zakresu dostępnych zasobów pamięci RAM/ROM zmiennych predefiniowanych zmiennych globalnych programu procedur WE/WY (#include <stdio.h>) aktywowania kanału komunikacynego np.: CFG831=0x11; // Uaktywnij pamiec 2kB pamieci RAM jako XDATA // KONFIGURACJA portu transmisji szeregowej - UART T3CON=0x085; // specjalizowany licznik L3 T3FD= 0x08; // szybkość transmisji 9600baud SCON = 0x052; printf("%ctestowanie PRZETWORNIKA A/C \n", 0x0C); 9. Przeprowadzić proces załadowania opracowanego modułu programowego (downloading) *.hex przy pomocy programu WSD.EXE (ustalić parametry downloadingu związane z parametrami kanału komunikacyjnego oraz zakresu procedur czyszczenia pamięci FlashEE). 10. Przetestować działanie: procedury restartu mikrokonwertera (wciśnięcie przycisku RESET), instrukcji scanf i wprowadzanie danych w zapisie: tekstowym i całkowitoliczbowym w postaci dziesiętnej i heksadecymalnej, instrukcji printf i wyprowadzanie danych w zapisie: tekstowym i całkowitoliczbowym w postaci dziesiętnej i heksadecymalnej, obsługi przycisku kontrolnego INT0 (powiązać działanie przycisku zobsługą przerwania sprzętowego) obsługi jednobitowych wskaźników typu LED

Rys. 3. Schemat blokowy mikrokonwertera AduC 831. f sampl sygnał wyzwalający przetwornik A/C Rys. 4. Schemat blokowy zegara/licznika-l2 pracującego w 16-bitowym trybie auto-przeładowania i generującego sygnał wyzwalania przetwornika A/C

Przykładowy program obsługi mikrokonwertera: (kolorem szarym zaznaczono linie źródłowe związane z zadawaniem częstości próbkowania) #include <ADuC831.h> // predefiniowane symbole ADuC831 #include <stdio.h> #define SENSTEMP 8 // kanal 8 #define DMASTOP 15 // DMA-> STOP #define DZ 18 // dzielnik Licznika2, zadawanie częstotliwości próbkowania // ZMIENNE DEFINIOWANE W WEWNETRZNEJ PAMIECI RAM idata int xdata *ptr; idata int num; bdata bit C; sbit P32 = P3^2; // linia INT0 = Port3.2 - przelacznik Int0 sbit LED = P3^4; // dioda LED idata unsigned char ch; // numer przetwarzanego kanalu xdata int DMASTART[1024]; // segment pamieci dla przeslan DMA // Procedura obslugi przerwania generowanego sygnalem ADCI z przetw. ADC void end_of_adc(void) interrupt 6 { // int_6*8+3 = 51dec = 33hex = ADCI TR2=0; // zakoncz wyzwalanie przetwornika C=0; // zeruj wskaznik // Procedura obslugi przerwania generowanego sygn. zewnetrznym INT0 // W obsludze tego przerwania realizujemy pomiar temperatury void interrupt_0 () interrupt 0 { int T; ADCCON1 = 0x80; ADCCON2 = SENSTEMP; for (T=0; T<100; T++) ; SCONV = 1; while (!ADCI); T=((ADCDATAH & 0x0F) * 256) + ADCDATAL; ADCCON1=0x00; printf ( "\ntemperatura binarnie = %u bit",t ); // wlaczenie zasilania przetwornika // wlaczenie sensora temp. // opoznienie programowe // rozkaz pojedynczej konwersji // oczekiowanie na zakonczeniu konwersji SCCONV<=0 // odbior wyniku przetwarzania // wylaczenie zasiolania przetwornika // wyswietlenie binarnej wartosci wyniku przetwarzania A/C main() { int i, DMACOUNT; CFG831=0x11; // Uaktywnij pamiec 2kB pamieci RAM jako XDATA // KONFIGURACJA portu transmisji szeregowej - UART T3CON=0x085; // specjalizowany licznik L3 T3FD= 0x08; // szybkość transmisji 9600baud SCON = 0x052; printf("%ctestowanie PRZETWORNIKA A/C \n", 0x0C); printf("\nwprowadz numer kanalu przetwarzania A/C (0-15):?"); // Numer przetwarzaniego kanalu scanf ("%bd", &ch); ch&=0xf; // liczba: od 0 do 14 printf("\npodaj liczbe probek sygnalu pomiarowego DMACOUNT:?"); // Liczba próbek mierzonego sygnału scanf ("%u", &DMACOUNT); printf("\nwybrales kanal nr=%bd i N=%d probek sygnalu badanego", ch, DMACOUNT); // PRE-KONFIGURACJA zewnetrznej RAM dla DMA w pojedynczym kanale for(i=0; i<dmacount; i++) DMASTART[i] = ch << 12; DMASTART[i]=DMASTOP << 12; // Zancznik konca bloku danych pomiarowych: Stop DMA for (i=0; i<=dmacount; i++) { if (i % 8 ==0) printf("\n"); printf("%3d=%04x ", i, DMASTART[i] ); // Wydruk kontrolny prekonfigurowanego obszaru RAM // KONFIGURACJA ADC dla konwersji typu DMA... DMAL=0; // adres inicjujacy kanal operacji DMA DMAH=0;

DMAP=0; TL2,TH2=0; RCAP2L=0x10000-DZ; RCAP2H=(0x10000-DZ)>>8; ADCCON1=0x9E; ADCCON2=0x40; C=1; EA=1; EADC=1; TR2=1; // koniecznie w takim porzadku: DMAL, DMAH, DMAP) // Fsys=11059200Hz // Tosc=12/Fosc -> 1.085us // okres probkowania = T2 =(DZ*1.085us) // [RCAP2H,RCAP2L]= 65536 - DZ // tryb zasilania -> normaly // tryb przesylania danych -> DMA // wyzwalanie przetwornika -> Timer2 // lokany wskaznik warunku // globalne zezwolenie obslugi przerwan // zezwolenie obslugi przerwan przetwornika ADC // zezwolenie na prace licznika L2 // Trwa konwersja i przesylanie danych DMA // kiedy transmisja DMA jest kompletna, przetwornik ADC generuje // przerwanie i zeruje bit C while (C); // wynik przetwarzania ADC jest juz dostepny w RAM EA=0; // wstrzymana obsluga przerwan - globalnie EADC=0; // wstrzymana obsluga przerwan od przetwornika A/C ADCCON1=0x00; // zasilanie przetwornika wylaczone for(i=0; i<=dmacount; i++) { // wydruk kontrony zawartosci pamieci RAM if (i % 8== 0) printf("\n"); printf("%3d=%04x ", i, DMASTART[i] ); // wydruk kontrolny w postaci slupka danych for(i=0; i<=dmacount; i++) printf("\n%4u ", DMASTART[i] & 0x0FFF ); printf("\n"); IT0=1; // zezwolenie na obsluge przerwania 0 EA=1; // zezwolenie na obsluge przerwan EX0=1; // zezwolenie na obsluge przerwania zewnetrznego INT0 (przycisk) printf("\nczekam na INT0\n"); while(1) { for (i=0; i<30000; i++) ; LED = ~LED ; // KONIEC // Test przetwarzania w trybie pojedynczej konwersji A/C // opoznienie programowe // negacja stanu wysterowania diody LED na przeciwny

PRZYKŁADOWE WYNIKI Panel aplikacji terminala znakowego TESTOWANIE PRZETWORNIKA A/C Wprowadz numer kanalu przetwarzania A/C (0-15):?0 Podaj liczbe probek sygnalu pomiarowego DMACOUNT:?128 Wybrales kanal nr=0 i N=128 probek sygnalu badanego 0=0000 1=0000 2=0000 3=0000 4=0000 5=0000 6=0000 7=0000 8=0000 9=0000 10=0000 11=0000 12=0000 13=0000 14=0000 15=0000... 112=0000 113=0000 114=0000 115=0000 116=0000 117=0000 118=0000 119=0000 120=0000 121=0000 122=0000 123=0000 124=0000 125=0000 126=0000 127=0000 128=F000 0=05C9 1=0535 2=04A7 3=0424 4=03AB 5=033F 6=02E4 7=029D 8=0262 9=0236 10=021B 11=020A 12=0220 13=0242 14=0271 15=02B1... 120=038C 121=0400 122=0482 123=050E 124=05A1 125=0639 126=06D3 127=0000 128=F000... 1154 1294 1441 Przykłady inicjalizacji portów transmisji szeregowej dla wybranych typów mikrokontrolerów analogowych #ifdef ADuC831 CFG831=0x01; // Uaktywnij pamiec 2kB pamieci RAM jako XDATA T3CON=0x085; // KONFIGURACJA portu transmisji szeregowej - UART T3FD=0x08; SCON=0x052; #ifdef ADuC812 // KONFIGURACJA portu transmisji szeregowej - UART SCON = 0x52; // 8bit, nieparzystosc, 1 bit stopu TMOD = 0x20; // konfiguracja Timer1.. TH1 = 0xFD; //..dla predkosci transmisji 9600[b/s] (baud) TR1 = 1; #ifdef ADuC834 CFG834=0x01; T3CON = 0x82; T3FD = 0x12; SCON = 0x52; #ifdef ADuC824 RCAP2H=0xFFh; RCAP2L=-5; // (close enough to 9600baud) TH2=0xFFh; TL2=-5; SCON=0x52h; T2CON=0x34h; // Uaktywnij pamiec 2kB pamieci RAM jako XDATA // config UART for 9830baud