You are on page 1of 3

Programowanie

Programator BASCOM−a
pomocą przy programowaniu
w C, asemblerze, itd...
Jeśli do tej pory programowałeś procesory który powstał w asemblerze lub z użyciem
tylko i wyłącznie z wykorzystaniem środo− kompilatora C? jak poradzi sobie z nim posiadany przez
wiska BASCOM, zupełnie nie musiałeś się Czy wiesz, że do „spuszczania” do proce− Ciebie programator – ten artykuł jest właś−
przejmować powstającymi przy kompilacji sora takich „obcych” plików doskonale nada− nie dla Ciebie. Znajdziesz w nim szereg
plikami. Programowanie idzie jak po maśle je się… BASCOM AVR w wersji DEMO? informacji, które uspokoją i rozwieją Twoje
i nie ma żadnych problemów. Jeśli wpisywanie do procesora plików wątpliwości. Zakładam, że posiadasz wiedzę
A czy już natknąłeś się na problem, jak wynikowych skompilowanych przez kogoś na temat BASCOM−a, ale chcę zaznaczyć, że
wpisać do procesora AVR „obcy”, ściągnię− innego sprawia Ci problem lub też chcesz nie jest to konieczne do zrozumienia treści
ty ze strony internetowej plik programu, zająć się innym narzędziem i martwisz się, artykułu – może po prostu pomóc.

Późna noc... Projekt powoduje coraz większą Jeśli chcesz skorzystać z „obcych” plików mator jest od takiego ograniczenia całkowi−
frustrację. Płytka została już dawno złożona, wynikowych, to jedyne, czego potrzebujesz cie wolny. Sam programator możemy potrak−
wszystkie połączenia są sprawdzone. Podłą− się nauczyć w tej chwili, jest samodzielne tować w uproszczeniu jako program darmowy!
czone zostały odpowiednie napięcia zasilania. wczytanie tych „obcych” plików wynikowych 4. Obsługa różnych programatorów jest
W środek trzeba włożyć jeszcze jeden układ, do BASCOM−owego narzędzia obsługujące− bardzo do siebie zbliżona. Jeśli więc rozsze−
jeden niewielki element, który wymaga jed− go programator. Nie jest to czynność trudna, rzysz swoją wiedzę na temat już wstępnie
nak zaprogramowania... Tym razem program w swej podstawowej formie wręcz banalna. okiełznanego programu, nie będziesz miał
nie powstał w BASCOM−ie... Niebo przecina Okazuje się jednak, że niektórzy dają złapać problemów, jeśli postanowisz poznać coś
złowieszcza błyskawica. się w pewne czyhające tu pułapki. Jeśli więc innego.
Nie stresuj się, naprawdę nie ma problemu. program wciąż nie działa, a przeczytałeś już
Zerknij na rysunek 1. Pokazuje on sche− instrukcje, sprawdziłeś, czy urządzenie jest Rozpoczęcie pracy
mat pracy z każdym kompilatorem. włączone do prądu, wypróbowałeś uderzenia Jako przykład wykorzystam tutaj projekt
Okazuje się, że niezależnie od rodzaju pod różnymi kątami – ten tekst jest być może „Cyfrowej stacji lutowniczej” (EdW 7/2004),
kompilatora, niezależnie od tego, w jakim ję− właśnie dla Ciebie. co do którego niektórzy stwierdzili, iż okazał
zyku program jest napisany, zawsze na koniec się „pełen pułapek”. Aby moja sytuacja była
powstaną, co najwyżej dwa najważniejsze Programator BASCOM−a teraz identyczna jak Twoja, wchodzę na stro−
pliki wynikowe: plik programu oraz plik Na początek proponuję poznać dobrze pro− nę EdW i ściągam plik programu AVT−2727.
danych dla pamięci EEPROM. Zawsze też gram wbudowany w środowisko BASCOM. Uruchom teraz środowisko BASCOM. W tej
pliki te mają znany i ogólnie przyjęty format. Dlaczego? Przedstawię garść argumentów jed− chwili powinieneś mieć przed sobą samo
Jeżeli przykładowo chcesz wpisać do pro− nocześnie omawiających mniej więcej, z czym
cesora program udostępniony na stronie mamy do czynienia:
Rys. 1
„Elektroniki dla Wszystkich” przez któregoś 1. Pojawiło się przynamniej kilka
z autorów, nie będziesz się musiał nawet mar− kursów, jak zaprogramować procesor z po−
twić kompilacją. Autorzy zwykle umieszczają ziomu bardzo wygodnego środowiska, ja−
tutaj zarówno program źródłowy, jak i oma− kim jest BASCOM. Chyba przy każdym
wiane pliki wynikowe. opisanym na łamach tego pisma projekcie
Jeśli nadal budzi to Twoje obawy – przyj− programatora znalazło się troszkę miejsca
rzyj się dowolnemu programowi, jaki two− na opisanie sposobu jego współpracy z tym
rzyłeś w BASCOM−ie. Zajrzyj do wnętrza programem. Nie będzie więc konieczne
jego katalogu. Jeśli kod został poprawnie poznawanie nowego programu, ponowna
skompilowany, gwarantuję Ci, że znajdziesz konfiguracja do współpracy z nowym
plik z rozszerzeniem .HEX, ewentualnie .BIN narzędziem. Jednym zdaniem: mniej pracy
– zależy to od ustawień kompilatora. Jeśli i stresu na początek.
program korzysta dodatkowo z pamięci 2. Program jest wciąż rozwijany. Sam
EEPROM, najprawdopodobniej znajdziesz w sobie obsługuje znacznie większą listę
także plik z rozszerzeniem .EEP. układów niż niejeden odpowiednik freeware.
BASCOM, zupełnie Cię o tym nie infor− 3. I co niezmiernie ważne: o ile kompila−
mując, stworzył pliki takie, jak każdy inny tor wbudowany w wersję DEMO pakietu ma
normalny kompilator. Potem automatycznie ograniczenie odnośnie do długości genero−
wczytał je do programatora. wanego kodu (2kB), wbudowany progra−

