Funkcje czasowe (multifunction timer)

Podobne dokumenty
SYSTEMY MIKROPROCESOROWE

Budowa linii asemblera

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

HC05 DAWID PIOTROWSKI

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Układy czasowo-licznikowe w systemach mikroprocesorowych

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

SYSTEMY MIKROPROCESOROWE W AUTOMATYCE. Projekt bariery świetlnej.

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

Układy czasowe / liczniki (timers/counters)

Struktura QSM (Queued Serial Module)

SYSTEM PRZERWAŃ ATmega 32

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

Układy czasowo-licznikowe w systemach mikroprocesorowych

Programowanie mikrokontrolerów. 5 grudnia 2007

Uproszczony schemat blokowy zespołu 8-bitowego timera przedstawiono na rys.1

Elementy oprogramowania sterowników. Instrukcje podstawowe, funkcje logiczne, układy czasowe i liczenia, znaczniki

Wbudowane układy peryferyjne cz. 2 Wykład 8

Struktura mikrokontrolera MC68332

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

Jacek Szlachciak. Urządzenia wirtualne systemu wieloparametrycznego

Moduł czujników IR. Tomasz Kubiec Marcin Krawiec

Metody obsługi zdarzeń

Przerwania, polling, timery - wykład 9

Wstęp Architektura mikrokontrolerów 68HC08

Instytut Teleinformatyki

Przerwanie. Źródła przerwań

Sterowniki programowalne

MC68HC11 CPU. Opracował: Piotr Skotniczny

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Sterowniki Urządzeń Mechatronicznych laboratorium. Ćw. 3: Timer v1.0

AGH Akademia Górniczo- Hutnicza w Krakowie Katedra Elektroniki WIET

Systemy wbudowane. Wprowadzenie. Wprowadzenie. Mikrokontroler 8051 Budowa

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Programowany układ czasowy APSC

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

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

SYSTEM PRZERWA Ń MCS 51

Podstawy programowania PLC w języku drabinkowym - ćwiczenie 5

PROGRAMOWALNE SYSTEMY MECHATRONIKI

Programowanie mikrokontrolera 8051

Ćwiczenie 1 Wędrujące światełko

równoległe (w wersji 4-, 8- i 16-bitowej). Same wyświetlacze ze względu na budowę i możliwości możemy podzielić na dwie grupy:

Programowany układ czasowy

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Hardware mikrokontrolera X51

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-"

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

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

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

LITEcomp aplikacje Zdalnie sterowany włącznik ośmiu urządzeń

Instrukcja pomocnicza TELMATIK do licznika / timera H8DA

PROGRAMOWANIE Z LICZNIKIEM CYKLI

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

Instrukcja obsługi elektronicznego licznika typu 524. Model 524. Licznik sumujący i wskaźnik pozycji typu Opis. 1. Opis

SAIA PROGRAMOWALNY STEROWNIK PLC

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Sterowniki Programowalne (SP) Wykład #4

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Pamięci EEPROM w systemach mikroprocesorowych, część 2

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

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

Standardowe bloki funkcjonalne

Elastyczne systemy wytwarzania

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

Licznik rewersyjny MD100 rev. 2.48

Podstawy Techniki Mikroprocesorowej Laboratorium

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

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

Urządzenia peryferyjne procesora ColdFire

APLIKACJA COMMAND POSITIONING Z WYKORZYSTANIEM KOMUNIKACJI SIECIOWEJ Z PROTOKOŁEM USS W PRZETWORNICACH MDS/FDS 5000

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

Wstęp Architektura... 13

1. Struktura urządzeń z wykorzystaniem mikrokontrolerów...13

UKŁADY CZASOWE PROGRAMOWANIE Z LICZNIKIEM CYKLI FALA PROSTOKĄTNA

Przerwania w architekturze mikrokontrolera X51

Część I - Sterownik przerwań 8259A i zegar/licznik 8253

Politechnika Warszawska

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Sterowanie multipleksowe 4-cyfrowego wyświetlacza siedmiosegmentowego w oparciu o system przerwao mikrokontrolera ATmega16 w języku Asembler

Programowalne układy logiczne

LABORATORIUM TM Cel laboratorium

Programowanie mikrokontrolerów 2.0

MSW8-LPM. wersja 0.1 (wersja robocza) Dokumentacja użytkownika

Przerwania w systemie mikroprocesorowym. Obsługa urządzeo wejścia/wyjścia

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja

Technika mikroprocesorowa I Wykład 2

