Forum Czytelników ■
Forum Czytelników ■
błt 7
1 baji
Port 037A h
US1-US5 (pin I wszystkich US, stan L).
- Wygenerowanie impulsu wyzwalającego na pin 3 US6, co rozpoczyna cykl zliczania przez liczniki binarne 4029. Po upływie ls następuje zablokowanie liczników (pin 5 liczników w stanie H), wykrycie stanu wysokiego na końcówce 11 LPT uruchamia procedurę odczytu.
- Odczyt stanu wyjść L>1,Q2,Q3,U4 US5, przepisanie stanu wyjść US4 na wyjścia US5 i ich odczyt, przepisanie stanu wyjść US3 na wyjścia LS5 poprzez US4 i ich odczyt, przepisanie stanu wyjść US2 na wyjścia US5 poprzez US3, US4 i ich odczyt, przepisanie stanu wyjść US1 na wyjścia US5 poprzez US2, US3, US4 i ich odczyt. Otrzymane w ten sposób 20-bitowe „słowo” bed2ie zawierać częstotliwość przebiegu wprowadzonego do wejścia zegarowego pierwszego licznika.
Wyzerowanie liczników US1-US5 (pin 1 wszystkich US) przez podanie sianu H na wejścia ustawiania.
3. Skok do „Start Procedury Pomiarowej”.
W modelu odczytana częstotliwość przy pomiarze 1MHz z teoretyczną dokładnością do jednego herca jest niestabilna w granicach ±2UHz, prawdopodobnie ze względu na słabą stabilność prostego generatora wzorcowego i stabilność częstotliwości wzorcowej zastosowanej do kalibracji. Odczyt w kHz zmienia tylko format odczytu, odrzucając najmniej znaczącą pozycję. Celem projektu było maksymalne uproszczenie części elektronicznej miernika i przerzucenie wszystkiego, co możliwe, na oprogramowanie i komputer, co zostało osiągnięte.
Oczywiście układ (i program) można rozbudować (dodanie jednego licznika rozszerza pomiar do 8MHz + zmiana w programie) np. dodając preskaler i układ dopasowujący dla przebiegów innych n;ż TI L, co mc wymaga zmiany programu. Port drukarki LPT1 (złącze L)B25) komputera PC dla prawidłowego działania programu musi być skonfigurowany tak, aby zakres wejścia-wyjścia rozpoczynał się od adresu 0378. Program korzysta z portów komputera 0378, 0379, 037A.
W celu uproszczenia połączeń liczniki US1-US5 są wlutowane pomiędzy dwie płytki drukowane jednostronne, co znacznie upraszcza projekt płytek drukowanych, wymaga jedynie na jednej z płytek lustrzanego zaprojektowania połączeń. Płytki należy wykonać wc własnym zakresie.
Miernik nie powstał jako jakieś docelowe urządzenie, lecz jest produktem moich programistycznych rozważań na temat ,.co z tym pudlem zrobić, znaczy się z komputerem”, więc jego fizyczny wygląd może nie jest imponujący, ważniejsza jest sama idea urządzenia, bo przecież mogło to być coś innego np. sterownik świateł w dyskotece, wzmacniacza czy czegokolwiek innego. Oczywiście trzeba umieć pisać programy na PC, a ja. chociaż nic jestem już najmłodszy, uczyłem się sam, co przesłoniło mi nieco elektronikę, ale przygoda jest wspaniała.
Porty w komputerze PC są obszarem pamięci związanym z konkretnymi urządzeniami. Obszar przeznaczony na urządzenie -> port drukarki równoległy (jego część) posiada tę właściwość, że to, co do niego zapiszemy, pojawia się bezpośrednio na wyprowadzeniach złącza przeznaczonego dla drukarki i o to właśnie chodzi.
Procedura wprowadzania danych lub ich pobierania zc złącza jest prosta i może być zapisana w asemblerze procesorów Intel lub w językach wysokiego poziomu (C, C++, Pascal) za pomocą wstawek asemblerowych. Języki te bez większych problemów współpracują z Asemblerem. Na tej podstawie można wyprowadzić informację z komputera lub pobrać ją z zewnątrz. Do dyspozycji mamy trzy bajty identyfikujące porty i końcówki LPT1 o adresach podawanych hcksadecyma nie 0378, 0379, 037A. Zapisując pod tc adresy odpowiednie liczby, decydujemy o tym, jakie stany logiczne pojawią się na końcówkach złącza LPT I, odpowiednie końcówki złącza powiązane są z poszczególnymi bitami bajtów o podanych wyżej adresach.
Bajt określony adresem 0378 umożliwia przesyłanie danych z komputera na złącze, bajt określony adresem 0379 pozwala na wprowadzenie danych w drugą stronę za pomocą części bitów z nim związanych (bity 7, 6. 5. 4, 3). podanie jakiegoś stanu na końcówkę związaną z danym bitem powoduje zapisanie do pamięci stanu mu odpowiadającego (uwaga - bit 7 jest negowany, czyli aby zapisać do pamięci stan wysoki, należy podać na pin 11 LPT1 star. niski ). Bajt o adresie 037A (jego młodsza część) pozwala na wyprowadzenie z komputera na złącze jednorazowo czterobitowej informacji, tutaj zanegowane mamy trzy bity, czyli aby wyprowadzić na złącze LPTI stan niski (bity 0, 1,3), na końcówki 1, 14 lub 17 należy w pamięci ustawić te bity w stan wysoki. Ilustruje to rysunek 2.
... bito
Port C379 h . M zanegowany y JośJ11, to na końcówce 11 stan 0 łtd.
| 11 | 10 | 12 | 13 | 15 | Nlyto8tyne~
bit 7 ...
Nlledoętęprę | 17 | 16 | 14 | 1
bit 7 ...
Przykład, jak praktycznie może to wyglądać w programie asemblerowym, można znaleźć r pliku tekstowym, umieszczonym r Elportalu (w materiałach dodatkowych z tego numeru EdW). Aby ustawiać stany na poszczególnych końcówkach LPTI, można operować przesunięciami bitowymi podobnymi rzeczami, jeśli ktoś interesuje sic programowaniem, to będzie w iedział, co dalej z tym zrobić (Asembler, Pascal, C, C' '). Podany tam kod można stosować dla systemu DOS, gdzie dostęp do urządzeń jest swobodny. Ja zastosowałem go nieświadomie w systemie Windows 95, gdzie aplikacje są izolowane poprzez system operacyjny od sprzętu i obszarów pamięci dla aplikacji nieprzeznaczonych. Nie wiem. dlaczego system pozwala na swobodne operowanie tymi adresami za pomocą instrukcji asemblerowych in i out. Ingerencja w inne obszary pamięci asemblerem przy zastosowaniu „normalnych kompilatorów” dodających kod zabezpieczający do programów kończy się zamknięciem aplikacji lub zawieszeniem systemu, więc nie powinno to działać, jednak wszystko jest OK.!
Program Monitor.exe (zarówno ten program, jak i resztę oprogramowania też można ściągnąć z Elportalu) pozwala ustawiać stany logiczne na złączu LPTI i je odczytywać (liczby wprowadzamy jako dziesiętne) jako dowód na działanie opisanych tu zjawisk, rozmiary zmiennych stosowanych w programie z wstawkami asemblerowymi mogą się dokładnie nie zgadzać (protesty kompilatora), będzie to zależało od systemu, kompilatora, pogody itd.. ale kierunek jest prawidłowy i eksperymenty nie zaszkodzą.
Należy zaznaczyć, żc kontakt nie przez LPTI, tylko poprzez port szeregowy RS232 jest dosyć skomplikowany i nadaje się dla zaawansowanych programistów, także samo urządzenie musi wykazać się pewną „inteligencją” (polecam książkę pana Andrzeja Daniluka „RS232C- praktyczne programowanie”).
1 bajt
bit 0
Port 0378 h Numery końcówek na złączL LPTI
\......
| 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 baji
......... bltO
Numery końców©* na złączu LPTI
Wykaz elementów | |
R1-R5 ..................... |
....i0kn...47kn |
R6.R7.RT ................ |
.........4,7kQ |
R8 ........................ |
..........24kSi |
R9 |
?.?MQ |
R10 ..................... |
.........2,2kft |
C1-C5..................... |
.........100nF |
C6........................ |
.. 33pF (trymer) |
37...................... |
..........33pF |
38 |
150pF |
39....................... |
..........27pF |
11......................... |
.........BC238 |
T2................. |
...... BF240 |
JS1-US5........... |
......^029 |
JS6...... |
4)13 |
JS7................ |
.....4541 |
X1 ........................ |
.....32.769kHz |
Elektronika dla Wszystkich Styczeń 2006 59