26 Elektronika dla Wszystkich


Programowanie
środowisko, bez otwartego kodu programu. Gdy tylko uda nam się przebrnąć przez te „świeże” dane, z których ja teraz korzystam,
Jeśli otwarty został program, nad którym pra− wstępne czynności, będziemy mieli przed wczytasz go bez trudu – obecne na stronie
cowałeś ostatnio, polecam jego zamknięcie. sobą okno dość wygodnego narzędzia progra− pliki zostały przygotowane, żebyś bez żadne−
Dzięki temu nie zmienisz przez przypadek mującego. Teraz trzeba tylko zmusić go do go trudu z nich skorzystał. O problemach
ustawień swojego projektu. pracy z innymi plikami niż to zwykle bywa. jakie mogą się pojawić, napiszę za chwilę.
Napotkamy teraz pierwszy problem: Oka− Rysunek 2 będzie pomocny przy wyjaśnianiu Teraz nie chcę za bardzo utrudniać sprawy.
zuje się, że nie można odpalić programatora zasady pracy. Najbardziej interesujące nas Wczytajmy więc przykładowe dane do bu−
przy pustym obszarze pracy. Rozwiązanie, elementy interfejsu programu zaznaczyłem tu fora pamięci EEPROM. Koniecznie przełącz
chociaż nie jest eleganckie, jest bardzo proste: różnymi kolorami Dalej, dla naszej wspólnej zakładki buforów tak, aby aktywna była teraz
tworzymy nowy projekt, najszybciej zrobisz wygody, będę się do tego odwoływał. zakładka EEPROM (zaznaczyłem ją na zielo−
to chyba, wciskając kombinację CTRL+N. no). Jeśli tego nie zrobisz, mimo tego, że
W nowo otwartym oknie nie będziemy nic Pliki, formaty... wczytujesz plik z rozszerzeniem EEP, nasz
pisać. Chodziło nam tylko o to, aby w menu Zabierzmy się więc do wpisywania danych do programator wczyta dane do aktywnego bufo−
uaktywniła się potrzebna nam funkcja. pamięci programu. Przypilnuj, aby aktywną ra, a nie do pamięci EEPROM. Jest to dość
Możemy teraz wreszcie uruchomić program w tej chwili zakładką była FlashROM (zakreś− ważny szczegół, o którym należy pamiętać.
obsługujący programator. Znów polecam tutaj lona kolorem czerwonym). Następnie wczytaj Samo wczytywanie danych przebiega tak
skrót klawiaturowy (F4). Uważaj na urucham− do niej dane. Najprościej to zrobić, wybierając jak poprzednio i nie powinno sprawić trud−
ianie programatora z poziomu paska narzędzi. z paska narzędzi ikonę folderu (kolor fioletowy). ności. W oknie wyboru pliku, z listy „Pliki
Pojawi się rozwijalne menu, z którego należy Pojawi się typowo Windowsowe menu wyboru typu” należy wybrać pozycję „EEPROM
wybrać opcję „Manual Program”. W innym pliku. Plik, który musimy odszukać, może być image”. Dzięki temu widoczne staną się pliki
przypadku programator zaraz po uruchomie− zapisany w jednym z dwóch formatów. Najczę− posiadające rozszerzenie EEP.
niu rozpocznie próbę wpisania do procesora ściej będzie on miał rozszerzenie .HEX, rzadziej
programu aktualnie otwartego w edytorze. – .BIN. Są to dwa zupełnie różne formaty zapi− Programowanie samo
Zapewne ujrzysz teraz kilka komunikatów su, a umiejętność ich odróżnienia na podstawie w sobie
ostrzegających o błędzie. Po pierwsze – pro− zawartości już niedługo okaże się bardzo przy− Podsumujmy naszą aktualną sytuację: Progra−
gramator nie może znaleźć pliku skompilo− datna. W tej chwili nie ma to znaczenia. Nie− mator wczytał już wszystkie dane, które chce−
wanego programu – ignorujemy to ostrzeże− zależnie od formatu zostanie on automatycz− my zapisać do procesora. Dotyczy to zarówno
nie – przecież odpowiedni plik chcemy wska− nie rozpoznany przez programator na pod− pamięci programu, jak i danych. Przełączając
zać samemu. Możliwe także, że zostaniesz stawie rozszerzenia i dane zostaną poprawnie się między zakładkami, możemy podejrzeć,
poinformowany o braku zgodności wykrytego zinterpretowane, a następnie wczytane. a nawet edytować zapisywane dane.
procesora z tym dla jakiego ustawiona została Ja wczytuję tutaj plik lutown.hex. Jeśli ro− Oczywiście to, że dane znajdują się w bu−
kompilacja. Ten fakt także nie ma dla nas zna− bisz to samo – pamiętaj o ustawieniu w liście forze, wcale nie oznacza, że są już w naszym
czenia – odpowiedni typ procesora został wyboru zatytułowanej „Pliki typu” pozycji docelowym urządzeniu. Jeśli jeszcze tego
zapewne wybrany podczas kompilacji progra− „Intel HEX”. Inaczej pliki z rozszerzeniem nie zrobiłeś, podłącz teraz programator do
mu i plik wynikowy zawiera kod przystoso− HEX nie będą widzialne. Ilustruje to rysunek 3. procesora. Umieść procesor w programatorze.
wany specjalnie dla niego. W obszarze podglądu zawartości bufora, Przyda się teraz przycisk identyfikacji proce−
który do tej pory zapisany był samy− sora. Na rysunku 2 jest to bardziej wysunięty
mi wartościami FF (szesnastkowo), na lewo przycisk z otoczonych żółtym kolo−
zobaczysz teraz wczytane właśnie rem. Jeśli połączenie z programowanym ukła−
dane. Po prawej stronie na niebies− dem przebiegło pomyślnie, zostanie on ziden−
kim tle dostępny będzie podgląd tych tyfikowany i automatycznie wybrany z listy
samych danych, reprezentowanych dostępnych układów (kolor niebieski).
jednak jako znaki w kodzie ASCI. W przeciwnym wypadku pojawi się okienko
Istnieje co prawda możliwość informujące o kłopocie z identyfikacją układu
modyfikowania bufora zarówno – może to oznaczać błędne podłączenie kabla
poprzez podanie odpowiedniej war− programującego.
tości szesnastkowej, jak i wpisanie Gdy procesor został już poprawnie wykry−
znaków bezpośrednio z klawiatury ty, sprawa jest już bardzo prosta. Aby zapro−
w niebieskim polu, jednak możli− gramować układ, wystarczy użyć przycisku
wość ta jest raczej zupełnie nieprzy− „Autoprogram”. Ale... tu przykra niespo−
datna w przypadku pamięci programu. dzianka…
W tej chwili posiadamy już w Niestety, nie zawsze się to udaje, a czasem
Rys. 2 buforze dane, jakie należy zapisać do pamięci Automat nie programuje pamięci danych,
Rys. 3 programowanego układu. Jest to jednak tylko tylko pamięć programu.
pamięć programu. Jak wiadomo, większość Ja osobiście preferuję pełną kontrolę nad
procesorów AVR posiada także nieulotną układem. W praktyce programowanie prze−
pamięć danych EEPROM. Program, który prowadzam więc w następujący sposób, który
chcemy uruchomić może wymagać wpisania przy odrobinie wprawy wcale nie jest dużo
odpowiednich danych także do tej pamięci. trudniejszy niż programowanie automatyczne,
Jeśli tak jest istotnie, wśród wygenerowanych a pozwala ominąć ewentualne przykre niespo−
przez kompilator plików znajdziesz plik z roz− dzianki:
szerzeniem .EEP. 1. Jeśli nie mam do czynienia z nowym
Tak też jest w przypadku przykładowej układem, czyszczę jego pamięć za pomocą
stacji lutowniczej. Z plikiem tym było troszkę najbardziej wysuniętego na prawo przycisku
problemów, jednak jeśli pobrałeś te same spośród oznaczonych na pomarańczowo.

