danych umożliwi sprawdzenie poprawności kodu także po przesłaniu dalej do innych ukłudów. Kod odczytany z karty jest przesyłany przez RS232 tylko wtedy, gdy po zweryfikowaniu z bitami kontrolnymi jest prawidłowy. Na listingu 1 przedstawiona została procedura przesłania rozkazu do U1. Na początku jest ustawiana linia Dat jako wyjście, po czym następuje zerowanie interfejsu zgodnie z rysunkami 3 oraz 4. W pętli „FOR” są wysyłane bity zawarte w zmiennej „wysl”, natomiast zmienna ..zakres'* zawiera ilość hitów do wysłania. Na końcu tej procedury linia DAT ustawiuna jest jako wejście. Listing 2 przedstawia procedurę odczytu oraz dekodowania odebranego z karty kodu. Flaga „Cclk” tworzy wirtualny sygnał zegarowy, który jest synchronizowany zboczami sygnału z danymi wysyłanymi z karty. Flaga ta jest pomocna przy dekodowaniu przesłanych hitów danych. Po zaistnieniu narastającego zbocza sygnału z danymi program wchodzi w pętlę „DO-LO-OP", w której następuje odczyt i dekodowanie przesyłanego kodu. Jeżeli zmienna „spr” osiągnie wartość 9, będzie to znakiem, że zostało przesłane 9 bitów nagłówka, po którym następują ważne dane, które są zapisywane w tablicy „DANJsI Po wykonaniu instrukcji ..Ddat = Datl Xor Cclk”, flaga „Dat” zawiera wartość odczytanego i /.dekodowanego bitu. który należy już zapisać. Gdy zostaną odczytane wszystkie dane. zmienna „I” przyjmuje wartość 12. co umożliwia wyjście z pętli. Wyjście z pętli umożliwia także osiągnięcie wartości 180 przez zmienną „temp?”. Gdyby pętla nie była opuszczona na czas, program by nie zdążył wyzerować watchdoga, co powodowałoby reset mikrokontrolera. Zmienna „Temp3” została wprowadzona tylko po to. by na czas była opuszczana ta procedura. Na listingu 3 przedstawione zostały instrukcje sprawdzające poprawność odczytanego kodu. Procedurę tę można podzielić na dwie części: część sprawdzającą wiersze oraz część sprawdzająca kolumny odebrunego kodu. W pierwszej zewnętrznej pętli „for” sprawdzane są wiersze, natomiast w drugiej pętli „for*' sprawdzane są kolumny. Przy choć jednej nieprawidłowości zarówno kolumn, jak i wierszy ustawiana jest flaga „error”. Zerowy stan tej zmiennej po wyjściu z procedury sprawdzającej gwarantuje poprawność odebrunego kodu, który można przesłać przez port RS232 lub porównać z zapisanym wzorcem w pamięci EEPROM, by umożliwić np. otwarcie zamka.
Zamek należy zmontować na płytce drukowanej, która jest przedstawiona na rysunku 8. Montaż należy rozpocząć od wlutowania kilku zworek, przechodząc dalej do elementów najmniejszych, kończąc na włożeniu układów scalonych do podstawek, przy czym powinny być to podstawki precyzyjne, by zamek nas kiedykolwiek nie zawiódł. Trochę problemów może być z wliuowaniem układu Ul, gdyż jest un montowany w technologii SMD. Aby laki układ poprawnie zamontować, można go najpierw przykleić do płytki, po czym po wyschnięciu kleju można przystąpić do przy-lutnwaiiia go lutownicą z cienkim grotem.
Nie należy używać lutownic transformatorowych, bo prawdopodobnie dojdzie do przegrzania układu i powstania trudnych do usunięcia zwarć. Przy montażu tegoż układa należy pamiętać o odpowiednim jego usytuowaniu. Odwrotne wlutowanie spowoduje
listing l | |
wilce k |
'procedura przesiania rozkazu ćo AGIC |
CX.nl iq Pinii.2 = Output |
'ustaw linie danych jako wyjście |
Reoet Clk |
'zerui Unie clk |
Reset Dat |
'zeiu i 1inie dat |
Waitus 10 |
1czekaJ |
SGt Clk |
'ustaw linio clk |
waitus 10 |
'czekaj |
Set Dat |
'ustaw linie dat |
Waitu3 10 |
•czekał |
Reset Clk |
'zeruj 1 ii ie clk |
Wait ns 10 | |
For 1 = 0 1’0 &a <rfi.=; |
'wysyłaj as i osiągnie wartoac zmiennej zaktsa |
IC Wynl.i - I rlten |
'jeśli hit cznaczcny indeksem i jest. uotawiony :.j |
3ct Dat. |
•ustaw Urie dat |
Elsa |
'w przećiwnyn jazie |
Reser nat |
'acruj linie dat. |
oni ir | |
Waic-ts 10 |
'czekaj |
3et Clk |
'ustaw linie clk |
Wai-jo 20 |
'czekaj |
Re3et Clk |
'zeruj linie clk |
Nai-ns ifl |
'czekaj |
MexL l | |
Reset Dat |
'2eruj limę dat |
If Wyol - *) Then |
* ieali do wysiana wartość równa -t -o |
WaLtus 30 |
•czekaj |
Ser Dat |
'ustaw linie dat |
Waitus 20 |
'czekaj |
Reset Dal |
'zeruj Unie dat |
End I: | |
Waltns 1 |
'czekaj |
I Con*tg Pind.2 ■ Znput |
'uotaw linia dat jako wejście |
Snd Sub | |
Lis li u/" 2 | |
Sub Raad t |
'orocodata atlety.j danych z transpondera : 7 »vrry) |
Reset Kod |
'zorjj flago zod |
set cclk |
'ustaw flaga ccLk |
Do |
'cze<aj aż. linie dat osiągnie stan 0 |
Loop Until Dali - t | |
Do |
•czekaj at Linia dat os.aame stan i |
Loop Until Datl *• 1 | |
Temp.l = (i | |
Do | |
C - 0 | |
Jf Eatl - 0 Thcn |
' jeżeli, -ima ddt=0 to |
To | |
Inor .1 |
'zwiększ zr\-enn«i j |
ir j = 4 7 men |
' jeżę 1 : znienna to wyjdą 2 pctli do loop/ |
Sxit Dj | |
End If | |
Loop Until Datl - 1 |
wyjście i pętli tckze ccy liria ćat=l |
r/Mk = Not ?_lk |
' smen otan flagi cclk |
Elsę |
'u prsociwnyra rasie |
Do | |
Insr J |
'zwiększ znienna ; |
If J - 17 Thcn |
'jeżeli zmienne 1=47 tc wyjdź z perli rln-Innfi |
Exit Do | |
2nd It | |
tiDDp Until Datl « 0 |
'wy;srie i pętli także gdy linia dat.-0 |
Cclk - MuL Cclk |
•znien star tlaęi rrlk |
End If | |
Ddat = DatL /ar Ccl< |
'dekoduj odczytany sLdii funkcia xor |
ir ::~lk = 0 Then |
'jeżeli flaca cclk-C to |
rc Kod - L Then |
'i jo2c1 i kcd=l to |
3p. - Dmie!ij |
'zapisz dc zmiennej spr określona indeksem da. |
Spr.k - Ddat |
•zapisz dc pozycji określone} zmenna k stan flaui ddat |
Dane(i; - Spr |
•zapisz zmienna spr do danych określonych in.1e<seir |
Den- K |
'zmniejsz zmienna k |
.: K - 255 Then |
'je2eli 2mienna k-255 to |
K = < |
'zapisz rir. nio wartość 4 |
Incr 1 |
•zwiększ zmienna i |
End If | |
End Z* | |
if Kod - 0 Then |
•jeśli kod-0 to |
n* Ddat - i ir.er |
•i jeśli ddat=ł to |
lncr Spi |
•zwiększ, zmienna spr |
If Spr - 2 Then |
’iesli spr=9 to |
T«=mp3 - 0 |
•zeruj zmienna Leup3 |
Set Kcd |
•ustaw flago kod |
1-1 |
'zapisz do zmiennaj i war.ooc l |
K = 4 |
'a do z.Tiiannoj < wartość 4 |
Erc If | |
Elee |
'w PŁzecitftiyai razie |
Spr - 0 |
'zeruj zmienna aor |
fcr.ć if | |
End IX | |
End If | |
lncr Temp3 |
'zwiększ warLosc temp3 |
Loop Until I = 15 Cr Teirp3 - 280 |
'zakończ procedurę gdy r-12 lub tenplB180 |
56 Kwiecień 2005 Elektronika dla Wszystkich