Waga Libra wersja 4.1x Modbus TCP

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

Timery w mikrokontrolerach STM32F3

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

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

Programowanie mikrokontrolerów. 3 stycznia 2008

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Model programowy i zestaw instrukcji M68HC11

Układy czasowo-licznikowe w systemach 80x86

organizacja procesora 8086

Transkrypt:

Funkcje czasowe (multifunction timer) TO (Timer Overflow) przerwanie cykliczne przy przepełnieniu licznika TCNT RT (Real Time) przerwanie cykliczne o programowalnym okresie COP (Computer Operates Properly watchdog) sprz etowy nadzór poprawnej pracy programu OC (Output Compare) generowanie sygnałów przez porównanie licznika TCNT z programowalnym rejestrem (4-5 kanałów) IC (Input Capture) zapami etywanie stanu TCNT przy wybranym zboczu sygnału wejściowego (3-4 kanały) PA (Pulse Accumulator) zliczanie zdarzeń zewn etrznych lub bramkowanego sygnałem zewn etrznym zegara wewn etrznego MW-ZPCiR-ICT-PWr 1

Opóźnienia z TO (polling) * definicje stalych PRE16 EQU %11 bity PR1:PR0 - podzial przez 16 TOF EQU %10000000 maska bitu TOF w TFLG2 COUNT EQU 20 zadana ilosc przepelnien * Dla czestotliwosci zegara E = 2MHz (T_e = 0.5 [us]): * T = 20 * (16 * 2ˆ16 * 0.5) [us] = 10.48576 [s] * inicjalizacja wstepnego dzielnika dla TCNT (PRx w TMSK2) LDAA #PRE16 podzial E przez 16 STAA TMSK2 PR1:PR0 ************************************************************* * petla oczekiwania na zadana ilosc przepelnien LOOP LDAB #COUNT licznik przepelnien w AccB LDAA #TOF maska bitu TOF w AccA TOLOOP BITA TFLG2 sprawdzenie flagi TOF BEQ TOLOOP oczekiwanie na przepelnienie STAA TFLG2 kasowanie flagi TOF DECB odliczanie COUNT razy BNE LOOP czekanie na wyzerowanie licznika * dalszy ciag programu po opoznieniu JSR ZADANIE wywolanie podprogramu BRA LOOP powrot do czekania MW-ZPCiR-ICT-PWr 2

Przerwania cykliczne (TOI) ************************************************************* * ustawienie licznika przerwan w pamieci RAM LDAA #COUNT zadana liczba powtorzen STAA COUNTER ustawienie licznika * inicjalizacja przerwan od TO LDAA #TOF maska bitu TOF STAA TFLG2 kasowanie flagi TOF STAA TMSK2 zezwolenie na przerwanie TOI CLI odblokowanie przerwan w CPU (CCR) * petla bez wyjscia (reszta w obsludze przerwania) DLOOP BRA DLOOP * procedura obslugi przerwania TOI TOISVC DEC COUNTER odliczanie przerwan BNE TOEXIT wyjscie z obslugi TOI * tu: wykonanie wlasciwego zadania cyklicznego JSR ZADANIE wywolanie podprogramu LDAA #COUNT zadana liczba powtorzen STAA COUNTER ustawienie licznika * zgaszenie flagi przerwania TOEXIT LDAA #TOF maska bitu TOF w AccA STAA TFLG2 kasowanie flagi TOF RTI powrot z przerwania MW-ZPCiR-ICT-PWr 3

Programowalne przerwania cykliczne (RTI) * definicje stalych RTD8 EQU %11 bity RTR1:RTR0 - podzial przez 8 RTIF EQU %10000000 maska bitu RTIF w TFLG2 * Dla czestotliwosci zegara E = 2MHz (T_e = 0.5 [us]): * T = (8 * 2ˆ13 * 0.5) [us] = 32.768 [ms] * ustawienie dzielnika dla RTI (RTRx w PACTL) LDAA #RTD8 podzial E przez 8*2ˆ13 STAA PACTL RTR1:RTR0 * inicjalizacja przerwan RTI LDAA #RTIF maska bitu RTIF STAA TFLG2 kasowanie flagi RTIF STAA TMSK2 zezwolenie na przerwanie RTI CLI odblokowanie przerwan w CPU (CCR) * petla bez wyjscia (reszta w obsludze przerwania) DLOOP BRA DLOOP * procedura obslugi przerwania RTI RTISVC JSR ZADANIE wywolanie podprogramu * zgaszenie flagi przerwania LDAA #RTIF maska bitu RTIF w AccA STAA TFLG2 kasowanie flagi RTIF RTI powrot z przerwania MW-ZPCiR-ICT-PWr 4

