Zapis numeru seryjnego za pomocą KamPROG AVR – przykład w Bascomie

Program KamPROG w wersji 2.2.0.0 pozwala na automatyczne wpisywanie numeru seryjnego do programowanego układu – funkcja ta jest opcjonalna i aktywuje się ją zaznaczając pole Enable Automatic Serial Number.

Możliwe jest wpisanie adresu początkowego pamięci EEPROM, pod którym wpisany zostanie numer seryjny – pole Start adress (hex), a także podanie własnego numeru seryjnego w polu Serial number (hex). Do wyboru jest także ilość bajtów (2 lub 4), jaką zająć ma w pamięci EEPROM numer seryjny.

 

Numer seryjny zostaje zwiększony o 1 każdorazowo po zapisie do pamięci EEPROM. Wszystkie wartości wpisywane w pola są w postaci heksadecymalnej.

Ramkę SERIAL NUMBER w programie KamProg, pozwalającą na wprowadzenie własnego numeru seryjnego, przedstawiono na rysunku 1.

 


Rys. 1. Pole Serial number

 

Przykładowy program, pozwalający na wyświetlenie numeru seryjnego odczytanego z pamięci EEPROM napisany został w języku BASCOM-AVR. Na początku programu zdefiniowane zostały parametry pracy mikrokontrolera oraz wyświetlacza 16×2, zadeklarowane zostały także dwie zmienne – zmienna serialnum typu word oraz zmienna eserialnum typu word przechowywana w pamięci EEPROM – przy ich pomocy odczytany i wyświetlony zostanie numer seryjny.

Aby móc modyfikować numer seryjny podczas programowania mikrokontrolera musimy znać adres zmiennej w pamięci EEPROM. W naszym przypadku adres to 0, ponieważ jest to jedyna zmienna w tej pamięci, w innym przypadku wystarczy zajrzeć do pliku *.rpt generowanego przez Bascom podczas kompilacji, znajduje się tam lista wszystkich zadeklarowanych zmiennych razem z adresami.

Fragment kodu, ukazujący deklaracje, przedstawiony został na listingu 1.

 

Listing 1. Deklaracje

W dalszej części programu uruchomiony zostaje wyświetlacz LCD – następuje inicjalizacja, czyszczenie i wyłączenie kursora.

W pierwszej linii ekranu wyświetlony zostaje przykładowy napis, zaś w drugiej – numer seryjny odczytany z pamięci EEPROM.

Próba podania zmiennej eram word jako argumentu do instrukcji „Lcd (…)” powoduje błąd kompilacji – zmienna eram word nie może być podawana jako argument tej instrukcji. Konieczne więc jest użycie nowej zmiennej pamięci SRAM i wpisanie jej wartości ze zmiennej eram word. W programie użyto przypisania:

eserialnum = serialnum

Wyświetlenie numeru seryjnego na LCD jest przedostatnią instrukcją programu; tuż po niej następuje instrukcja kończąca działanie „End”. Część kodu, wykonującą powyższe czynności, przedstawiono na listingu 2.

 

Listing 2. Kod programu (z wyłączeniem deklaracji)

Pełny kod programu:

 

O autorze