95 (133)

95 (133)




Mikroprocesorowa Ośla łączka




95



wu na działanie poprzedniej wersji centralki?

Po przeprowadzeniu takich eksperymentów powróć do naszej oszczędnościowej centralki i przeanalizuj kompletny program, pokazany na rysunku 118 (C022d.bas). Czerwoną strzałką zaznaczyłem usuniętą przyczynę problemu - miejsce, gdzie znacznik końca globalnego komentarza trzeba było przenieść do następnej linii. Jak widzisz, program bardzo przypomina poprzedni, działanie centralki też jest takie, jak wcześniej, tylko wykorzystana koncepcja radykalnie zmniejsza czas rzeczywistej pracy procesora, a tym samym pobór prądu.

Przy testach centralki pamiętaj, iż stan linii i klucza S2 jest sprawdzany co pół sekundy, więc pobudzenie musi trwać ponad te pół sekundy.

Program oszczędnościowej centralki z rysunku 118 działa jak poprzednio, ale u mnie, a zapewne także u Ciebie, co około pół sekundy występuje wyraźnie widoczne krótkie mignięcie segmentu f wyświetlacza W2.

1 oto znów mam dla Ciebie zadanie do samodzielnego wykonania: spróbuj dojść, dlaczego występuje to miganie. Najpierw zastanów się, wykonaj próby, a potem przeczytaj podane dalej wyjaśnienie.

Oto ono:

Migotanie segmentu f występuje wtedy, gdy masz kabel programujący cały czas dołączony do komputera. Jeśli odłączysz kabel programujący i zasilisz płytkę testową inaczej, przekonasz się, że to denerwujące miganie zniknie i nowa oszczędnościowa centralka będzie zachowywać się dokładnie tak, jak jej wcześniejsza wersja wykorzystująca Timerl. Jeśli w programie wygasiłbyś punkty

Uwaga! Bit FSTR nie jest bitem rejestru l/O w pamięci RAM (zastanów się, dlaczego nie spełniłby wtedy swej roli). Jest to jeden z dwóch bitów dodatkowych (SPIEŃ, FSTRT) w pamięci FLASH, i to nie w normalnej przestrzeni adresowej programu. Co ważne, te dodatkowe bity w pamięci FLASH można modyfikować tylko w trybie programowania równoległego. Oznacza to, że popu-H larny programator szeregowy, wykorzystujący łą-M cze SPI, taki jak np. nasz kabelek programujący, n nie może zmienić stanu bitu FSTRT. Tym samym JĘ wspomniana możliwość jest praktycznie niedoli stępna dla użytkowników posługujących się popu-m larnym, prostym programatorem szeregowym, pę w tym dla użytkowników płytki testowej AVT-> 3500.