Przerwania cykliczne z OC OC2F EQU %01000000 maska bitu OC2F w TFLG1 TIMDEL EQU 20000 stala dla opoznienia 10 [ms] * T = TIMDEL * T_e = (20000 * 0.5) [us] = 10 [ms] * przygotowanie pierwszego przerwania OC2 LDD TCNT odczyt licznika TCNT ADD #TIMDEL przesuniecie o 10 [ms] STD TOC2 przerwanie za ok. 10 [ms]! * odblokowanie przerwan LDAA #OC2F maska OC2F (i OC2I) STAA TFLG1 kasowanie flagi OC2F STAA TMSK1 odblokowanie OC2I CLI odblokowanie przerwan w CPU * petla bez wyjscia DLOOP BRA DLOOP * procedura obslugi przerwania OC2 OC2SVC JSR ZADANIE wywolanie podprogramu LDD TOC2 odczyt rejestru komparatora ADD #TIMDEL przesuniecie o 10 [ms] STD TOC2 nastepne przerwanie za 10 [ms] LDAA #OC2F maska bitu OC2F w AccA STAA TFLG1 kasowanie flagi OC2F RTI powrot z przerwania MW-ZPCiR-ICT-PWr 5

Generowanie przebiegu przy pomocy OC * inicjalizacja OC2 (PA6) LDAA #%01000000 OM2=0, OL2=1 - toggle STAA TCTL1 tryb pracy PA6 LDD TCNT odczyt licznika TCNT ADD HPERIOD zadany okres [us] STD TOC2 * odblokowanie przerwan LDAA #OC2F maska OC2F (i OC2I) STAA TFLG1 kasowanie flagi OC2F STAA TMSK1 odblokowanie OC2I CLI odblokowanie przerwan w CPU * petla bez wyjscia (lub inna petla glowna) DLOOP BRA DLOOP * procedura obslugi przerwania OC2 OC2SVC LDD TOC2 odczyt rejestru komparatora ADD HPERIOD przesuniecie o pol okresu STD TOC2 LDAA #OC2F maska bitu OC2F w AccA STAA TFLG1 kasowanie flagi OC2F RTI powrot z przerwania ORG RAM HPERIOD RMB 2 wartosc okresu [us] MW-ZPCiR-ICT-PWr 6

Pomiar czasu przy pomocy IC (1/2) * inicjalizacja pseudo-wektora przerwan LDAA #$7E kod JMP (EXT) STAA PVIC1 pseudo-wektor IC1 LDX #IC1SVC adres obslugi przerwania IC1 STX PVIC1+1 skok do obslugi przygotowany PWSTRT LDX #$1000 wskaznik bloku rejestrow LDAA #%00010000 EDG1B:EDG1A = 0:1 STAA TCTL2,X IC1 - zbocze narastajace LDAA #$FF STAA IC1MOD FF-IC1 wylaczone; 0-/; 1-\ CLR IC1FIN to nie koniec... BCLR TFLG1,X,$FB zerowanie IC1F BSET TMSK1,X,$04 wlaczenie przerwan IC1 (HW) CLI zezwolenie na przerwania w CPU WLOOP LDAA IC1FIN sprawdzenie flagi konca BEQ WLOOP petla oczekiwania na koniec SEI koniec impulsu, blokada przerwan * wyliczenie dlugosci w [us] LDD PWVAL ilosc taktow (0.5uS/takt) LSRD 16-bitowe dzielenie przez 2 BCC NORND zaokraglic? ADDD #1 tak! NORND BRA NORND wynik gotowy w AccD MW-ZPCiR-ICT-PWr 7

Pomiar czasu przy pomocy IC (2/2) * procedura obslugi przerwania IC1 IC1SVC LDX #$1000 adres bazowy bloku rejestrow INC IC1MOD $FF->0 => pierwsze, BNE TRAILE 0->1 => drugie zbocze * obsluga narastajacego zbocza LDD TIC1,X odczyt czasu STD PWVAL zachowany wynik * przestawienie IC1 na zbocze opadajce BCLR TCTL2,X,$30 EDG1B:EDG1A->0:0 BSET TCTL2,X,$20 EDG1B:EDG1A->1:0 BRA IC1OUT wyjscie z przerwania * obsluga opadajacego zbocza TRAILE LDD TIC1,X odczyt czasu SUBD PWVAL odstep od poprzedniego zbocza STD PWVAL zapis wyniku BCLR TCTL2,X,$30 wylaczenie IC1 INC IC1FIN flaga konca impulsu IC1OUT BCLR TFLG1,X,$FB kasowanie IC1F RTI powrot z przerwania ORG RAM PWVAL RMB 2 wynik pomiaru IC1MOD RMB 1 stan procesu pomiaru IC1FIN RMB 1 flaga zakonczenia pomiaru MW-ZPCiR-ICT-PWr 8