Elektronika dla Wszystkich 27


Programowanie
2. Przełączam zakładkę na FlashROM Między innymi z tych względów format ten IntelHEX tak jakby był to plik binarny. Ilus−
i programuję pamięć za pomocą przycisku jest stosowany raczej rzadko. Dużo częściej truje to rysunek 6.
oznaczonego na biało (tego z czerwoną spotkamy się z formatem IntelHEX. Gdy okaże się, że posiadany plik obrazu
strzałką). Program automatycznie wykonuje Nie będę się wdawał tutaj w szczegółowy pamięci EEPROM jest w formacie IntelHEX,
także sprawdzenie poprawności zapisu. opis całej specyfikacji IntelHEX. Skupię się BASCOM nie zechce wczytać go bezpośrednio.
3. Jeśli to konieczne, przełączam się na jedynie na tak zwanym formacie uproszczo−
Listing 1
zakładkę EEPROM i programuję pamięć nym, mającym zastosowanie przy przestrzeni
identycznie jak pamięć programu. Trzeba adresowej do 64KB. :0500000028BC026400B1
:00000001FF
pamiętać tutaj, że w procesorach AVR nie Na pierwszy rzut oka to, że mamy do czy−
da się wyzerować pamięci programu bez nienia z plikiem formatu IntelHex, a nie z pli− Napisałem oto, jak możesz zorientować
czyszczenia pamięci danych. Ma to na kiem binarnym, można stwierdzić poprzez się, że rzeczywiście masz problem. Teraz pora
celu ochronę danych przed niepowoła− otwarcie pliku za pomocą dowolnego edytora wyjaśnić, jak sobie z tą trudnością poradzić.
nym dostępem. tekstowego. W przypadku pliku binarnego Wydawałoby się, że jedynym sensownym
Uwaga 1: Doświadczenie wykazuje, że przy− zobaczymy prawdopodobnie dość dużą ilość rozwiązaniem jest wykorzystanie jakiegoś
cisk odświeżenia zawartości bufora (Buffer−> „chaszczy”, a same dane będą wizualnie cha− programu, który umożliwi dowolne przejście
Reload) nie działa prawidłowo z plikami otyczne. Natomiast plik IntelHEX jest pli− między opisanymi formatami. Na stronie
spoza projektu utworzonego poza BASCOM’− kiem ASCII. Oznacza to, że zapisane w nim „Elektroniki Praktycznej” znaleźć można pro−
em. W praktyce oznacza to, że w przypadku dane kodowane są do poziomu znaków, które gram o wdzięcznej nazwie Konwerter HEX−
gdy kod programu został poprawiony i chce− można odczytać w dowolnym edytorze tekstu. >BIN. Można i tak, ale chce Ci pokazać dużo
my wczytać nowy kod do bufora, trzeba po prostszą drogę. Można zastosować małą
prostu ponownie otworzyć odpowiedni plik. Rys. 4 sztuczkę. Aby BASCOM „zrozumiał“, że
Uwaga 2: Jeśli sam procesor nie ma pod− ma do czynienia z plikiem w formacie
piętego zasilania, możliwa będzie jego iden− IntelHEX, a nie ze zwykłym formatem
tyfikacja. Okazuje się jednak, że moc dostar− binarnym, konieczne jest, aby posiadał on
czana przez programator nie umożliwia już rozszerzenie HEX. Zmieńmy więc całą
prawidłowego przebiegu procesu programo− nazwę naszego pliku na eeprom.hex.
wania. Jeśli więc pasek postępu progra− Teraz po wybraniu zakładki EEPROM
mowania zatrzymuje się w miejscu – sprawdź wczytujemy do niej nasz plik o zmienio−
zasilanie urządzenia (programatora), w któ− nej nazwie (pamiętaj o odpowiednim
rym znajduje się programowany element. ustawieniu pola „Pliki typu”).
Według powyższego opisu bez żadnych I to cała filozofia. Plik zostanie prawi−
problemów zaprogramujesz procesor w więk− dłowo wczytany do bufora, który jest
szości sytuacji. Mimo tego, że często pora− aktualnie aktywny (do bufora EEPROM).
dzisz sobie bez informacji, jakie zawarłem Plik składa się z rekordów, każdy zakończony I o to nam chodziło!
dalej – polecam ich przeczytanie. Może się to znakiem końca linii oraz powrotu karetki (13,
okazać przydatne w przyszłości. 10 dziesiętnie). Koniec pliku oznaczony jest Uwagi końcowe
przez specjalną sekwencję. Ogólną zasadę Podczas pisania artykułu korzystałem z ma−
HEX, BIN, tworzenia rekordu pokazuje rysunek 4. teriałów zamieszczonych na stronie semmix.pl.
a pamięć EEPROM Każdy bajt jest reprezentowany przez kod Dokładny link do opisu formatu IntelHEX:
Poprzednio wspomniałem o ewentualnych szesnastkowy zapisany za pomocą dwóch http://semmix.pl/mipc/specyf/filehex/inhexup.htm
problemach z plikiem zawierającym obraz znaków ASCII. Listing 1 pokazuje dane Opisałem tutaj, jak posłużyć się do
(image) pamięci danych. Pamiętasz – plik pamięci EEPROM zapisane w formacie Intel− naszych celów programem−programatorem
z danymi pamięci programu można spotkać HEX. Jest to dokładnie to, co ujrzysz, gdy wbudowanym w pakiet BASCOM. Choć pro−
z dwoma rozszerzeniami. Będzie to HEX albo otworzysz plik w formacie IntelHEX w zwyk− gramuję także w innych językach, bardzo chęt−
BIN. Oba te rozszerzenia oznaczają dwa różne łym notatniku. Dla porównania rysunek 5 nie posługuję się opisanym programem. Jest on
formaty. Okazuje się, że obraz pamięci EEP− pokazuje wczytane dane. dla mnie zupełnie wystarczający, a przy tym
ROM także może zostać wygenerowany przez Rozumiesz już, jak łatwo jest odróżnić te prosty w obsłudze. W sieci dostępny jest dar−
kompilator w jednym z tych dwóch formatów. pliki od siebie? Zwykle, gdy wczytasz dane mowy program PonyProg, który, jak wynika
Jednak rozszerzenie zawsze będzie takie samo do bufora i ujrzysz w niebieskiej części z opisu, również umożliwia obsługę naszego
(EEP)... Programator BASCOM nie posiada okienka, że dane układają się w coś podob− sprzętu. Interfejs wygląda dość interesująco.
możliwości ich automatycznego rozróżnienia, nego do tego Zainteresowanych odsyłam na stronę źródłową:
co może spowodować zapisanie do pamięci co widzisz na lis− http://www.lancos.com/prog.html
zupełnie innych danych, niż byśmy chcieli. tingu 1, możesz Mimo że program ten jest inny niż opisany,
Przy odrobinie wiedzy jednak rozpoznamy mieć pewność, trzeba pamiętać, że zasady jego obsługi się nie
bez problemu format pliku sami i w razie że poleciłeś zmieniają. Nadal istnieją bufory, przyciski
potrzeby przeprowadzimy jego konwersję. Rys. 5 programatorowi kasujące procesor, zapisujące do niego dane.
Dużo prostszy w konstrukcji jest tak wczytać plik To bardzo dobra wiadomość: jeśli dobrze
Rys. 6
zwany format binarny. Plik taki zawiera po poznałeś jeden programator –
prostu dokładny obraz danych, jakie należy będziesz umiał obsłużyć je
wpisać bezpośrednio do pamięci. Nie ma tutaj wszystkie.
informacji, pod jaki adres należy zapisać dane Na koniec życzę efektywnego
– domyślnie będą wpisywane od początku i bezbolesnego programowania!
pamięci. Brak jakichkolwiek mechanizmów
synchronizacji czy wykrywania błędów. Radosław Koppel
Koniec danych wyznacza tutaj koniec pliku. radoslaw.koppel@edw.com.pl

28 Elektronika dla Wszystkich

You might also like