Egzamin z Techniki Mikroprocesorowej
1. Mikrokontroler Renesas H8tiny znalazł zastosowanie w dedykowanym przepływomierzu cieczy
chłodzącej turbogenerator. Ze względu na specyfikę aplikacji praca mikrokontrolera zaburzana
jest poprzez silne zakłócenia elektromagnetyczne mogące w ekstremalnym przypadku
doprowadzić do zawieszenia się całego sterownika.
W oparciu o wewnętrzny układ watchdog zaproponuj rozwiązanie, które w razie zawieszenia
się sterownika zrestartuje go po najpózniej 20 ms. Wewnętrzny układ watchdog mikrokontrolera
H8tiny zbudowany jest na bazie ośmiobitowego licznika zliczającego
w górę, po którego przepełnieniu generowany jest sygnał reset. Licznik taktowany jest sygnałem
zegarowym clk o częstotliwości 10 MHz, który dodatkowo jest dzielony przez prescaler przez
zadaną wartość (/64 /128 /256 /512 /1024 /2048 /4096 /8192).
Uzupełnij funkcję inicjującą układ watchdog wd_init() (5 pkt) oraz w odpowiednim
miejscu poniższego kodu (funkcja main) wstaw wywołanie funkcji wd_rst(), resetującej
licznik układu watchdog (5 pkt) tak, aby zliczał od zadanej wartości wpisywanej do rejestru TCWD
(5 pkt).
void wd_init(void) // funkcja inicjujÄ…ca watchdoga
{
unsigned char *TCWD =..... // Reset watchdoga licznik
// zlicza od zadanej wartość w górę
unsigned char *TMWD =..... // Prescaler wybór sygnału
// taktujÄ…cego licznik watchdoga
// 1000b clk/64, 1001b clk/128
// 1010b clk/256, 1011b clk/512
// 1100b clk/1024, 1101b clk/2048
// 1110b clk/4096, 1111b clk/8192
unsigned char *TCSRWD = 0x55 // Start watchdoga
}
void wd_rst(void)
{
unsigned char *TCWD =..... // Reset watchdoga licznik
// zlicza od zadanej wartość w górę
}
void main(void)
{
wd_init();
while(1)
{
ReadInputs(); //czas wykonywania funkcji ~2ms
FlowCalc(); //czas wykonywania funkcji ~8ms
WriteOutputs(); //czas wykonywania funkcji ~2ms
KeyCheck(); //czas wykonywania funkcji ~2ms
LCDUpdate(); //czas wykonywania funkcji 12ms
}
}
2. Mikrokontroler ARM AT91SAM7S256 znalazł zastosowanie w sterowniku
mikroprocesorowym klocków LEGO® MINDSTORMS® NXT. Do dwóch kanałów ukÅ‚adu
timer-counter tego mikrokontrolera, pracujÄ…cych w trybie generacji przebiegu prostokÄ…tnego,
podłączono silnik krokowy.
Wygenerowanie jednego okresu sygnału jak na rysunku powoduje obrót silnika
w prawo o 10 stopni. Wiedząc, że każdy z liczników jest taktowany zegarem
o częstotliwości 1800Hz, napisz pseudokod który wykona obrót silnika w prawo o 360 stopni
w czasie jednej sekundy (10 pkt).
Procedury obsługi przerwania układów timer-counter dostępne są jako funkcje
timer1_irq oraz timer2_irq. W chwili gdy licznik doliczy do wartości podanej
w rejestrze C jest on zerowany i generowane jest przerwanie. Zmiana sygnału wyjściowego
TIO1A lub TIO2A na przeciwny następuje w chwili osiągnięcia przez licznik wartości
podanej w rejestrze A. Wartości początkowe sygnałów TIO1A i TIO2A należy przyjąć jako
zero. Pracę układu timer-counter można zatrzymać w dowolnym momencie wywołując
funkcjÄ™ timers_stop()(5 pkt).
void main(void)
{
unsigned int *TIMER1_A = .......
unsigned int *TIMER1_C = .......
unsigned int *TIMER2_A = .......
TIO1A
unsigned int *TIMER2_C = .......
timers_start();
while(1){};
}
TIO2A
void timer1_irq(void)
{
Obrót w prawo o 10 stopni
}
void timer2_irq(void)
{
}
3. Mikrokontroler Renesas H8tiny został podłączony do sterownika przemysłowego PLC za pomocą
interfejsu RS232. Założono następujące parametry transmisji: baudrate=19200, data=7,
parity=ODD, stop=1. Ile maksymalnie bajtów można przesłać w ciągu sekundy przy zadanych
parametrach pomiędzy mikrokontrolerem a sterownikiem PLC?(2 pkt) .................
Narysuj ramkę dla transmitowanego słowa 045H (3 pkt).
Szósty bit rejestru statusu układu transmisji szeregowej sygnalizuje, że otrzymano nowe dane
( 1 ); rejestr ten dostępny jest w języku C jako zmienna unsigned char SSR, natomiast rejestr
danych dla odbiornika jako zmienna unsigned char RDR. Napisz pseudokod, który odbierze
8 kolejnych bajtów przysłanych przez sterownik PLC do tablicy unsigned char buf[] (5 pkt).
Zapisz pseudokod algorytmu, który wyznaczy dodatkowy bit parzystości dla każdego
z odebranych słów (tylko bity 6-0) i zapisze go na pozycji najbardziej znaczącego bitu
w każdym z odebranych słów (5 pkt).
4. Zespół inżynierów stanął przed problemem opracowania projektu układu
mikroprocesorowego dla terminala wyświetlającego obraz na monitorze VGA. Początkowo
w projekcie przewidziano do tego celu dedykowany kontroler grafiki, który miał kosztować
$18, jednak ze względu na redukcję kosztów w finalnym produkcie z niego zrezygnowano.
Zastąpiono go układem sterującym zrealizowanym na bazie układu FPGA, który generuje
odpowiednie sygnały synchronizacyjne i sterujące oraz przetwornikiem DAC. Dzięki
takiemu rozwiązaniu udało się zredukować koszt urządzenia o $10, jednak skomplikowało
to oprogramowanie firmware urzÄ…dzenia.
Transfer danych do przetwornika DAC odbywa się za pośrednictwem układu sterującego
(FPGA) w oparciu o jeden z kanałów DMA. Zaproponuj i nanieś na poniższy schemat
sposób podłączenia układu sterującego do układu mikroprocesorowego wiedząc, że sygnał
RD# to sygnał odczytu z pamięci, TREQ# (transfer request) sygnał żądania transferu danych
zgłaszany przez układ sterujący, a sygnał TIP# (transfer in progress) jest sygnałem
potwierdzenia transferu danych dla układu sterującego (rysunek 5 pkt). Narysuj również
przykładowe przebiegi sygnałów dma_req# i dma_ack# (3 pkt):
Zakłada się, że bufor ramki obrazu o rozdzielczości 640x480x16bitów znajduje się
w pamięci pod adresem 0xAF000000, a po zakończeniu każdego transferu DMA
generowane jest przerwanie obsługiwane przez wywołanie funkcji obsługi
dma_transfer_end(). Uzupełnij poniższy kod funkcji obsługi tego przerwania wiedząc, że:
(7 pkt)
- trzeci bit rejestru sterującego określa czy transfer odbywa się w 16 bitowych słowach
( 1 ) czy w bajtach ( 0 ),
- pierwszy bit blokuje przerwania od kanału DMA ( 1 ),
- ustawienie ( 1 ) najmniej znaczÄ…cego bitu tego rejestru rozpoczyna transfer danych.
void dma_transfer_end(void)
{
unsigned int *DMA_SAR = ...........// adres poczÄ…tku bloku danych
// w pamięci
unsigned int *DMA_TCR = ...........// długość bloku danych
unsigned int *DMA_CR = ...........// rejestr sterujÄ…cy, ponowny
// start transferu
}
A0
A0
..
..
A15
A15
D0
D0
..
..
D15
D15
Mikrokontroler RD# Układ
CS1#
ster.
CS2#
RD#
CS#
DMA
TREQ#
dma_ack#
TIP#
dma_req#
... ...
A0..A20 D0..D15 RD# CS#
RAM
Wyszukiwarka
Podobne podstrony:
fizyka egzamin zadaniaEgzamin zadaniaZimny Egzamin ZADANIE5egzamin1zarz zadaniaPodstawy automatyki egzamin zadaniaWytrzymalosc Materialow egzamin zadaniaArkusz Egzaminacyjny Zadanie 514 02 Czerwiec 2013TM egzamin2na egzamin przykladowe zadaniatechnik informatyk egzamin praktyczny zadanie aTechnik Informatyk Egzamin Praktyczny Czerwiec 2007 (Zadanie 3)Egzamin Praktyczny Czerwiec 2007 Przykładowe Zrzuty Ekranu (Zadanie 2)zadania ekonometria egzamin rocznik 2008technik informatyk egzamin praktyczny probny zadanie1 przyklad rozwiazanawięcej podobnych podstron