..:: Serious Magazine ::..
wydanie 13

  Wstępniak
  Serious...
  Konkurs - rozwiązanie
  Wspomnienie
  Wiedza
  Koronkowa robota
  Tester EPROM
  Prog. równoległy AT89C2051
  ATMEL - obsługa programu
  EPROM - programator...
  Oporniki, oporniki...
  Blokada komputera
  Archiver
  Wizyta kosmitów...
  Kompresja arytmetyczna
  Analizator stanów logicznych
  ASL - obsługa
  Moja miłość
  Powroty z przeszłości
  Porady
  Pracownia elektronika
  Parowanie tranzystorów
  Pętla induktofoniczna
  Super, extra, cacy cartridge
  Makroassembler ATMAS II

  Wyjście
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

Schemat - "kliknij" aby powiększyć       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.

      Pozycja11111111112222222....
       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

Następny artykuł Do góry Poprzedni artykuł