ATMEL - obsługa programu
Program napisany został w BASIC'u i zaleca się uruchamianie go w BASIC'u. Turbo
Basic jest za szybki, mogą wystąpić błędy w programowaniu. Wynika to z tego, że po każdym kolejnym impulsie
programującym musi nastąpić przerwa conajmniej 10ms. Ze względu na swoją powolność BASIC zapewnia te warunki.
Po uruchomieniu programu, ukaże się MENU, a w nim opcje:
1 - Odbiór RS-232 4800 bodów
Służy do transmisji danych z PC'ta. Jak każdemu wiadomo, nie istnieje assembler dla
procesora AT89C2051 napisany na Atari. W związku z tym program źródłowy napisać należy na PC (albo ręcznie) :) Plik
wynikowy typu INTEL.HEX należy przesłać do Atari. Opcja 1 w MENU pozwala to zrobić szybko i elegancko. Schemat
interfejsu znajduje się obok ("kliknij" aby powiększyć). Interfejs włącza się od strony Atari do PORTU1 (tam
gdzie joystick), a od strony PC do PORTU COM2. (Można też do PORTU COM1, zależy to od.... no właśnie, sam musisz
sparwdzić na co reaguje Twój program komunikacyjny do obsługi RS-232. Tworzone są takie dziwactwa, że reguły nie podam.
W PC który służył do testów interfejs włączony był do PORTU COM2, a obsługa transmisji następowała z poziomu DOS'a
PC.
Polecenie: MODE COM2:4800,n,8,1
ustawiło trub transmisji. Skompilowany plik typu INTEL.HEX został przetransmi towany po wydaniu polecenia:
COPY NAZWA.HEX COM2
Dane przesyłane są w standardowej konfiguracji: bit startu, osiem bitów danych, bit stopu. Jeżeli w ciągu kilu sekund po
uruchomieniu transmisji (najpierw Atari potem PC) nie dojdzie do transferu danych, program wróci do MENU, a komunikat:
Bufor= 0 Plik: Brak
określi że operacja nie powiodła się. Gdy transmisja zakończy się powodzeniem, komunikat:
Bufor= xxx Plik: HEX
informuje o ilości przesłanych bajtów xxx i typie pliku. W tym przypadku INTEL.HEX. Taki plik nie nadaje się do
zaprogramowania procesora AT89C2051!!!
Istnieje możliwość ręcznego wprowadzenia kodów gotowego programu. W tym celu należy kody programu wpisać jako znaki
ASCII do zmiennej A$ która jest buforem danych programatora. Ale to jazda dla naprawdę wtajemniczonych. Kto chce więcej
informacji niech pisze na mój adres (Zenon/DIAL). Dane typu INTEL.HEX można znaleźć w różnych opracowaniach dla
AT89C2051.
Uruchomienie transmisji RS-232
Przygotuj wszystko co trzeba w PC, ale ostatniego polecenia nie zatwierdzaj jeszcze. Po uruchomieniu programu ATMEL.BAS
naciśnij klawisz [1]. Po chwili ekran zgaśnie. Naciśnij klawisz [ENTER] w PC.
2 - Konwersja HEX-DEC
Plik INTEL.HEX należy poddać konwersji Ta opcja zamienia dwa znaki HEX na jeden typu
DEC. (W buforze zapamiętany jest jako jeden znak ASCII.) Przykład:
| INTELHEX | = | 41 |
| DEC | = | 65 |
| W buforze | = | A |
Każdy plik INTEL.HEX przesłany z PC (opcja 1) przed zaprogramowaniem procesora AT89C2051 należy poddać konwersji!
"Biegnący" do przodu licznik wskazuje aktualną pozycję w buforze.
Procedura konwersji uwzględnia adres lokowania danych w buforze. Wynika to z zasady formowania "paczek" danych
INTEL.HEX. Każda "paczka" danych ma swój adres docelowy więc należy je lokować w buforze tak, by odwołania do procedur
trafiały pod właściwe adresy. Przykład:
Paczka1 to osiem bitów danych
adres docelowy to 0000.
Paczka2 to sześć bitów danych
adres docelowy to 000F.
Po konwersji dane w buforze znajdą się na pozycjach jak niżej.
| Pozycja | 11111111112222222.... |
| | 012345678901234567890123456.... |
| Dane | adde3scd | 2sdfcred | ..... |
| | "Paczka1" | "Paczka2" | |
Po zaprogramowaniu procesora, dane w jego pamięci znajdą się pod odpowiednimi adresami.
UWAGA! Konwersji można poddać tylko plik typu INTEL.HEX. Gdy plik jest innym plikiem,
program wykryje to i plik taki nie zostaje poddany konwersji. Jest to zresztą niemożliwe. Powodowałoby błąd, z
jednoczesnym błędnym zaprogramowaniem procesora AT.
Globlanie. Program sprawdza pierwszy bajt w buforze. Jeżeli jest to znak : (dwukropek) to mamy do czynienia z plikiem
typu INTEL.HEX który należy poddać konwersji HEX-DEC. W innym przypadku plik traktowany jest jako typu DEC, gotowy do
zaprogramowania procesora AT.
3 - Odczyt danych FEEPROM
Wywołując tą opcję, można odczytać dane znajdujące się w pamięci FEEPROM (Flesh
EEPROM) procesora AT. Oczywiście jeżeli to możliwe. Bo jakiś dowcipniś przy programowaniu mógł pozwolić sobie na żart i
zablokować odczyt przez osoby niepożądane. Jeżeli tak było to... życzmy mu długich lat życia.
By odczyt był możliwy (pomijając w/w warunek) do programatora należy podłączyć napięcie +15V. Inaczej odczytane dane
będą przypadkowymi liczbami. Należy podać ilość odczytywanych danych (0-2048) (2kB). Odczytane dane NIE PODLEGAJĄ już
konwersji HEX-DEC!!!
4 - Zapis danych na dysk
Zarówno plik danych typu HEX jak i DEC można zapisać na dysk. Po wywołaniu opcji
należy podać: D:NAZWA.HEX lub D:NAZWA.DEC w zależności od tego w jakiej formie ma zostać plik danych
zachowany na dysku. Gdy bufor jest pusty, operacja zapisu nie wykona się.
5 - Odczyt danych z dysku
Odczyt dowolnego pliku. Program nie sprawdza tego, bo założenie jest takie, że
obsługujący program wie co robi. Mówiąc po ludzku, nie jest pijany. O tym, jaki plik został odczytany, informuje
komunikat: Plik: ---. Ile bajtów odczytano wyświetli się w komunikacie: Bufor: xxx.
Globlanie. Program sprawdza pierwszy bajt w buforze. Jeżeli jest to znak : (dwukropek) to mamy do czynienia z plikiem
typu INTEL.HEX który należy poddać konwersji HEX-DEC. W innym przypadku plik traktowany jest jako typu DEC, gotowy do
zaprogramowania procesora AT.
6 - Programowanie ATMEL'a
Rozpoczyna się programowanie. Do programatora należy podłączyć napięcie +15V. Gdy
jest niższe niż +12V proces programowania nie nastąpi lub zaprogramowane zostaną błędne dane. Komunikat podaje numer
programowanej komórki, daną programowaną i daną zaprogramowaną (odczytaną już z pamięci FEEPROM procesora). Jednak nie
są tu wykrywane błędy podczas programowania. Do tego służy opcja WERYFIKACJA. Biegnący do przodu licznik wskazuje
numer programowanego bajtu, co jest równoznaczne i rzeczywistym adresem w pamięci FEEPROM procesora AT89C2051.
UWAGA! W czasie programowania nie należy naciskać klawisza BREAK ani RESET, bo może to
spowodować uszkodzenie programowanego procesora (obecność napięcia +12V na pinie1).
7 - Weryfikacja
Sprawdzenie poprawności zaprogramowania procesora. Wykryty błąd powoduje zatrzymanie
weryfikacji. Komunikat podaje numer bajtu (adres), daną do zaprogramowania (z bufora) i daną odczytaną z pamięci FEEPROM
procesora. Naciśnięcie klawisza SPACJA pozwala kontynuować proces weryfikacji w celu sprawdzenia dalszej części pamięci.
Naciśnięcie klawisza ESC przerywa proces weryfikacji. Następuje powrót do MENU głównego programu.
Inne (ukryte) opcje
Gdy program wyświetla główne MENU, naciśnięcie klawisza ESC powoduje restart
programu. Bufor danych zostaje wykasowany.
W lewym górnym rogu komunikat informuje o ostatnio dokonanej czynności. Np. Programowanie... Ostatnio wykonaną operacją
było programowanie procesora. Pod linią podkreślenia ukazują się komunikaty o tym co się dzieje. Na komunikaty należy
odpowiednio do ich treści reagować.
UWAGA! Program nie jest odporny na błędy! Gdy wystąpią, ratunkiem jest ponowne
uruchomienie programu i ponowna próba dokonania wybranej operacji.
Zenon/DIAL
ATMEL.BAS - opisywany program
Do eksperymentów z programatorem pobierz dwa pliki:
TEST.HEX
TEST.DEC
|