PWM przy pomocy OC (1/2) OC2F EQU %01000000 maska bitu OC2F w TFLG1 PWM1P EQU 10 stala dla wypelnienia 1% PWMPER EQU 100*PWM1P stala dla okresu (100%) * ustawienie bitu portu A i sposobu zmieniania (toggle) LDAA #%10000000 OM2=1, OL2=0 - ustaw LOW STAA TCTL1 pierwsze ustawienia wyjcia LDAA #OC2F maska bitu OC2 STAA CFORC wymuszenie ustawienia LOW LDAA #%01000000 OM2=0, OL2=1 - toggle STAA TCTL1 normalny tryb pracy * przygotowanie pierwszego przerwania OC2 LDAA #100 SUBA PWM stan niski LDAB #PWM1P stala dla 1% MUL ADD TCNT biezacy stan licznika TCNT STD TOC2 przerwanie po stanie niskim * odblokowanie przerwan LDAA #OC2F maska OC2F (i OC2I) STAA TFLG1 kasowanie flagi OC2F STAA TMSK1 odblokowanie OC2I CLI odblokowanie przerwan w CPU * petla bez wyjscia (lub inna petla glowna) DLOOP BRA DLOOP MW-ZPCiR-ICT-PWr 9

PWM przy pomocy OC (2/2) * procedura obslugi przerwania OC2 OC2SVC LDAA PORTA port timer-a BITA #OC2F sprawdzenie stanu wyjscia BEQ OC2LO obsluga stanu niskiego * tu: stan wysoki LDAA LMOTOR zadane wypelnienie BRA OC2COM dalej wspolny kod * tu: stan niski OC2LO LDAA #100 okres SUBA LMOTOR obliczenie czasu niskiego * wspolny kod OC2COM LDAB #PWM1P stala dla 1% MUL stala czasowa ADD TOC2 przesuniecie komparatora STD TOC2 LDAA #OC2F maska bitu OC2F w AccA STAA TFLG1 kasowanie flagi OC2F RTI powrot z przerwania ORG RAM LMOTOR RMB 1 zmienna: wypelnienie [%] MW-ZPCiR-ICT-PWr 10

ADC + PWM = robocik swiatłolubny * inicjalizacja ADC LDAA #%10010000 ADPU + DLY STAA OPTION tylko raz po restarcie JSR DELAY LDAA #%00110000 SCAN + MULT, bank 0 STAA ADCTL * tu - inicjalizacja PWM na OC2 i OC3 * * petla glowna: * patrz -> mysl -> dzialaj main * patrz: * odczyt czujnikow swiatla LDAA ADR1 prawy odczyt w AccA LDAB ADR2 lewy odczyt w AccB * mysl: * przetworzenie obrazu na decyzje o predkosci * i kierunku ruchu silnikow JSR mysl reakcja na odczyty * dzialaj: * ustawianie predkosci silnikow w obsludze PWM * w przerwaniach od OC2 i OC3 JMP main petla bez konca MW-ZPCiR-ICT-PWr 11

mysl CMPA #100 prog zadowolenia BLO work zle, trzeba sie poruszac CMPB #100 BLO work zle, trzeba sie poruszac * o, jak jasno, tu mi dobrze! CLR LMOTOR lewy stop CLR RMOTOR prawy stop RTS koniec myslenia! * znow trzeba pracowac :( work CMPA #50 dolny prog jasnosci BLO look zbyt ciemno CMPB #50 BHS appr cos widac * ciemnosc widze, rozejrze sie! look LDAA #50 predkosc [%] STAA LMOTOR pol naprzod STAA RMOTOR pol wstecz LDAA #%10 lewe >, prawe < STAA PORTB,X RTS koniec myslenia! * o, cos widze, podjade blizej! appr STAA LMOTOR prawe oko -> lewy silnik STAB RMOTOR lewe oko -> prawy silnik CLR PORTB,X oba naprzod RTS koniec myslenia! MW-ZPCiR-ICT-PWr 12