Laboratorium nr 4 (sprawozdanie) – Michał Harasimowicz
- 1 -
Michał Harasimowicz P1
Sprawozdanie z laboratorium nr 4 z przedmiotu
„Elementy konstrukcji sprzętu cyfrowego”
Cel sprawozdania:
Celem sprawozdania jest ukazanie problemu programowania modelu zegara
elektronicznego na układach 320 oraz 552. W sprawozdaniu uwzględnię różne problemy
odliczania czasu na tych układach.
Metoda obliczania czasu:
Aby
odliczać czas w podanych układach będę korzystać z mechanizmu liczników, o
czym napiszę później. Układy powyżej wspomniane (80 C 320 ,80 C 552) bazują na układzie
8051, w którym istnieją następujące liczniki: T0 oraz T1 . Ich funkcją jest zliczanie
narastających zbocz cykli zegara. Chcąc je wykorzystać muszę wiedzieć ile trwa cykl zegara
oraz co ile cykli jest zwiększany licznik. W ten sposób mogę zliczać narastające zbocza
zegara, dzięki czemu jest w ogóle możliwe odliczanie czasu. Oczywiście, samo zliczanie
zbocz narastających nie pozwoli mi na obliczanie aktualnego czasu. Konieczne jest
odpowiednie wykorzystanie liczników. Należy pamiętać, że ‘główny’ licznik jest
standardowo zwiększany co 4 cykle zegara, w przypadku 80 C 320 , lub 12 cykli zegara w
przypadku 80 C 552, czyli zdecydowanie za szybko, aby możliwe, było wykorzystanie go
bezpośrednio.
Rozwiązanie problemu wymaga, więc pomysłu, który jest następujący: zliczamy cykle
zegara za pomocą licznika. Jeden jest zwiększany co 4 lub 12 cykli i po osiągnięciu wartości
x
1
, powoduje zwiększenie zmiennej, który dopiero po osiągnięciu wartości x
2
powoduje
zwiększenie zmiennej równej ilości sekund. Jakie są wartości x
1
i x
2
?
To jest właśnie główny problem zadania. Należy je odpowiednio dobrać tak,
osiągnięcie wartości x
2
następowało dokładnie po 0,5s, co pozwala na odpowiednie
‘mruganie’ kresek pomiędzy cyframi. Wartości x1, x2 są zależne od wielu czynników, ale
Laboratorium nr 4 (sprawozdanie) – Michał Harasimowicz
- 2 -
głównie od szybkości układu, na którym pracujemy. Należy również pamiętać o tym, aby
odczytywać klawiaturę co około 1ms oraz co około 2ms podawać sygnał na wyświetlacz.
Oba
układy pracują na częstotliwości 11,0592Mhz. W przypadku układu 80 C 320 , w
którym jeden cykl to 4 takty zegara, aby osiągnąć 1s musimy zwiększyć licznik 2764800
razy. W przypadku 80 C 552 musimy ten proces wykonać 921600 razy. Uzyskanie 1ms
wymaga, więc od nas 921,6 cykli, a 2,5ms =2*1,25ms= 2*1152=2304.
Minimalizacja błędu
Oczywiście zaprogramowanie układu tak zliczającego proste nie jest. Aby osiągnąć 1s
w przypadku układu 80 C 552 muszę wykonać 921600 cykli. Już osiągnięcie 1ms nie jest
trywialne, ponieważ nie jest to wartość całkowita. Przybliżając 1ms jako 921 cykli osiągamy
niepewność 0,065%, wciągu jednej doby tj. 86400 sekund układ oparty na zliczaniu
pojedynczych milisekund będzie się myli o około 56sekund,czyli w przypadku roku około
20498 sekund czyli ok. 5h40min. Aby zminimalizować ten błąd wykorzystam naliczanie co
sekundę czyli 912600 cykli, a przyjąć że wykonanie instrukcji programu jest bardzo szybkie,
w porównaniu do 1ms. Szacując wykonanie wszystkich instrukcji procedury zliczania czasu
na nie więcej niż 60 cykli maszynowych ( + czas wykonania procedury odpowiadającej za
wczytywanie stanu klawiatury), wciągu 1 możemy popełnić błąd 0,0065% czyli około rząd
mniejszy niż w przypadku zliczania milisekund, co daje w przypadku 1roku około 34 min
różnicy. Jest więc to oszacowanie błędu zliczania czasu. Aby wykonać 912600 cykli,
rozłożyłem tą liczbę na czynniki np. w następujący sposób 1152 (1,25ms), a potem zliczałem
zmienne do 800. Dla drugiego mikrokontrolera obliczenia są mniej dokładne, ponieważ
należy wynik podzielić przez 3 co wprowadza dodatkowy błąd, ale mniejszy niż oszacowanie
powyższe.
Wnioski
Możemy oszacować niepewność pomiaru czasu w układzie elektronicznym
zaprojektowanym na bazie mikrokontrolera 8051 na około 0,0065%, co daje w przypadku
roku niepewność około 34min, czyli w ciągu 1 doby układ wymagałby korekcji o ok. 6s.