Ej, wy tam z tyłu! Róbcie to co ja!
To znaczy: nie naśladujcie mnie!
Włodzimierz Wysocki "Cudza koleina"
Programator EPROM / FLASH "PARAPROG"
Omawiany tutaj programator przeznaczony jest do programowania układów scalonych 573РФ2 i 573РФ5 oraz do zapisu emulatora tychże kości w układzie 537РУ10. Urządzenie podłącza się poprzez port LPT, który powinien pracować w trybie dwukierunkowym. Sterowanie programatorem odbywa się przy pomocy aplikacji pracującej w środowisku W2K/WXP i wykorzystującej do uzyskiwania bezpośredniego dostępu do portu funkcji biblioteki inpout32.dll.
Programator zbudowany jest w oparciu o klasyczny schemat: taktowany zegarem licznik adresu oraz sterowany wyłącznik napięcia. W roli wyłącznika w układzie wykorzystano stabilizator oparty na mikrokontrolerze 142ЕН2, który posiada wejście sterujące pozwalające na jego wyłączanie. Podczas konstruowania własnej wersji urządzenia Czytelnik może zastosować dowolny inny układ wyłącznika sterowanego. W układzie zastosowany jest również generator impulsów 50 ms oparty na kości 555АГ3, który ogranicza długość impulsu programującego, sprawiając, że programowe kontrolowanie odstępów pomiędzy impulsami staje się niepotrzebne (co jest istotne dla systemów operacyjnych typu Windows) i znacząco upraszcza algorytm programowania. Podczas testowania urządzenia zaobserwowano istotny wpływ zakłóceń na pracę liczników adresu, dlatego też radzę nie zwracać zbytniej uwagi na kondensatory zasilające (obecnie jest ich więcej niż na dołączonych rysunkach!). Programator wymaga zasilacza 5 V do czytania i zapisu emulatora, jak również zasilacza 30-woltowego (nie musi być stabilizowany) do programowania kości EPROM. W celu uzyskania 5 V można podłączyć programator do portu USB komputera, ale odpowiedzialność za ewentualne uszkodzenia płyty głównej spada na eksperymentujacego! Ponadto, jeśli wykorzystujemy gotowy przewód LPT, to rozsądnie jest go wcześniej sprawdzić: w egzemplarzu, który mi się trafił nie było żyły przewodzącej sygnał AUTOLF.
Uwaga! Programowany układ scalony powinno się wstawiać w podstawkę dopiero po podłączeniu programatora do komputera i po uruchomieniu aplikacji. Również zaleca się dodatkowo ręczne wyłączenie napięcia programowania w przypadkach, gdy nie jest ono potrzebne (odczyt danych z układu, sprawdzanie czy układ został prawidłowo wykasowany oraz podczas pracy z emulatorem).
SchematAplikacja sterująca programatorem pozwala na zapisanie w scalaku treści wybranego pliku, porównanie zawartości kości z zawartością danego pliku oraz umożliwia zapis zawartości scalaka do pliku, przy czym zarówno w całości, jak też wybranego fragmentu pamięci o rozmiarze od jednego bajta wzwyż. W celu wykonania takich operacji należy włączyć opcję "Opcje dodatkowe".
Przed zapisywaniem prawdziwych kości EPROM zaleca się przeprowadzenie kalibracji urządzenia, podczas której sprawdzana jest sprawność zegara taktującego, przy włączonym napięciu programowania w celu umożliwienia jego dostrojenia do odpowiedniej wielkości. Niesprawny zegar powoduje zawieszanie się programu podczas zapisu. Do działania aplikacji niezbędna jest biblioteka 'inpout32.dll', którą można ściągnąć ze strony logix4u. Nie testowano pracy programu pod Win 9Х/МЕ.
Emulator wykorzystywany do pracy niniejszym programatorem skonstruowany jest na bazie układu 537РУ10 ze statyczną pamięcią RAM wielkości 2 KB. Dla uzyskania kompatybilności z kośćmi EPROM sygnał OE ustawia się przy pomocy przełącznika na OE w trybie odczytu i WR w trybie zapisu. Ponadto, do kości emulatora jest dołączony kondensator elektrolityczny, który pozwala na krótkotrwałe zachowanie zawartości pamięci RAM podczas przenoszenia chipa emulatora z programatora do układu.
Wariant urządzenia wykonany w oparciu o inne elementy składowe (autor konstrukcji - Maksim)
Programator ten pozwala na ręczne programowanie układów 556РТ4. W celu zaprogramowania danej komórki ustalamy adres, wybieramy bit, który ma być ustawiony (zapis wartości "1"), włączamy napięcie programowania (ja wykorzystywałem do tego +12 V, chociaż zgodnie z normami wymagane jest niższe napięcie), a następnie na krótko wciskamy przycisk "Wybór" (zdecydowanie, ale bez zbędnego przytrzymywania pomiędzy wciśnięciem i zwolnieniem). Na zakończenie odłączamy napięcie programowania. Podczas programowania należy pilnować, aby scalak się nie przegrzewał. W momencie naciśnięcia przycisku "Wybór" przy braku napięcia programowania zawartość komórki sygnalizowana jest przy pomocy diod LED (zapalona dioda oznacza "0").
W trakcie montażu niniejszego programatora posłużyłem się numeracją wyjść, z którą spotkałem się przeglądając schemat jednego z programatorów opisanych w internecie, jak się okazało, zupełnie niezgodną z numeracją przedstawioną w katalogu. Jednakże ma to znaczenie jedynie podczas wymiany kości w już istniejących urządzeniach, w przypadku montażu nowych układów nie stanowi to zasadniczej różnicy. Wariant z katalogu również został przedstawiony na schemacie. Decyzję co do tego, który z nich wykorzystać, biorąc pod uwagę konkretne warunki, zostawiam w gestii Czytelnika.
Programator skonstruowany przeze mnie został zmontowany na bazie kawałka tworzywa sztucznego - nie należy tak postępować! Elementy instaluje się łatwo, ale potem bardzo źle się je lutuje (tworzywo sztuczne zaczyna się topić)!
Przejściówka 2х556РТ4 =>24-pinowa podstawka
Uwaga! Zmiany w budowie programatora oraz poprawki obsługującej go aplikacji wprowadzane są bez uprzedzenia!
Przejdź do opisu oprogramowania
W układzie interfejsu łączącego programator z komputerem wykorzystywany jest port LPT. W odróżnieniu od programatora РФ2/РФ5 układ ów nie wymaga do pracy dwukierunkowego trybu portu LPT. Urządzenie stworzone jest z myślą o wykorzystaniu maksymalnej równoległości linii danych, co zapewnia dużą prędkość pracy interfejsu.
Powinienem wspomnieć o tym, że zastosowałem tutaj rejestry 580ИР82, ponieważ miałem do nich dostęp, a ich podstawki bardziej mi odpowiadały niż te z rejestrów 555ИР23 i 555ИР22. Wolałbym co prawda rejestry 555ИР33 (74LS573) lub 555ИР37 (74LS574), jednakże takowych nie miałem akurat pod ręką.
W celu usunięcia ewentualnych błędów działania urządzenia napisany został specjalny program/debugger, który umożliwia ustawianie pojedynczych bitów w rejestrach, jak również odczytywanie bitów z podstawek kości. Sprawdzenia odczytu można dokonać przez zapisanie bajta do rejestru danych, a następnie poprzez odczytanie jego zawartości. Przy tym bit DE rejestru sterującego należy wyzerować. Można dokonać również diagnozy podstawki przez zwarcie wyjść D0-D7 z masą i odczytanie bajta - w tym przypadku bit DE powinien być ustawiony na "1", żeby przełączyć rejestr danych w stan wysokiej impedancji.
Test zegara: w przypadku P4 3GHz daje około 15 cykli w ciągu 0,1 ms oraz około 150 cykli w ciągu 1 ms. Jeśli zwracana wartość jest równa 0, oznacza to, że albo zegar nie działa, albo prędkość komputera jest niewystarczająca do pracy z tymże zegarem (nie testowano na maszynach o niskiej częstotliwości taktowania procesora). Jeśli zwróconą wartością jest 100000, to również świadczy to o niesprawności zegara. Teoretycznie zapis EPROM z użyciem UV powinien być wykonywany poprawnie niezależnie od prędkości maszyny, a w celu testowania zegara można zamontować dodatkowy rezystor umożliwiający kształtowanie dłuższego odstępu pomiędzy sygnałami (najlepiej jest podłączać taki rezystor przez przełącznik monostabilny, żeby nie zapomnieć go wyłączyć). Wykorzystanie wolnych komputerów może powodować problemy tylko w przypadku, gdy zastosowano tam pamięci FLASH typu AT29C010A, dla których istotny jest czas odstępu pomiędzy kolejnymi zapisami bajtów do bufora sektora - wówczas możliwe jest tylko napisanie wersji programu dla DOS.
Diagram rozmieszczenia zworek (w przyszłości może ulec zmianie!):
Najnowsza wersja źródła zasilania programatora to zasilacz zewnętrzny zamontowany w osobnej obudowie. Ponieważ nie miałem odpowiedniego transformatora, który by pasował do opisywanego układu, użyłem dwóch osobnych. Nie zastosowałem również osobnego transformatora 6 V, ponieważ nie widziałem szczególnej różnicy pomiędzy 6 V i 6,25 V, ale w razie czego, to ja takiego rozwiązania nie polecam.
Musiałem zrezygnować z zainstalowania stabilizatora na płytce programatora ze względu na to, że układy typu 580ИР82 zużywają sporą ilość prądu, i dlatego stabilizator znacząco się nagrzewał przy jednoczesnym spadku napięcia, zwłaszcza jeśli programowane były kości РФ2/РФ5. Pomimo to, pozostawiam tutaj stary schemat zasilacza, który daje się zrealizować przy wykorzystaniu innych rejestrów, na przykład 74НС573.
Uwaga dotycząca Vpp: Schemat zasilacza regulowanego zaczerpnięto z instrukcji stabilizatora napięcia 7805.
Uwaga dotycząca Vcc: zainstalowany stabilizator napięcia 7805 (produkcji rosyjskiej), pod obciążeniem dawał napięcie 4,85 V, dlatego "wsparłem" go najpierw diodą Д310 (spadek napięcia 0,2 V) i uzyskałem w ten sposób 5,05 V. Następnie tak dobierałem diody, aby uzyskać napięcia 6 V i 6,25 V (zgodnie z instrukcjami różnych kości EPROM). Całkiem możliwe, że w egzemplarzu zbudowanym przez Czytelnika wystąpi odmienny zestaw elementów.
Do pracy z układami scalonymi w obudowach PLCC potrzebna jest odpowiednia przejściówka. Można ją skonstruować z dwóch podstawek. Najpierw w oparciu o rozmiary większej z podstawek (DIP) należy wyciąć z materiału izolacyjnego, najlepiej z niefoliowanego tekstolitu lub getinaksu, prostokąt, który następnie przyklejamy do podstawki. Jeśli wyjścia mniejszej z podstawek (PLCC) znacząco wystają poza obręb podstawy, należy pod nią przykleić dodatkową podkładkę. Następnie do wyprowadzeń mniejszej z podstawek dolutowujemy cienkie pocynowane przewody, które można uzyskać rozplątując przewód wielożyłowy z cynowanymi żyłami albo oplot przewodu ekranowanego. W przypadku użycia podstawki typu ZIF w programatorze płaskie końcówki większej podstawki przejściówki powinny być rozgięte pęsetą tak, aby formowały kąt 90° i nie wywierały nadmiernego nacisku na podstawkę ZIF w momencie mocowania. Przykładamy małą podstawkę do miejsca montażu, obrysowujemy jej krawędzie, po czym wiercimy 7 otworów średnicy około 1 mm w kształcie odwróconej litery V ponad górną z obrysowanych krawędzi oraz podobne 7 otworów poniżej dolnej krawędzi, formując tym razem kształt litery V (patrz zdjęcie). Potem przyklejamy mniejszą z podstawek na przygotowane miejsce i przylutowujemy kolejno przewody do wyprowadzeń większej podstawki. Po zakończeniu lutowania końcówki małej podstawki dodatkowo przytwierdzamy do podłoża termoklejem. Należy zwrócić uwagę na to, że układy o 32 i 28 wyprowadzeniach w obudowach PLCC różnią się rozkładem końcówek. Ponadto powinniśmy zwrócić uwagę na napięcie zasilania, jako że 5 V może uszkodzić układ scalony przewidziany do zasilania prądem o napięciu od 3 do 3,3 V.
Programy oferowane są wraz z plikami źródłowymi w asemblerze FASM, wykonane przy pomocy IDE WinAsm Studio, pracują w systemach Win XP/2k, do ich uruchomienia wymagana jest biblioteka inpout32.dll.
Swoiste działanie programatora w przypadku niezgodności rozmiarów pamięci i zapisywanego pliku.
"Opcje dodatkowe" są wyłączone: jeśli wielkość pliku jest mniejsza niż rozmiar pamięci ROM, wówczas program wyświetla komunikat o wystąpieniu błędu, jeśli natomiast wielkość pliku jest większa od rozmiaru pamięci, wtedy w kości zostanie zapisana taka ilość bajtów pliku, licząc od początku tegoż, jaka może się pomieścić w pamięci.
"Opcje dodatkowe" są włączone: w dowolne miejsce pamięci możemy zapisać dowolnie wybraną sekwencję bajtów pliku. W takim przypadku program sprawdza, czy nie doszło do przekroczenia granic przestrzeni adresowej pamięci ROM. W przypadku układów o sektorowej organizacji zapisu wymagana jest zgodność przemieszczenia w pamięci z początkiem sektora. Dla wygody w trakcie otwierania pliku jego wielkość jest od razu umieszczana w polu tekstowym "Długość bloku". Uwaga, w pola tekstowe "Opcji dodatkowych" można wpisywać jedynie liczby w reprezentacji szesnastkowej.
Wszystkie programy posiadają interfejs w języku rosyjskim i przedstawiają sobą aplikacje w pełni unikodowe.
Program stosowany do podziału obrazu pamięci ROM na 2 lub 4 części i ponownego łączenia tychże części w jedną całość (w przypadku stosowania w 8-bitowych układach ROM przy 16 lub 32-bitowej szynie danych). Program przetestowano w systemach operacyjnych WinXP/2k/9x.
Początkowo do kasowania kości EPROM stosowałem wyposażoną w timer lampę bakteriobójczą do użytku domowego o nieokreślonej mocy. Kasowanie układu trwało około 5 minut przy lampie oddalonej o 10-15 cm od kości umieszczonej na folii metalowej. Scalaki wyraźnie się rozgrzewały, więc pozwalałem im stygnąć około 15-20 min, po czym sprawdzałem, czy zostały wyczyszczone, a nie wykasowane układy poddawane były powtórnej obróbce. Do całkowitego skasowania kości pamięci potrzebne było od jednego do 5 lub 6 wyżej opisanych cyklów. Jednakże lampa była pożyczona i musiałem ją po jakimś czasie oddać.
Następnie nabyłem lampę UV wykonaną analogicznie do lamp energooszczędnych. Testowałem ją na dwóch egzemplarzach układów 27С010. Kasowanie przeprowadzałem położywszy układy w bliskiej odległości od lampy. Na cały proces potrzebny jest dość długi okres czasu (w moim przypadku potrzebne były dwie noce), co nie jest zbyt wygodne, jeśli trzeba szybko wykasować zawartość kości. Jednak ma to również swoje dobre strony, bowiem układy praktycznie się nie nagrzewają, dzięki czemu, mam nadzieję, czas przydatności układów do pracy będzie znacznie dłuższy.