[-i Czas opóźnienia. Podane wiadomości nn o opóźnieniu Td są istotne tylko w tych rzadkich >• przypadkach, gdy wymagane jest precyzyjne odmierzanie czasu tuż po włączeniu zasilania. Należy wtedy uwzględnić to opóźnienie i oszacować lub lepiej zmierzyć jego wielkość w rzeczywistych warunkach pracy. Warto wtedy dodatkowo wziąć pod uwagę, iż w praktyce napięcie zasilające narasta po włączeniu z jakąś skończoną szybkością związaną z wartością pojemności filtrujących i wy


'C022d Oszczędna centralko alarmowo- watchdog “budzi" ją co O.Ss Snoraiclear    'nie zeruj pamięci RAM (zmiennych) po resecie

Const Czasal    ■ 10    '240    'Czas    alarmu liczba<2S5 . 240»0,Ss - 120s - 2 minuty

Const Czaswy    “8    '50    'Czas    na wyjście liczba<255 . 50»CI.5s ■ 25 sekund

Const Czaswe    *6    '30    'Czas    na wyłączenie alarmu liczba<255 30«0.Ss = lSs

Din Sygnalarmu As Bit Stan As By te '( Stan - bajt stanu centralki:

Stan.7 - Bit Niewykorzystany Stan 6 - Flago Czasu Alarmu

Stan 5 - Bit Pomocniczy Potrzebny Przy Włączaniu Czuwania

Stan 4 - Stan Klucza S2(zał / Wyłącz Alarm) 1 —spoczynek 0 —praca

Stan,3 - L2 - Linia Natychmiastowa

Stan.2 - Flaga Czasu Na Wyjście

Stan.1 - Flaga Czasu Na Wejście

Stan 0 - Ll_- linia Z Opóźnieniem(zwłoczna)

J    <............

Dim Czasalarmu As Byte Czaswyjscia As Byte Czaswejscia As Byte Enable Interrupts Enable Timerl Config Timerl = Timer Prescale - 64 Config Watchdog 3 512 Start Watchdog    'reset co ok O.Ss

Config Portb ■ Output Portb * 127    ' portB - wyjście, PB 6 = 0

Config Portd * &B0000100 Portd ■ 127    'podciągnij wejścia, wyłącz syrenę

If Pind 0=0 Then    'ręczna inicjałizacja przyciskiem SI

Stan ■ 16 'po ręcznej micjalizacji stan (I) czuwania Czasalarmu ■ Czasal    'inicjalizacja czasów

Czaswyjscia * Czaswy Czaswejscia = Czaswe End If    'a teraz sprawdzamy stan linii LI. L2 oraz wejść SI. S2

Stan 4 = Pind 1 Stan 3 * Pind 6 Stan 0 * Pmd 5    'przepisz stany wejść

If Stan 6 * 1 Then    'gdy bit alarmu ustawiony licz czas

Sygnalarmu • 1    nowa flaga pamięci alarmu - włączy segmenty g

Decr Czasalarmu    'zmniejsz zawartość licznika

If Czasalarmu * 255 Then Stan 6 * 0    'zakończ odliczanie czasu

Elsę    'co 0.5s, gdy nie ma alarmu

Czasalarmu - Czasal    'przygotuj do następnego cyklu

'koniec procedury licznika czasu alarmu 'gdy bit czasu na wyjście ustawiony licz czas włącz segmenty b wyświetlaczy 'zmniejsz zawartość licznika

255 Then Stan 2 = 0    ‘zakończ odliczanie czasu

'gdy nie odlicza czasu na wyjście Czaswy    'przygotuj do następnego cyklu

'wygaś segmenty b

'koniec procedury licznika czasu na wyjście Stan.l = 1 Then    'gdy bit czasu na wejście ustawiony

Portb.5 = 0    'włącz segmenty f wyświetlaczy

Decr Czaswejscia    'zmniejsz zawartość licznika

If Czaswejscia * 255 Then

Stan 1=0    'zakończ odliczanie czasu na wejście

Stan 6=1    'włącz alarm

End If

Elsę    'gdy nie odlicza czasu na wejście

Czaswejscia = Czaswe    'przygotuj do następnego cyklu

Portb 5 = 1    'wygaś segmenty f

End If    'koniec procedury licznika czasu na wejście

'a teraz sprawdzamy stan centralki:

If Stan 4=1 Then 'gdy centralka wyłączona, czyli klucz S2 - rozwarty Stan = &B00110000    'oprócz wcześniej ustawionego bitu Stan 5 (S2)

dodatkowo ustawiamy bit pomocniczy Stan 5. a resztę zerujemy


End If

If Stan 2=1 Then Portb 1=0 Decr Czaswyjscia If Czaswyjscia Elsę

Czaswyjscia Portb 1=1 End If If


If Pind Elsę

If Stan Stan Stan End If If Stan Stan Elsę

If Stan =

End If End If

Portb 0 = Stan 4 'segmenty a świadczą o włączeniu czuwania centralki Portd 2 * Not Stan 6    'ewentualnie włącz syrenę dołączoną do Q2

Portb 6 = Not Sygnalarmu    'pamięć alarmu - zaświeca segmenty g

Powerdown End


Then Sygnalarmu = 0    'gasi segment g

'praca centralki: klucz S2 - zwarty Then    ' jednorazowo po włączeniu czuwania

'zablokujemy linię zwłoczną i odmierzymy czas na wyjście

'jednorazowo, więc wyzeruj bit pomocniczy


kasuje pamięć alarmu


Then gdy pobudzona linia natychmiastowa L2 - zawsze włącz alarm 1 'zacznij odmierzać czas alarmu

'gdy L2 me pobudzona, wtedy Stan*Q .7 i można 1 Then Stan 1=1    odmierz czas na wejście


Rys. 118.


dajnością zasilacza. Czym wolniej narasta napięcie, tym z większymi różnicami trzeba się liczyć. Ponadto, jak wskazuje tabela 2, dla różnych egzemplarzy napięcie progowe przy włączaniu może wynosić 1,0...1,8V. Ilustruje to rysunek E, pokazujący zakres czasu, w którym dla różnych egzemplarzy procesorów rozpocznie się procedura POR. Kolejnym źródłem niepewności jest słaba stabilność wewnętrznego oscylatora RC, pracującego podczas procedury POR. Czas zliczania jest silnie zależny od napięcia zasilania i temperatury struktury - patrz wcześniejszy rysunek C. Rysunek ten, wzorowany na charakterystyce z karty katalogowej



procesora, pokazuje przeciętną zależność częstotliwości tego oscylatora od napięcia zasilania. W dopuszczalnym zakresie napięć zasilania częstotliwość może zmieniać się w zakresie 3(X)kHz... 1600kHz. Oznacza to, że zliczenie wspomnianych 16384 taktów tego oscylatora może w skrajnych przypadkach trwać od około lOms do około 55ms. Według katalogu nawet przy napięciu zasilania wynoszącym 5V należy liczyć się z dużym rozrzutem czasu zliczania 16ms±5ms (11...21ms). Ilustruje to rysunek F. Jak z tego widać, nie sposób ani zagwarantować, ani nawet precyzyjnie określić czasu opóźnienia, po którym program zacznie realizować swe zadanie. Można go co najwyżej zmierzyć dla konkretnego egzemplarza, określonego napięcia zasilającego i temperatury.


i

k

napięcie zasilania

f początek / pracy programu /

Vrot

J zliczanie 16384 A taktów oscylatora RC [

n...2ims J czas

F


38 Grudzień 2003 Elektronika dla Wszystkich


Wyszukiwarka

Podobne podstrony:
93 (135) Mikroprocesorowa Ośla łączka segmentów a tych dwóch wyświetlaczy. Podczas odmierzania czasu
edw6 str40 Mikroprocesorowa Ośla łączka Ml zostanie wykonana tylko raz). Natomiast przy reakcji na
Image63 (6) Poczta ■ wcześniej prowadzony był na naszych łamach jako cykl Mikroprocesorowa Ośla łącz
43680 Image37 (6) Mikroprocesorowa Ośla łączka Ml 191 ZmiennaTypuInteger = Funkcyjka (JakasZaiByte,
89 (141) Mikroprocesorowa Ośla łączka M1 Mikroprocesorowa Ośla łączka M1 programowe zerowanie liczni
90 (145) Mikroprocesorowa Ośla łączka R14 R13
91 (142) Mikroprocesorowa Ośla łączka Ml Reset Watchdog I to sq wszystkie kluczowe informacje, umożl
92 (141) Mikroprocesorowa Ośla łączka Mikroprocesorowa Ośla łączka If Flaga * 1 Then gdy llaga usta
96 (126) Mikroprocesorowa Ośla łączka Config Portb = Output : Portb = 127 portB - wyjcecie; PB.7 =
97 (117) Mikroprocesorowa Ośla łączka M1 Mikroprocesorowa Ośla łączka M1 Ćwiczenie 23Wyświetlacz
98 (115) Mikroprocesorowa Ośla łączka Mikroprocesorowa Ośla łączka •C023a Wyświetlacz LCD Cla Do Cl
99 (115) Mikroprocesorowa Ośla łączka M1 Mikroprocesorowa Ośla łączka M1 ’C023e Wszystkie typy zmi
Image33 (6) Mikroprocesorowa Ośla łączka Ml 187 SHIFTOUT Pdane , Pzegar Zmienna ,

więcej podobnych podstron