Sprawozdanie laboratorium 2 PDF

Title Sprawozdanie laboratorium 2
Course Architektura komputerów
Institution Politechnika Bialostocka
Pages 2
File Size 95.8 KB
File Type PDF
Total Downloads 117
Total Views 145

Summary

Sprawozdanie z Architektury Komputerów - Watchdog timer...


Description

Wydział Informatyki Katedra Systemów Czasu Rzeczywistego Laboratorium Architektury Komputerów Sprawozdanie z projektu nr 2 Grupa: 6 Sujeta Adam Wawiórka Daniel

Data: środa, 18:30-20:05 17.10.2015 r. Prowadzący: dr inż. Krzysztof Bielawski

Cel projektu Celem projektu była realizacja zadania polegającego na tym, aby dioda na płytce Easy Web 2 migała w równych odstępach czasowych, a odstępy te były podane przez prowadzącego. Należało skorzystać z Watchdog Timer, który musiał zostać ustawiony w tryb Interval.

Metoda realizacji Wykonanie zadania polegało na napisaniu kodu, który przestawiał Watchdog Timera w tryb Interval, czyli licznika odliczającego odstępy czasu. Domyślnie WDT pracuje w trybie watchdog, więc należało ten tryb zmienić. Za wszystko odpowiadał 16-bitowy rejestr WDTCTL, w którym należało podać hasło (WDTPW) oraz przestawić tryb pracy na Interval (WDTTMSEL). Do prawidłowego funkcjonowania układu należało także skorzystać z wartości WDTCNTCL, który zerował wartość zliczaną przez WDT. Przy realizacji zadania operowano na zegarze ACLK, za co odpowiadał bit WDTSSEL. Ostatecznie formuła przypisania do rejestru sumy wszystkich tych bitów wyglądała następująco: WDTCTL =WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL; Do ustawienia podzielnika skorzystano dodatkowo z zegara bazowego, który najpierw został ustawiony na 8 MHz (High Frequency Mode), a następnie dwa bity z rejestru BCSCTL1 zostały ustawione na wartości 1, dzięki czemu uzyskano ostatecznie 1 MHz. Następnie dzieląc 1MHz przez ustawiony podzielnik na 32768 można było uzyskać odstęp czasowy wynoszący dokładnie jedną sekundę, a następnie mnożąc przez odpowiednią wartość można było uzyskać efekt migającej diody w zadanym odstępie czasowy. Korzystając z faktu, że 31*32768 ≈ 1000 ms, można było w pętli wykorzystać to do ustawienia odstępu czasowego migania diody. Poniżej cały kod programu: #include #pragma vector=WDT_VECTOR __interrupt void watchdog_timer(void){ static int i = 0; int x=5; //dioda miga 5-sekundowych odstępach czasu i++; if (i == x*31) { // 1 sekunda P2OUT ^= 0x02; // miganie diody i = 0; // resetowanie licznika } }

void main(void) { WDTCTL = WDTPW + WDTHOLD; BCSCTL1 |= XTS;

// wyłączenie układu WDT // ustawnienie zegara na HF

BCSCTL1 |= DIVA0; //ustawianie podzielnika na 8 BCSCTL1 |= DIVA1; WDTCTL =WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL; // haslo+interval+zerowanie wartosci zliczania+ ACLK P2DIR |= 0x02; //ustawienie diody tryb wyjscia IE1 |= WDTIE; //// Włączenie przerwań od WDT _EINT(); // Włączenie przerwań }

Samoocena realizowanego projektu Wykonanie kodu i testy pokazały, że układ działa zgodnie z założeniem. Początkowe błędy były stopniowo eliminowane. Zadania są realizowane w sposób założony w instrukcji laboratoryjnej....


Similar Free PDFs