mikrokontrolery.net

 

   

Jaki kompilator wybrać?
Spośród wielu dostępnych w sieci kompilatorów języka C na szczególne zainteresowanie zasługuje SDCC (http://sdcc.sourceforge.net/), czyli "Small Device C Compiler". Jest to kompilator rozpowszechniany na zasadach Open Source, czyli za darmo wraz z kodem źródłowym. Kompilator ten jest w stanie generować kod wynikowy dla kilku rodzin mikrokontrolerów, m.in. : 8051, Z80, PIC.

Podstawową niedogodnością tego kompilatora jest fakt, że jest on uruchamiany z wiersza poleceń i nie zawiera edytora umozliwiającego proste pisanie programów. Jednak dostępny jest niezależny edytor MIDE (http://www.opcube.com/), współpracujący z SDCC. Edytor ten jest bardzo łatwo "zmusić" do wspólpracy z SDCC, wystarczy tylko podać ścieżkę dostępu do katalogu z kompilatorem.

Pozostaje jeszcze tylko sprawa wgrania do procesora pliku z programem. Najwygodniej jest użyć do tego celu programatora ISP (choć nie każdy mikrokontroler 8051 może być progrmowany przez ISP). Ja korzystam z układu opracowanego przez firmę AEC Electronics z Nowej Zelandii, oraz programu go obsługującego, równiez tej firmy. Program ten dobrze pracuje w systemie Windows XP, pomimo tego, że jest przeznaczony dla środowiska DOS. Także ten program można w prosty sposób zintegrować z edytorem MIDE, co w efekcie da kompletne środowisko do opracowywania programów w języku C dla mikrokontrolerów rodziny 8051.

Główne okno programu MIDE przedstawia poniższy zrzut :

Konfiguracja programu do współpracy z SDCC :

Konfiguracja programu do współpracy z programatorem AEC_ISP :

Wygląd głównego okna programu AEC_ISP :

Jak widać menu programu składa się z 13 opcji :

A - Load HEX file to Flash buffer - wczytuje zawartośc pliku *.hex z kodem programu do bufora.

B - Load HEX file to EEPROM buffer - wczytuje zawartość pliku *.hex z danymi przeznaczonymi do zaprogramowania pamieci EEPROM do bufora.

C - Display Flash buffer - wyświetla zawartość bufora pamięci programu

D - Display EEPROM buffer - wyświetla zawartość bufora pamięcu danych EEPROM

E - Program - Rozpoczyna proces programowania mikrokontrolera

F - Read Flash & EEPROM to buffer - odczytuje z mikrokontrolera zawartość pamięci programu oraz danych EEPROM i zapisuje ją w buforze.

G - Save Flash buffer to HEX file - zapisuje zawartość bufora pamięci programu do pliku *.hex na dysku.

H - Save EEPROM buffer to HEX file - zapisuje zawartość bufora pamięci danych EEPROM do pliku *.hex na dysku.

I - Reset - ustawia linię RESET mikrokontrolera w wybrany stan.

J - Setup - przechodzi do menu konfiguracji programu.

K - Show schematic - wyświetla schemat programatora.

L - About this program - wyświetla informacje o programie.

X - Quit - kończy pracę programu.

Wygląd menu konfiguracji programu :

Menu konfiguracji programu skłąda się z następujących opcji :

1 - Erase Flash & EEPROM memory - określa, czy przed zapisem należy skasować całą zawartość pamięci programu i danych EEPROM.

2 - Program Flash memory - określa, czy zaprogramować obszar pamięci programu.

3 - Program EEPROM memory - określa, czy zaprogramować obszar pamięci danych EEPROM.

4 - Verify Flash memory - określa, czy zweryfikować po zapisie zawartość pamieci programu.

5 - Verify EEPROM memory - określa, czy zweryfikować po zapisie zawartość pamieci danych EEPROM.

6, 7, 8 - Lock protect bit 1, 2, 3 - określa, czy ustawić odpowiednie bity zabezpieczające.

9 - Device - określa jaki mikrokontroler chcemy zaprogramować. Wersja 3.0 programu AEC_ISP może programować następujące mikrokontrolery firmy ATMEL : 89S51, 89S52, 89S53 oraz 89S8252.

P - Select Printer Port - określa numer portu, do którego podłączony jest programator.

S - Save setup - Zapisuje ustawioną konfigurację.

 

Sam programator jest bardzo prosty i składa się z pięciu przewodów połączonych w następujący sposób :

 
Numer wyprowadzenia portu drukarki
Numer końcówki mikrokontrolera
6 (D4)
9 Reset
7 (D5)
6 (P1.5 -MOSI)
8 (D6)
8 (P1.7 - SCK)
10 (ACK)
7 (P1.6 - MISO)
18-25 (GND)
20 (GND)

Pomiędzy piny 7, 8 i 10 portu drukarki a końcówki 6, 7 i 8 mikrokontrolera należy wstawić rezystory w o wartości kilkuset omów, w celu zabezpieczenia portu drukarki przed ewntualnym zwarciem oraz ograniczenia prądu wypływającego z portu w przypadku braku zasilania mikrokontrolera. Trochę więcej uwagi nalezy poświęcić układowi resetowania mikrokontrolera. Zalecany przez firmę AEC Electronics układ wygląda nastepujaco :

Nalezy zwrócić uwagę aby rezystory miały stosunek rezystancji zblizony jak na schemiacie, ponieważ w przypadku, gdy ten stowunek będzie zbyt mały napięcie na końcówce RESET będzie niższe od wymaganego i mikrokontroler nie wejdzie w tryb programowania.

Ostatnio na forum:

 

 

 

 

 
 
 
 
 

(c) 2004-2008 Radosław Kwiecień
Polityka prywatności