Co to jest układ pamięci i jak programować mikroukłady. Programowanie mikrokontrolerów dla początkujących: łatwe i niedrogie wkłady do przeprogramowania


Temat projektowania elektroniki staje się coraz bardziej popularny. Zwracamy uwagę na artykuł, który opowie Ci o mikrokontrolerach dla początkujących.

Jakie są mikrokontrolery?

Na początek należy nakreślić sytuację z mikrokontrolerami. Faktem jest, że produkuje je nie jedna firma, ale kilka na raz, więc istnieje całkiem sporo różnych mikrokontrolerów, które mają różne parametry, różne cechy w użytkowaniu i różne możliwości. Różnią się szybkością, dodatkowymi interfejsami i liczbą pinów. Najbardziej popularni w całym byłym ZSRR są przedstawiciele RIS i AVR. Programowanie mikrokontrolerów AVR i PIC nie jest trudne, co zapewniło ich popularność.

Jak programuje się mikrokontrolery?

Programowanie mikrokontrolerów odbywa się z reguły za pomocą specjalnych urządzeń zwanych programatorami. Programatory można kupić lub wykonać samodzielnie. Ale podczas flashowania mikrokontrolera za pomocą domowego programatora szansa, że ​​​​zamieni się on w „cegłę”, jest dość wysoka. Istnieje inna opcja, którą można rozważyć na przykładzie płytki Arduino. Płytka działa na mikrokontrolerze Atmel i służy do programowania mikrokontrolerów AVR. Na płycie znajduje się już preflashowany bootloader oraz port USB, które pozwalają na bezpieczne flashowanie używanego mikrokontrolera, nie dając użytkownikowi dostępu do danych, które mogłyby uszkodzić ten sam mikrokontroler. Programowanie mikrokontrolerów dla początkujących nie jest tak trudne, jak mogłoby się wydawać, a przy odrobinie umiejętności i inteligencji pozwoli uniknąć konieczności sięgania po nowy mechanizm.

Różnice sprzętowe pomiędzy różnymi mikrokontrolerami

Wybierając mikrokontrolery, należy zwrócić uwagę na pewne różnice sprzętowe, nawet nie pochodzące z różnych firm, ale także z tej samej gamy modelowej. W pierwszej kolejności należy zwrócić uwagę na możliwość przepisania informacji do mikrokontrolera. Ta funkcja pozwoli ci eksperymentować z jednym MK przez długi czas. Zwróć także uwagę na liczbę pinów z ich przeznaczeniem. Nie zaniedbuj częstotliwości roboczej kryształu, na którym działa obwód: od tego zależy liczba operacji na sekundę, które mikrokontroler może wykonać. Badając te cechy, a także pamięć MK, na początku może się wydawać, że na mikrokontrolerach nie można zrobić nic znaczącego, ale jest to błędna opinia. Pamiętaj, że programowanie mikrokontrolerów dla początkujących nie wymaga na początku najlepszego sprzętu, ale możesz mieć w zapasie coś mocniejszego.

Języki programowania mikrokontrolerów

Do programowania mikrokontrolerów używane są dwa języki: C/C++ i assembler. Każdy z nich ma swoje zalety i wady. Jeśli więc mówimy o asemblerze, to pozwala on zrobić wszystko bardzo subtelnie i sprawnie, jest to szczególnie ważne, gdy nie ma wystarczającej ilości pamięci RAM lub mocy operacyjnej (co jednak zdarza się dość rzadko). Ale studiowanie go i pisanie na nim programów wymaga sporo wysiłku, punktualności i czasu. Dlatego do programowania w oparciu o mikrokontrolery często wykorzystuje się języki programowania C i C++. Są bardziej zrozumiałe, swoim wyglądem i budową są zbliżone do mowy ludzkiej, choć nie przedstawiają jej w pełnym rozumieniu. Mają też bardzo dobrze rozwiniętą funkcjonalność, dzięki której można łatwo wchodzić w interakcję ze sprzętem, wyobrażając sobie, że jest to tylko element programu. Mimo wszystkich oczywistych zalet, w C i C++ tworzy się bardziej obszerne programy niż w asemblerze.

Ponadto w niektórych przypadkach, gdy wykorzystywana przestrzeń operacyjna jest krytyczna, języki te można łączyć. Prawie wszystkie środowiska programistyczne dla C i C++ mają możliwość instalowania w programie wstawek asemblera. Dlatego jeśli pojawi się problem w krytycznym obszarze, można napisać wkładkę montażową i zintegrować ją z oprogramowaniem mikrokontrolera, a samo oprogramowanie, a raczej jego większość, można napisać w C lub C++. Programowanie mikrokontrolerów w SI jest łatwiejsze, dlatego wiele osób wybiera te języki. Ale ci, którzy nie boją się trudności i chcą zrozumieć specyfikę działania sprzętu, mogą spróbować swoich sił w języku asemblera.

Rozstające się słowa

Jeśli chcesz poeksperymentować świetnie. Radzimy jedynie uzbroić się w cierpliwość i wytrwałość, a wtedy wszelkie cele postawione przed wynalazcą okażą się wykonalne. Programowanie mikrokontrolerów dla początkujących i dla doświadczonych osób wygląda inaczej: to, co dla początkujących jest trudne, dla doświadczonych jest rutyną. Najważniejsze jest, aby pamiętać, że wszystko, co nie jest sprzeczne z prawami fizyki, jest wykonalne i możliwe do rozwiązania.

Konieczność zarejestrowania kluczyka w immobilizerze może powstać w związku z jego wymianą na nowy. Aby wykonać zadanie, konieczne będzie przeprogramowanie klucza przy użyciu oryginalnego chipa.

[Ukrywać]

W jakich przypadkach wymagane jest przeprogramowanie klucza?

Powody, dla których musisz zarejestrować klucz, mogą być różne:

  • kluczyk jest zużyty i uszkodzony, w wyniku czego samochód jest niestabilny;
  • konieczne było wykonanie duplikatu dla członków rodziny;
  • jednostka sterująca silnika jest uszkodzona;
  • Moduł zapłonu samochodu jest uszkodzony.

Z kim się skontaktować, aby zarejestrować klucz chipowy immobilizera

Jeśli istnieje powód, aby zarejestrować klucz w immobilizerze, możesz skontaktować się z centrum serwisowym lub wykonać zadanie samodzielnie.

Jeżeli samochód jest w serwisie gwarancyjnym, klucz należy zarejestrować w pamięci immo wyłącznie w serwisie.

Jak samodzielnie zarejestrować nowy klucz

Rejestracja nowego klucza odbywa się za pomocą klucza chipowego, który należy przechowywać w bezpiecznym miejscu. Przed przystąpieniem do procedury przeprogramowania należy mieć w zbiorniku około 10 litrów paliwa.

Algorytm działań

Rejestrujemy klucz w następującej kolejności:

  1. Najpierw należy zamknąć wszystkie drzwi samochodu, następnie włączyć zapłon kluczykiem chipowym i odczekać co najmniej 10 sekund.
  2. Wyłącz zapłon. Jeśli ikony na desce rozdzielczej migają co 5 sekund, oznacza to, że programowanie przebiega prawidłowo.
  3. Przy wyłączonym zapłonie wyjmij chip w ciągu 5 sekund i zainstaluj nowy klucz w celu dalszego programowania. W tym momencie brzęczyk powinien włączyć się trzykrotnie.
  4. Poczekaj 6 sekund, aż brzęczyk zabrzmi jeszcze 2 razy, po czym należy wyłączyć stacyjkę i wyciągnąć nowy kluczyk.
  5. Włóż klucz chipowy i poczekaj najpierw na trzy sygnały, a po 6 sekundach na kolejne dwa.
  6. Wyjmij klucz chipowy i odczekaj 10 sekund, następnie włóż nowy klucz i uruchom silnik.
  7. Umów się na jazdę próbną samochodem.

Film przedstawia przeprogramowanie kluczyka z immobilizerem do samochodu krajowego, nakręcony przez kanał Door Doctor.

Funkcje programowania i wiązania klucza z immobilizerem

Specyfika programowania kluczy obejmuje fakt, że w przypadku pilota immobilizera z jednym przyciskiem wiązanie będzie inne.

Aby zaprogramować, wykonaj następujące kroki:

  1. Zamknij wszystkie drzwi w samochodzie.
  2. Naciśnij i przytrzymaj duży przycisk, aż dioda przestanie migać. Po zwolnieniu klawisza kontrolka powinna zaświecić się równomiernie.
  3. Naciśnij przycisk ponownie. Dioda powinna zgasnąć.
  4. Kierowca musi otworzyć drzwi i włożyć kluczyk do stacyjki.
  5. Naciśnij przycisk na pilocie zgodnie z instrukcją dla konkretnej marki systemu.
  6. Włącz zapłon, odczekaj co najmniej 10 sekund i wyłącz go.
  7. Po 5 sekundach pilot powinien być sprawny i zapisać wszystkie pozycje w pamięci.

Mikrokontrolery to specjalny rodzaj chipów służących do sterowania różnymi urządzeniami elektronicznymi.

Wprowadzenie do mikrokontrolerów

Są to miniaturowe komputery, których wszystkie elementy (procesor, RAM, ROM) znajdują się w jednym chipie. Różnią się od mikroprocesorów obecnością timerów, kontrolerów, komparatorów i innych urządzeń peryferyjnych. Obecnie w produkcji wykorzystywane są mikrokontrolery:

  • czujniki do samochodów;
  • zabawki;
  • wskaźniki napięcia, ładowarki;
  • panel kontrolny;
  • miniaturowe urządzenia elektroniczne.

Zarządzanie odbywa się za pomocą specjalnych programów.

Początkującym zaleca się rozpoczęcie nauki programowania mikrokontrolerów od przestudiowania architektury i odmian. Przemysł produkuje następujące typy MK:

  • wbudowany;
  • 8-, 16- i 32-bitowe;
  • cyfrowe procesory sygnałowe.

Producenci mikrokontrolerów muszą stale balansować pomiędzy rozmiarem, mocą i ceną produktów. Dlatego modele 8-bitowe są nadal w użyciu. Mają raczej niską produktywność, ale w wielu przypadkach jest to zaleta, ponieważ pozwala oszczędzać zasoby energii. Cyfrowe procesory sygnałowe są w stanie przetwarzać duże strumienie danych w czasie rzeczywistym. Jednak ich koszt jest znacznie wyższy.

Liczba użytych kodów operacji może nie być taka sama. Dlatego stosowane są systemy instrukcji RISC i CISC. Pierwszy jest uważany za zredukowany i jest wykonywany w jednym cyklu zegara generatora. Umożliwia to uproszczenie sprzętowej implementacji procesora i zwiększenie wydajności chipa. CISC to złożony system, który może znacząco zwiększyć wydajność urządzenia.

Nie da się nauczyć programowania mikrokontrolerów dla początkujących bez zrozumienia algorytmów. Polecenia są wysyłane do procesora chipa w określonej kolejności. Co więcej, ich struktura musi być postrzegana jednoznacznie przez procesor. Dlatego najpierw programista tworzy sekwencję wykonania polecenia. Możesz zmusić procesor do natychmiastowego zatrzymania programu, wywołując przerwanie. W tym celu wykorzystywane są sygnały zewnętrzne lub wbudowane urządzenia peryferyjne.

Rodziny mikrokontrolerów

Najpopularniejsze rodziny mikrokontrolerów to:

  • MSP430 (TI);
  • ARM (ARM Limited);
  • MCS 51 (INTEL);
  • STMB (STMicroelectronics);
  • PIC (mikrochip);
  • AVR (Atmel);
  • RL78 (Elektronika Renesas).

Jednym z najpopularniejszych produktów w branży elektronicznej są produkty firmy Atmel zbudowane na rdzeniu RISC. Pierwsze mikroukłady, opracowane w 1995 roku, należą do grupy Classic. Początkującym wskazane jest przestudiowanie programowania mikrokontrolerów AVR w bardziej nowoczesnych modelach:

  • Mega to rodzina potężnych chipów o zaawansowanej architekturze.
  • Malutkie - niedrogie produkty z ośmioma pinami.

Należy pamiętać, że zgodność systemów dowodzenia zostaje zachowana tylko przy przenoszeniu programu z mikrokontrolera o niskiej wydajności do mikrokontrolera o większej mocy.

Produkty Atmel są proste i zrozumiałe. Aby jednak móc korzystać ze wszystkich funkcjonalności, będziesz musiał opracować oprogramowanie. Początkującym zaleca się rozpoczęcie programowania mikrokontrolerów AVR od pobrania specjalistycznego środowiska Atmel Studio. Aktualną wersję udostępniamy bezpłatnie na oficjalnej stronie producenta. Do tworzenia oprogramowania w tym środowisku nie są wymagane żadne dodatkowe komponenty oprogramowania.

Kompleks Atmel Studio zawiera ogromną liczbę przykładów gotowych projektów. Pomoże to początkującemu szybko opanować podstawowe możliwości i rozpocząć tworzenie własnych programów. Posiada również moduły do ​​kompilacji i końcowego debugowania kodu. Równolegle z jego rozwojem trzeba uczyć się języków programowania. Bez nich nie da się stworzyć oprogramowania.

Języki programowania

Języki programowania mikrokontrolerów niewiele różnią się swoją strukturą od języków używanych w komputerach osobistych. Wśród nich są grupy niskiego i wysokiego szczebla. Współcześni programiści używają głównie C/C++ i Assembly. Między zwolennikami tych języków toczą się niekończące się debaty na temat tego, który z nich jest lepszy.

Asembler niskiego poziomu ostatnio traci na popularności. Wykorzystuje bezpośrednie instrukcje kierowane bezpośrednio do chipa. Od programisty wymagana jest więc nienaganna znajomość poleceń systemowych procesora. Pisanie oprogramowania w Asemblerze zajmuje znaczną ilość czasu. Główną zaletą języka jest duża szybkość wykonania gotowego programu.

W rzeczywistości można zastosować prawie każdy język programowania mikrokontrolera. Ale najpopularniejszy jest C/C++. Jest to język wysokiego poziomu, który pozwala pracować z maksymalnym komfortem. Ponadto twórcy języka C brali udział w rozwoju architektury AVR. Dlatego chipy produkowane przez firmę Atmel są dostosowane specjalnie do tego języka.

C/C++ to harmonijne połączenie możliwości niskiego i wysokiego poziomu. Dlatego możliwe jest wprowadzenie do kodu wstawek w języku asemblera. Gotowe oprogramowanie jest łatwe do odczytania i modyfikacji. Tempo rozwoju jest dość wysokie. W tym przypadku dokładne badanie architektury MK i systemu poleceń procesora nie jest wymagane. Kompilatory C wyposażone są w biblioteki o imponujących rozmiarach, co ułatwia pracę programiście.

Należy zaznaczyć, że wybór optymalnego języka programowania zależy także od sprzętu. Jeśli masz małą ilość pamięci RAM, nie zaleca się używania wysokiego poziomu C. W tym przypadku bardziej odpowiedni jest Asembler. Zapewnia maksymalną wydajność dzięki krótkiemu kodowi programu. Nie ma uniwersalnego środowiska programistycznego, ale większość darmowych i komercyjnych aplikacji może używać zarówno asemblera, jak i C/C++.

Mikrokontrolery PIC

Pierwsze mikrokontrolery PIC pojawiły się w drugiej połowie ubiegłego wieku. Szybkie 8-bitowe chipy firmy Microchip natychmiast zyskały popularność. Architektura Harvarda z dwiema magistralami zapewnia niespotykaną prędkość. Został opracowany w oparciu o zbiór rejestrów, który charakteryzuje się separacją magistrali.

Wybierając język programowania mikrokontrolerów PIC, należy wziąć pod uwagę, że rodzina mikroukładów oparta jest na unikalnej konstrukcji procesora RISC. Symetryczny system poleceń pozwala na dowolny wybór sposobu adresowania i wykonywanie operacji na dowolnym rejestrze. W tej chwili firma Microchip produkuje 5 odmian MK, które są kompatybilne według kodu oprogramowania:

  1. PIC18CXXX (75 poleceń, wbudowany stos sprzętowy);
  2. PIC17CXXX (58 poleceń w formacie 16-bitowym);
  3. PIC16CXXX (35 poleceń, duży zestaw urządzeń peryferyjnych);
  4. PIC16C5X (33 instrukcje, format 12-bitowy, pakiety 18-28 pinów);
  5. PIC12CXXX (wersje z poleceniami 35 i 33, zintegrowany generator).

W większości przypadków mikrokontrolery PIC mają pamięć programowalną jednorazowo. Istnieją droższe modele z kasowaniem Flash lub ultrafioletem. Asortyment liczący 500 pozycji pozwala na dobranie produktu do każdego zadania. Obecnie producent koncentruje swoje wysiłki na opracowaniu wersji 32-bitowych o zwiększonej pojemności pamięci.

Językami programowania mikrokontrolerów PIC są Assembler i C. Do kodowania nadaje się każde zintegrowane środowisko programistyczne (IDE). Programowanie przy ich pomocy jest bardzo wygodne. Automatycznie tłumaczą tekst programu na kod maszynowy. Ważną cechą IDE jest możliwość krok po kroku symulowania działania gotowego oprogramowania. Zalecamy korzystanie ze środowiska programistycznego MPLAB. Został stworzony przez firmę Microchip.

Przed rozpoczęciem pracy w MPLAB-ie zalecamy każdorazowe utworzenie osobnego folderu. Jest to konieczne, aby nie pomylić się w plikach projektu. Interfejs programu jest intuicyjny i nie powinno być z nim żadnych trudności. Do debugowania wykorzystywane są autorskie debugery Pickit, ICD, REAL ICE, IC PROG. Mają możliwość przeglądania zawartości pamięci i ustawiania punktów kontrolnych.



Wlutowując kolejny chip do innej płytki lub wycinając po raz dziesiąty ścieżkę na płytce, aby dokonać kolejnej (ale nie ostatniej) zmiany na nowe urządzenie, zaczynasz myśleć: „Czy nie powinienem zrezygnować z tego żmudnego zadania?!”. Twoje nowe urządzenie nie działa tak, jak byś sobie tego życzył, ale jesteś już zmęczony zmienianiem obwodu i przerabianiem wszystkiego na płytce.
Przeglądając czasopisma elektroniczne coraz częściej spotykamy się ze słowami: procesor, mikrokontroler, oprogramowanie układowe, programowanie. Ale te słowa nie mają dla ciebie konkretnego znaczenia. Słyszałeś gdzieś, a może nawet trzymałeś w rękach coś, o czym nawet myślisz z zachwytem… mikrokontrolery! Coś, co zmniejsza rozmiary urządzeń, dając im możliwości dla Ciebie nieosiągalne... Nie, Ty, jako inżynier elektronik, rozumiesz ogólne założenia działania tych urządzeń, ale ich praktyczne zastosowanie w Twoich produktach nie wchodzi w rachubę! Próbowaliście już kilkukrotnie opanować mikrokontrolery, kupiliście nawet kilka książek z serii „...dla manekinów” i pobraliście z Internetu kilka popularnych tutoriali. Minęło trochę czasu i wszystko zatrzymało się w najciekawszym momencie: diagramy pokazane w książkach były dla ciebie jasne, ale metody tworzenia programu pozostały dla ciebie tajemnicą. Wpisanie kilku znaków po angielsku (lub innym języku) w podanym w książce programie nie stanowi dla Ciebie problemu. Jednak ISTOTA i METODY posługiwania się tymi tajemniczymi symbolami, których kolejność w książce nazwano programem, nie są jasne. Obwiniałeś się za głupotę i odłożyłeś na bok pomysł opanowania mikrokontrolerów. I dlaczego? Już wykonałeś świetną robotę: masz wiele, wiele chipów, na których rozwijasz swoje urządzenia... Urządzenia na dużych płytach, które debugujesz i przerabiasz przez długi, długi czas...
Ale poznajcie gościa z sąsiedztwa: pisze programy, ładuje je do mikrokontrolera, a to, co trzeba debugować miesiącami, robi w kilka dni. Wpadasz w panikę, zaczynasz szukać porzuconych książek i przypominasz sobie wszystko, co wcześniej przeczytałaś... On może, ale ty nie. Poznajesz tego gościa lepiej i pod przykrywką pobocznej rozmowy zaczynasz go wypytywać o mikrokontrolery i ich możliwości. I spokojnie mówi, że kontrolery to dla niego hobby. Prosisz go, aby opowiedział Ci o swoim urządzeniu. Jego odpowiedzi są proste i bezpretensjonalne.

Mikrokontrolery. Co to jest mikrokontroler?
Mikrokontroler to mały wyspecjalizowany komputer, w języku rosyjskim mikrokomputer. Co więcej, ten mikrokomputer jest wykonany w jednym chipie, na jednym krysztale. Stąd pełna nazwa: „mikrokomputer jednoukładowy”. Podobnie jak komputer, mikrokontroler jest urządzeniem elektronicznym, którego działaniem steruje program – sekwencja poleceń załadowana fabrycznie do pamięci. Polecenia te są wykonywane przez procesor: rodzaj „mega-mózgu”, który zawiera jednostkę ALU – jednostkę arytmetyczno-logiczną. Oznacza to, że procesor „może” wykonywać operacje matematyczne i wykonywać operacje logiczne na danych.

Pojemność procesora. Metody prezentacji informacji.
Zarówno procesor, jak i pamięć są urządzeniami cyfrowymi, które „rozumieją” sygnały tylko na dwóch poziomach: jest napięcie/prąd i nie ma napięcia/prądu w linii. Te dwa stany są zwykle zapisywane w następujący sposób: logiczny jeden - „1” i logiczne zero - „0”. Polecenia i dane są zbiorem jedynek i zer. Jedna linia (zwana wyładowaniem) w swoich dwóch stanach może przenosić tylko dwie wartości. Ale wraz ze wzrostem liczby cyfr wzrasta również liczba wartości: dwie cyfry to już cztery, a osiem cyfr to już 256 wartości. Cyfrę zwykle nazywa się bitem: jedna cyfra to jeden bit. A zestaw ośmiu bitów to bajt: osiem bitów to jeden bajt. Ale jeden bajt ma tylko 256 wartości. Aby przesłać więcej informacji, wykorzystuje się kilka bajtów umieszczonych sekwencyjnie w pamięci. Dwa bajty już przekazują 65536 wartości. Trzy bajty - 16777216 wartości! I tak dalej. Najpopularniejsze procesory to te, które mogą przetworzyć osiem bitów w jednej operacji, dlatego takie procesory nazywane są ośmiobitowymi.

System poleceń procesora.
Kiedy procesor jest rozwijany, jest on wbudowany w zdolność wykonywania określonych poleceń. Instrukcje, które dany procesor jest w stanie wykonać, nazywane są zestawem instrukcji. Jakie są te polecenia? Najczęstsze polecenia arytmetyczne i logiczne, a także polecenia do pracy z portami - liniami komunikacyjnymi między procesorem a światem zewnętrznym. Procesor po wczytaniu wartości z komórki pamięci lub stanu portu do własnej pamięci – rejestru, może na nim wykonywać operacje matematyczne lub logiczne. Matematycznie operacje są dla nas jasne: dodawanie, odejmowanie i inne. Działania logiczne oznaczają następujące działania: porównanie - więcej, mniej, równo; praca na bitach komórki pamięci lub rejestru: zerowanie lub ustawienie go, a także operacje przesuwania bitów w lewo lub w prawo.

Pamięć i jej rodzaje.
Dane można odczytać z pamięci. Pamięć to miejsce, w którym program i/lub dane mogą być przechowywane przez pewien czas. Można je przechowywać przez krótki czas - do momentu wyłączenia zasilania lub przez długi czas - niezależnie od obecności napięcia zasilającego. Pierwszy typ pamięci służy do przechowywania danych pośrednich wykorzystywanych podczas wykonywania różnych operacji. Dlatego nazywa się ją „pamięcią o dostępie swobodnym”. Drugi typ pamięci jest częściej używany do przechowywania programów. Istnieje kilka rodzajów pamięci długotrwałej: pamięć programowalna, pamięć kasowalna elektrycznie oraz pamięć kasowalna promieniami ultrafioletowymi lub rentgenowskimi. Fizyczna struktura i zasada działania pamięci mogą być różne, ale istota jest ta sama: przechowywanie danych. Pojęcie „komórki” jest używane do opisania magazynu danych. Dlatego im więcej komórek, tym więcej danych można przechowywać. Każda komórka ma indywidualny adres. Procesor uzyskuje dostęp do wartości komórki pamięci dokładnie poprzez jej adres.

Porty. Tryby pracy portu.
Dane można także odbierać z urządzeń zewnętrznych poprzez linie komunikacyjne – piny mikrokontrolera. Te linie komunikacyjne nazywane są portami lub z naukowego punktu widzenia: urządzeniami wejściowymi i wyjściowymi danych. Piny portu mogą być wejściami, za pomocą których procesor otrzymuje informacje z zewnątrz z różnych czujników, lub być wyjściami, wysyłającymi sygnały, do których można sterować urządzeniami zewnętrznymi. W nowoczesnych mikrokontrolerach piny prawie wszystkich portów są dwukierunkowe, tj. mogą być zarówno wejściami, jak i wyjściami. Porty uniwersalne wymagają konfiguracji - ustaw tryb pracy na wejście lub wyjście. W tym celu w pamięci znajduje się specjalna komórka – rejestr sterujący trybem pracy portu. Na przykład, aby wymagane wyjście (bit) portu stało się wejściem, do bitu rejestru sterującego zapisuje się 1 lub 0, w zależności od modelu mikrokontrolera.

Urządzenia peryferyjne.
Ale mikrokontroler zawiera nie tylko procesor i pamięć. Główną rolę odgrywają tzw. urządzenia peryferyjne: timery, liczniki, komparatory analogowe, przetworniki cyfrowo-analogowe i analogowo-cyfrowe, urządzenia komunikacji szeregowej (często nazywane portem szeregowym). Często mikrokontroler posiada także szereg komórek pamięci nieulotnej (najczęściej Flash), w których można przechowywać różne dane.

Rodziny mikrokontrolerów.
Obecność wszystkich wymienionych urządzeń w mikrokontrolerze nie jest konieczna. Najczęściej producent produkuje kilka modeli produktów zawierających różne urządzenia peryferyjne. Mikrokontrolery z jednym typem procesora (i zestawem wykonywalnych kodów maszynowych), ale różnymi urządzeniami peryferyjnymi, należą do tej samej rodziny. Tak mówią: mikrokontrolery z rodziny ATtiny.

Wielofunkcyjność pinów mikrokontrolera.
Może pojawić się pytanie: w jaki sposób wszystkie te urządzenia „komunikują się” ze światem zewnętrznym, skoro większość chipów w pakiecie DIP ma nie więcej niż 40 pinów? Aby rozwiązać problem braku pinów, stosuje się metodę łączenia funkcji kilku urządzeń za pomocą jednego pinu. Przykładowo, piny jednego z portów (8 bitów - 8 pinów) służą także do obsługi przetwornika analogowo-cyfrowego, a piny innego portu służą jako wejścia komparatorów analogowych, portu szeregowego lub do łączenie innych wbudowanych węzłów. Do sterowania trybami pracy pinów wykorzystuje się specjalny rejestr sterujący trybem pracy portu (było to omówione wcześniej przy objaśnianiu zasady działania portu). W większości mikrokontrolerów piny pełnią wiele funkcji. Jeżeli przy opisie funkcji wyjścia odwołamy się do dokumentacji technicznej sterownika, zostanie zwrócona uwaga na temat funkcji głównych i alternatywnych tego wyjścia. Przykładowo: PD0/RX – bit zerowy portu D jest jednocześnie wejściem portu szeregowego, PB1/Ain0 – pierwszy bit portu B jest jednocześnie wejściem komparatora analogowego.

Algorytmy. Programy.
Polecenia do procesora wydawane są w określonej kolejności, zgodnie z opracowanym wcześniej algorytmem. Algorytm to sekwencja wykonywania przez procesor. Co więcej, polecenia muszą być zrozumiałe dla procesora, a jednocześnie mieć jednoznaczną interpretację, bez jakiejkolwiek niezależności w jej wykonaniu. Algorytm można zapisać ustnie. Na przykład: uruchomienie programu; uczyń bit zerowy portu wejściem; uczyń siódmy bit portu wyjściem; odczytaj wartość bitu zerowego portu; jeśli jest równa logicznej, wykonaj następujące czynności: załaduj logiczną do siódmego bitu portu; powrócić do początku programu. W ten sposób opisaliśmy algorytm działania obwodu składającego się z włącznika, żarówki (lub innego obciążenia) i źródła prądu. Efekt wykonania będzie następujący: po naciśnięciu przycisku na wejście portu podawane jest napięcie, procesor wykonuje program - podaje napięcie na wyjście portu. A gdy styki są zamknięte, na wyjściu portu będzie napięcie.
Ale takie pismo jest bardzo trudne do zauważenia. W związku z tym opracowano metody graficznego opisu algorytmu. Oto przykład graficznego zapisu powyższego algorytmu.
Ryż. Algorytm-1. Graficzna metoda opisu algorytmu

Polecenia rozgałęzień: rozgałęzienia warunkowe i bezwarunkowe.
Specjalne instrukcje procesora obejmują instrukcje skoku warunkowego i bezwarunkowego. Aby to zrozumieć, należy wyjaśnić pojęcie „wskaźnika adresu wykonywanego polecenia”. Procesor posiada specjalny rejestr przechowujący adres aktualnie wykonywanej instrukcji. Po włączeniu zasilania rejestr ten jest resetowany i zapisywane jest w nim zero. Następnie procesor przystępuje do wykonywania poleceń zapisanych w pamięci, zaczynając od adresu zerowego - wszak rejestr wskaźnika adresu wykonanego polecenia zawiera zero. Po wykonaniu polecenia wskaźnik ten zostaje obciążony, czyli jego wartość zostaje zwiększona. Procesor odczytuje kolejną instrukcję z pamięci pod adresem podanym we wskaźniku. Oznacza to, że polecenia są wykonywane sekwencyjnie. Można przerwać sekwencję wykonywania programu za pomocą poleceń skoku warunkowego i bezwarunkowego. W tym celu w jednej z komórek pamięci zapisuje się polecenie, które instruuje procesor, aby zmienił wartość rejestru wskaźnika adresu wykonywanej instrukcji. Instrukcja bezwarunkowego skoku instruuje procesor, aby zmienił kolejność wykonywania programu i rozpoczął wykonywanie instrukcji przechowywanych w pamięci, zaczynając od wcześniej określonego adresu.
Polecenie skoku warunkowego jest bardziej złożone: po wykonaniu sprawdza, czy spełniony jest jakiś warunek. Na przykład musisz porównać wartość dwóch komórek pamięci. Jeżeli wartość pierwszej komórki jest większa, to kontynuuj wykonywanie programu pod adresem A, w przeciwnym wypadku (tzn. wartość pierwszej komórki jest mniejsza) – przejdź do adresu C.

Przerwania i ich rodzaje. Priorytety przerwań.
Istnieje inny sposób „zmuszenia” procesora do zatrzymania sekwencyjnego wykonywania programu i rozpoczęcia wykonywania programu pod określonym adresem - wywołanie „przerwania”. Koncepcja przerwania pojawiła się wraz z pierwszymi procesorami. Rzecz w tym, że procesor steruje urządzeniami, które są od niego wolniejsze. Przykładowo procesor musi przetwarzać dane do momentu pojawienia się określonego sygnału. Podajmy prosty przykład: procesor uruchamia program zliczający liczbę impulsów odebranych na jednym ze swoich portów. Po naciśnięciu przycisku procesor musi przerwać wykonywanie tego programu i wykonać inny program: włączyć jakieś urządzenie (tj. Przyłożyć logiczne do jednego z bitów portu - „1”). Jak rozwiązać ten problem? W samym programie możesz stale odpytywać wymaganą cyfrę portu, do którego podłączony jest przycisk. Ale jednocześnie część zasobów procesora (prędkość) zostanie praktycznie zmarnowana na odpytywanie portu. Drugim sposobem jest użycie przerwań. Procesor (a co za tym idzie mikrokontroler) ma specjalny pin. Zwykle określa się go jako „Int” (po angielsku: „Przerwanie”). Po przyłożeniu sygnału do pinu „Int” zachodzą następujące działania:
- zatrzymanie wykonywania programu głównego,
- wartość rejestru wskaźników adresowych wykonanego polecenia przechowywana jest w pamięci RAM (miejscu, w którym następuje przerwanie wykonywania programu),
- po czym do tego samego rejestru ładowany jest nowy adres (w zależności od życzenia producenta procesora),
- w komórce pamięci o podanym adresie znajduje się komenda bezwarunkowego skoku: „idź pod adres xx”,
- w pamięci zaczynając od komórki o adresie xx znajduje się inny program, nazwijmy go programem użytkowym.

W naszym przypadku program narzędziowy musi wydać jednostkę logiczną do portu, włączając w ten sposób wymagane urządzenie. I tu zaczyna się zabawa: ostatnią komendą programu narzędziowego jest polecenie „przerwanie wyjścia”. Po otrzymaniu tego polecenia procesor odczytuje z pamięci wcześniej zapisaną wartość rejestru wskaźnika adresu instrukcji i ładuje ją do tego rejestru. W rezultacie procesor kontynuuje wykonywanie programu głównego od miejsca, w którym zostało przerwane.
Ale przerwa może być spowodowana nie tylko sygnałami zewnętrznymi, ale także urządzeniami wewnętrznymi samego mikrokontrolera: timerami, licznikami, portami szeregowymi, a nawet pamięcią nieulotną. Ponownie odbywa się to głównie w celu zmniejszenia liczby poleceń wykonywanych w celu analizy stanu tych urządzeń peryferyjnych. Podajmy przykład: proces zapisu danych do pamięci nieulotnej jest bardzo długi, podczas którego procesor może wykonać bardzo dużą liczbę poleceń. Dlatego procesor wykonuje program główny, wydaje polecenie skasowania pamięci nieulotnej, a następnie kontynuuje wykonywanie programu głównego. Po zakończeniu czyszczenia pamięci nieulotnej układy sterujące generują z tej pamięci sygnał przerwania. Procesor przerywa wykonywanie programu głównego i rozpoczyna się proces zapisu danych do pamięci. Ta metoda wykonywania akcji poza programem głównym nazywa się trybem tła. Często mówi się też: „ta część programu działa w tle”.
Podczas pracy z przerwaniami należy zachować ostrożność: możliwa jest sytuacja, w której wykonanie programu i działanie całego urządzenia może zostać zakłócone. Faktem jest, że mikrokontroler ma kilka przerwań. Do sterowania trybami pracy przerwań służy rejestr kontroli przerwań. Konfigurując tryby pracy przerwań, zezwoliłeś na działanie kilku przerwań - jest to normalna sytuacja. Jednak po otrzymaniu zewnętrznego lub wewnętrznego sygnału przerwania do programu głównego i przystąpieniu do wykonywania programu obsługi przerwań, nie wyłączyłeś przerwań. Procesor wykonuje program narzędziowy i w tym momencie otrzymuje kolejny sygnał przerwania. Procesor przerywa wykonywanie programu serwisowego i przystępuje do wykonywania programu w celu przetworzenia nowego przerwania. Łatwo sobie wyobrazić, do czego to może doprowadzić.
Aby rozwiązać ten problem, opracowano metodę przypisywania każdemu przerwaniu stopnia ważności, czyli „priorytetu przerwania”. W zależności od modelu mikrokontrolera priorytet przerwania może być ustawiony na sztywno (a programista pozwala lub uniemożliwia przetwarzanie konkretnego przerwania) lub może być zaimplementowany programowo przez programistów (tj. priorytet przerwania zależy od preferencji programisty i algorytm realizacji konkretnego zadania).

Kontrolujemy procesor. Języki programowania. Tłumacze.
Kody maszynowe. Monter.
Polecenia dla procesora to ciągi jedynek i zer. Często polecenia procesora nazywane są kodami maszynowymi, co podkreśla, że ​​polecenia te były pierwotnie przeznaczone dla konkretnego wykonawcy – maszyny, a nie osoby. Zapamiętywanie poleceń z liczb (kodów maszynowych) jest bardzo trudne. Dlatego, aby uprościć pracę, wymyślono sposób na zastąpienie ciągów cyfrowych symbolicznymi skrótami, bardziej zrozumiałymi dla człowieka. Na przykład dla polecenia „ładuj dane” wymyślono wyraźny skrót „ld” (angielski „ładuj” - załaduj), dla polecenia „porównaj” - „cp” (angielski „porównaj” - porównanie) i tak NA. Ta metoda symbolicznego zapisywania poleceń procesora nazywa się „asemblerem”. Jeśli programista pracując z kodami maszynowymi bezpośrednio wprowadza do pamięci urządzenia polecenia sterujące procesorem, to podczas pracy z asemblerem istnieje swego rodzaju pośrednik pomiędzy programem a procesorem, który przetwarza zapisy symboliczne na kody maszynowe. Program pełniący rolę pośrednika nazywa się tłumaczem, czyli tłumaczem. Ale jest mały niuans: asembler odnosi się nie tylko do metody symbolicznego oznaczania instrukcji cyfrowych (kodów maszynowych), ale także do programu tłumaczącego, który pomaga programiście tłumaczyć symboliczne oznaczenia poleceń bezpośrednio na polecenia maszynowe. Dlatego często stosuje się następującą technikę: gdy mówią o języku, piszą asembler, gdy mówią o programie, piszą po prostu asembler.
Asembler ma ogromną zaletę: programy napisane w asemblerze są wykonywane bardzo szybko przez procesor. Faktem jest, że asembler jest praktycznie poleceniem maszynowym. Ale asembler ma też wady: główną wadą jest trudność pisania programów, drugą jest to, że nawet stosunkowo proste programy mają dużą ilość tekstu źródłowego, co utrudnia analizę programu.

Modułowość programów. Często powtarzane zadania.
Każdy programista podczas swojej pracy zgromadził określoną liczbę programów. Ale wiele programów zawiera te same działania. Na przykład wiele programów odpytuje klawiaturę i analizuje naciśnięty przycisk. Oznacza to, że tę część kodu programu można przenieść z jednego programu do drugiego. Z takich fragmentów (modułów) stopniowo powstawały biblioteki programów. Programiści zaczęli „rzeźbić” program z modułów: to znaczy wstawili wymagany moduł w wymagane miejsce w programie. Takie podejście przyspieszyło proces pisania programu i zwiększyło niezawodność programu jako całości dzięki zastosowaniu już debugowanych modułów. Ale od pierwszych dni pojawił się problem udostępniania modułów: w końcu każdy programista pisał moduły według własnego „standardu” - tak było dla niego wygodniej w tym czy innym czasie. Dlatego stopniowo opracowywano standard (dokładniej kilka startów) pisania tych modułów. Opisali strukturę modułów dla wygodniejszego „sklejenia” w jeden program.

Języki programowania i ich podział funkcjonalny.
Stopniowo te odmienne standardy wykorzystania modułów utworzyły coś, co później nazwano „językami programowania”. Podobnie jak języki ludzkie, język programowania ma kilka podpoziomów, które określają zarówno sposób pisania poszczególnych słów (modułów), jak i metody ich pisania, a także zasady ich używania. Z biegiem czasu języki programowania ewoluowały i zmieniały się. Stopniowo wszystkie języki programowania zostały podzielone na kilka grup, w zależności od ich „orientacji zawodowej”:
- stosowane języki programowania (FORTRAN dla matematyków, FoxPro dla pracowników finansowych);
- uniwersalny (Pascal i Basic);
- system (Asembler i C).

Słowa systemowe zaczęto nazywać językami niskiego poziomu, czyli programista pracuje na niższym poziomie, najbliżej procesora. A języki, z którymi programista nie musi bezpośrednio sterować pracą procesora, zaczęto nazywać Językami Wysokiego Poziomu (często określanymi mianem języków Java). Nie myl tego skrótu z nazwą języka Java - „Java”.

Emisja programu. Metody nadawania programu.
Podobnie jak w przypadku asemblera, program napisany w dowolnym języku wysokiego poziomu musi zostać przekonwertowany na instrukcje zrozumiałe dla procesora. Początkowo robiono to ręcznie: polecenie w asemblerze znajdowało się w tabeli i było zapisywane w kodzie maszynowym. Aby przyspieszyć proces konwersji (tłumaczenia) programu, napisano specjalne programy - tłumacze. Istnieją dwie metody tłumaczenia programu: interpretacja i kompilacja. W związku z tym tłumacz nazywany jest interpretatorem lub kompilatorem. Podczas korzystania z interpretera tekst źródłowy programu jest analizowany i sekwencyjnie, polecenie po poleceniu, wykonywane przez tłumacza. Interpreter zawiera moduły dla wszystkich użytecznych akcji. Ta konwersja według instrukcji jest bardzo powolna. Ale ta metoda ma dużą zaletę: możesz zatrzymać program, zmienić jego kod i kontynuować jego wykonywanie. Jest to wygodne podczas debugowania programu. Również w tym przypadku mamy do dyspozycji tekst źródłowy programu i możemy go wielokrotnie edytować.
Podczas korzystania z kompilatora analizowany jest tekst programu i tworzony jest plik zawierający instrukcje maszynowe, zwany plikiem wykonywalnym. Zapewnia to bardzo dużą szybkość wykonania skompilowanego programu – wszak konwersja tekstu programu na kody maszynowe następuje tylko raz podczas jego kompilacji. Ale nie będziesz mógł zmienić programu w locie: musisz zmienić tekst programu i skompilować go ponownie. Jeśli z jakiegoś powodu brakuje kodu źródłowego, wówczas ponowna kompilacja programu jest niemożliwa, a zmiana pliku wykonywalnego jest niezwykle trudna.

Proces tworzenia programu. Środowiska programistyczne.
Wraz z pojawieniem się tłumaczy proces tworzenia programu zaczął wyglądać następująco:
- opracowywany jest algorytm przyszłego programu,
- algorytm jest zakodowany (tj. opisany w postaci poleceń języka programowania),
- powstały kod zapisuje się w jakimś edytorze tekstu,
- plik z tekstem programu zostaje przesłany do tłumacza,
- tłumacz konwertuje polecenia symboliczne na polecenia zrozumiałe dla procesora i zapisuje je do pliku,
- plik ten jest ładowany do pamięci.
Jak widać programista musiał pracować w kilku programach. Najczęściej wszystkie te programy były pisane przez różnych producentów, więc nie gwarantowano kompatybilności tych programów ze sobą. Ich zgodność trzeba było ustalić metodą prób i błędów.

Zintegrowane środowisko programistyczne.
Niedawno pojawiło się nowe podejście: „Zintegrowane środowisko programistyczne” (IDE). Integracja oznacza wykonanie w jednym programie całego procesu tworzenia programu: po napisaniu tekstu programu programista jednym kliknięciem myszki rozpoczyna tłumaczenie tekstu programu na kody maszynowe, po czym powstały plik wykonywalny jest automatycznie ładowany do pamięć urządzenia procesorowego. Oznacza to, że wszystko odbywa się w jednym programie. Takie podejście przyspiesza pracę programisty.

Pierwsze trudności.
Wszystkie poprzednie rozdziały miały charakter kursu wprowadzającego, przygotowującego do odbioru nowych informacji. Po drodze mamy kilka problemów.
1. Duża ilość różnorodnych informacji: elektronika, budowa mikrokontrolerów, algorytmy, składnia języków programowania, opisy pracy z narzędziami programowymi. A jak pisać? Jeden czytelnik jest dobrym inżynierem elektronikiem, ale nigdy nie pisał programu, drugi jest programistą, ale elektronika jest na poziomie koła radiowego, trzeci jest czymś pomiędzy...

2. Wybór MK: jeśli wszystkie mikrokontrolery są dobre, to na jakim produkcie i u jakiego producenta powinniśmy oprzeć proces dalszego szkolenia i praktycznego wykorzystania mikrokontrolerów?
Aby wybrać mikrokontroler do SZKOLENIA musimy spełnić następujące warunki:
A) mikrokontroler wybrany do szkolenia musi być dostępny i niedrogi.
B) musi to być produkt nowoczesny, ale nie najnowszy.

Teraz bardziej szczegółowo o każdym punkcie.
Z punktem A wszystko jest jasne: po co studiować produkt, który jest trudny do kupienia lub jego cena jest wygórowana dla początkującego.
Punkt B wymaga wyjaśnienia. Faktem jest, że nowe produkty zawsze mają pewne wady. Odkrywane są one dopiero po pewnym czasie, aż ktoś przypadkowo natknie się na ten problem podczas pracy z tym produktem. Ale nowe produkty nie trafiają od razu do nowych projektów: pisanie programów dla nowych modeli wymaga czasu. Dochodzi tu czynnik ludzki: programiści mają już gotowe rozwiązania dla poprzednich modeli mikrokontrolerów, a przejście na nowe jest trudne.
Ponadto wszystkie nowe mikrokontrolery mają jedynie zastrzeżony opis. I jest napisany po angielsku i z użyciem wielu fachowych terminów: w końcu jest przeznaczony dla profesjonalistów! A my jesteśmy studentami... Po pewnym czasie pojawiają się przykłady projektów, bardziej szczegółowe opisy z licznymi komentarzami i poradami. Wtedy ktoś zacznie tłumaczyć dokumentację na rosyjski (nie całą, ale przynajmniej tę najbardziej złożoną i najczęściej używaną).
Na nowy mikrokontroler może nie być narzędzi: kompilatory, debuggery i programiści „nie rozumieją” tego produktu. Znowu czekam, aż autorzy tych programów zaktualizują swoje dzieła...

3. Musisz wybrać język programowania, na którym planujemy pisać programy dla MK.
Wybór języka programowania to bardzo delikatne zadanie. Do nauczania programowania mikrokontrolerów chciałbym używać języka programowania o prostej składni: programista musi zajmować się programem, ale nie jego projektem!
W tym miejscu należy wcześniej wyjaśnić: obecnie wśród twórców programów i urządzeń na mikrokontrolerach popularne są trzy „rodziny” języków: C (zapisane jako „C”), Pascal (Pascal) i BASIC (BASIC) . Pascal został pierwotnie opracowany jako narzędzie do nauki programowania. Sam BASIC ma podobną strukturę do Pascala, ale pisanie poleceń jest uproszczone, a wymagania dotyczące projektowania programu są znacznie mniejsze. C jest uważany za język dla profesjonalistów. Xi jest jak chińska filozofia: ważny jest nie tylko symbol (rozkaz), ale także jego styl i kolor. Żarty na bok, ale moja opinia jest taka: C to koszmar. Jego zastosowanie jest uzasadnione jedynie w niektórych bardzo wąsko wyspecjalizowanych zadaniach. Jednak naszym zadaniem jest wypróbowanie swoich sił i jak najmniejsze wykorzystanie ich na zadania, które nie mają bezpośredniego związku z celem głównym.

4. Potrzebujemy środowiska programistycznego dla mikrokontrolerów. Jego wybór zależy bezpośrednio od rodzaju użytego MK i języka programowania.
Środowisko programistyczne jest bardzo ważne dla pomyślnego opanowania programowania mikrokontrolera. Można pisać programy w edytorze tekstu takim jak Notatnik, ale jest to niewygodne (przetestowane!). A wywołanie kompilatora z wiersza poleceń jest niewdzięcznym zadaniem w naszej erze okien graficznych.
Wybór środowiska programistycznego zależy bezpośrednio od mikrokontrolera, na którym zbudujemy część praktyczną szkolenia. Przede wszystkim musimy mieć darmowe narzędzia. Ale, jak wykazały testy takich programów, wolne oprogramowanie najczęściej ma mierną jakość zarówno z punktu widzenia użytkowania, jak i nauki programowania MK: obecność błędów lub wad w samych tłumaczach stwarza dodatkowe trudności i pozbawić człowieka pewności siebie.
Wersja demonstracyjna też by się przydała, gdyby miała minimum ograniczeń i działała co najmniej pół roku – dokładnie taki okres jest potrzebny na zdobycie umiejętności pracy z mikrokontrolerami w domu.

5. Programator, który będzie używany do ładowania zapisanych programów do pamięci MK. Wybór programatora zależy również od rodzaju zastosowanego MK. Istnieją oczywiście programatory „uniwersalne”, które pozwalają na pracę z różnymi mikrokontrolerami i układami pamięci, ale są one drogie. Tak i w większości przypadków nie jest to potrzebne. Dlatego łatwiej jest wyprodukować coś wysoce wyspecjalizowanego dla tej rodziny MK.
Ale nie tyle chodzi o złożoność obwodów programatora, ile o sposób podłączenia tego programatora do komputera. Tutaj należy wyjaśnić: programator to elektroniczny adapter, który konwertuje sygnały z interfejsów komputera (porty COM, LPT i USB) na sygnały dostarczane na wyjścia MK w celu załadowania programu do jego pamięci. Adapterem elektronicznym steruje program komputerowy, który „wymusza” na adapterze wydawanie niezbędnych sekwencji sygnałów na piny MK.
Jeśli adapter programatora podłączany do komputera PC poprzez porty COM i LPT da się wykonać w domu - „na kolanie”, to wykonanie takiego adaptera, ale podłączonego do portu USB, jest już nieco problematyczne: sercem takiego adaptera jest często... mikrokontroler. Powstaje tutaj paradoks: aby zaprogramować MK, musimy zaprogramować MK.
Powstaje logiczne pytanie: po co tworzyć złożony adapter podłączany do USB, skoro można zrobić prosty i podłączyć go do portu LPT lub COM. Rzecz w tym, że wiele (prawie wszystkie) nowoczesnych komputerów PC nie ma tych portów. Dlatego będziesz musiał stworzyć bardziej złożony adapter do programowania MK.

marzec 2010

Te pytania zadawałam sobie w marcu, a teraz mamy już koniec listopada. Ale ten czas nie poszedł na marne: znalazłem wyjście z opisanych powyżej sytuacji i znalazłem odpowiedzi na wszystkie dręczące mnie pytania. A teraz najważniejsze rzeczy.

Odpowiedź na pytanie nr 1
Jeśli dałoby się jakoś logicznie usystematyzować i przedstawić krok po kroku materiały z poprzednich rozdziałów, to materiały w kolejnych rozdziałach podane są równolegle: jedno implikuje drugie. Być może mój sposób prezentacji nowych materiałów wyda się Wam nieco chaotyczny, ale nie mogłem wymyślić czegoś piękniejszego w designie.

Odpowiedź na pytanie nr 2
Mikrokontroler wyprodukowany przez firmę ATMEL ATMEGA48. Jest dobrze opisany, jest w produkcji od kilku lat, nie planuje się jego wycofania przez co najmniej kolejne 3 lata i ma optymalne parametry techniczne.

Odpowiedzi na pytania 3 i 4
Środowisko programistyczne to BASCOM (wyprodukowany przez MCS Electronics, autor Mark Alberts). Język programowania jest podobny pod względem stylu i wymagań dotyczących projektowania tekstu programu do Pascala, ale składnia poleceń jest zaczerpnięta z języka BASIC.
Powody wyboru:
- w pełni funkcjonalna wersja demonstracyjna kompilatora (jedyne ograniczenie: kod wygenerowany przez kompilator jest ograniczony do 4 KB)
- chęć współpracy autora programu (przetłumaczyłem komunikaty interfejsu i system pomocy na język rosyjski, dodał do tego programu język rosyjski)
- obecność rosyjskojęzycznego forum dla użytkowników tego kompilatora

Odpowiedź na pytanie numer 5
Nie dało się połączyć prostoty obwodu i USB. Postanowiono opisać dwa modele programatorów: jeden podłączany do portu LPT komputera, drugi do portu COM. W przypadku braku tych portów drugą wersję programatora można podłączyć do komputera za pomocą konwertera USB-COM. W ten sposób otrzymujemy kombinację USB-COM-programator-mikrokontroler.
Pierwszy model programatora, znany jako STK-200/300, zawiera układ buforujący trzeciego stanu i kilka rezystorów. Drugi model to dobrze znany programator USBasp.

Dość częsta jest sytuacja, gdy użytkownicy urządzeń biurowych drukujących muszą rozwiązać problem resetowania wkładu. Można sobie z tym poradzić na kilka sposobów i całkowicie niezależnie. Zanim jednak zaczniemy rozwiązywać problem resetowania chipa kasety, należy powiedzieć, że chip w drukarce przeznaczony jest do rejestrowania informacji związanych z zasobem materiałów eksploatacyjnych i wydrukowanych stron.

Kiedy sprzęt biurowy sygnalizuje konieczność wymiany pojemnika z atramentem, należy pamiętać, że nie oznacza to, że faktycznie nie pozostał w nim atrament. Po prostu chipowany wkład osiągnął określony limit wydrukowanych stron. A na nich z kolei mogło znajdować się tylko 5-6 linijek tekstu. Okazuje się, że poziom atramentu w drukarce i urządzeniu wielofunkcyjnym jest obliczany programowo i z reguły nie ma informacji o tym, ile faktycznie atramentu zostało w pojemniku. Z tego powodu często pojawia się pytanie, jak zresetować chip na wkładzie, aby zużyć cały atrament znajdujący się w jego pojemniku.

Oczywiście zamiast resetować wkład i resetować licznik, możesz po prostu zignorować ostrzeżenia wysyłane przez sprzęt biurowy, że pojemność materiałów eksploatacyjnych jest prawie pusta. Ma to jednak znaczenie tylko wtedy, gdy drukarka lub urządzenie wielofunkcyjne nie blokuje automatycznie procesu drukowania po pojawieniu się takich komunikatów. Aby poradzić sobie z zadaniem zresetowania wkładu i tym samym odblokowania drukarki, należy skorzystać z metod opisanych poniżej.

Jak korzystać z programatora?

Aby odpowiedzieć na pytanie, jak zresetować drukarkę, musisz użyć specjalnego programatora. Należy pamiętać, że resetowanie drukarki zostanie przeprowadzone możliwie najskuteczniej, jeśli użyjesz w tym celu programatora zaprojektowanego specjalnie dla Twojego modelu sprzętu biurowego drukującego.

Programista chipów może pracować z dużą liczbą chipów z różnych drukarek. Jest łatwy w obsłudze (często takie oprogramowanie posiada funkcję automatycznego programowania), posiada pełny interfejs USB, ręczną i automatyczną kontrolę mocy CRUM, a także ergonomię.

Zatem, aby zresetować licznik, wystarczy wybrać żądany model za pomocą tak uniwersalnego oprogramowania i poczekać na zakończenie procedury. Często programatory uniwersalne posiadają bardzo wygodną funkcję skanowania. Z jej pomocą. Możesz dowiedzieć się, do którego urządzenia należy ten lub inny chip. Warto też dodać, że taki programista chipów nie potrzebuje Internetu.

Jeśli więc, aby rozwiązać problem typu „jak zresetować licznik”, kupiłeś programator pasujący do Twojej drukarki, najpierw dokładnie przeczytaj instrukcję obsługi. Można tam zapoznać się ze wszystkimi zaleceniami dotyczącymi obsługi urządzenia.

  • Przed zresetowaniem licznika należy rozmontować kasetę z tonerem/atramentem, a następnie wyjąć z niej chip. Pomimo tego, że każdy model drukarskiego sprzętu biurowego ma swoją własną charakterystykę zerowania licznika, ogólnie rzecz biorąc, proces jest prawie identyczny w większości modeli.
  • Aby zresetować licznik, należy włożyć chip do złącza zakupionego wcześniej programatora, który z kolei należy podłączyć do portu komputera osobistego.
  • Pobierz oprogramowanie chipa, które pomoże rozwiązać problem flashowania wkładu.
  • Po uruchomieniu oprogramowania przeznaczonego dla chipów materiałów eksploatacyjnych sprzętu biurowego druku, zresetuj wszystkie informacje związane z użytkowaniem materiałów eksploatacyjnych. Dobrym pomysłem byłoby najpierw pobranie schematu resetowania oprogramowania sprzętowego z tematycznych zasobów internetowych.
  • Zapisz cały wynik wykonanej pracy, następnie ostrożnie wyjmij chip z urządzenia i uzupełnij pojemnik z tonerem lub atramentem.
  • Na koniec wystarczy, że włożysz materiał eksploatacyjny z licznikiem resetującym z powrotem do urządzenia drukującego i przetestujesz jego działanie drukując stronę testową.

Trzeba jednak zrozumieć, że taki programator kosztuje dość dużo pieniędzy - jego cena jest porównywalna z kosztem nowego urządzenia drukującego, dlatego w przypadku drukarki domowej najlepszą opcją jest wymiana chipa. Chipy drukarki są niedrogie i bardzo łatwo je wymienić.

Samoczynne resetowanie

Innym sposobem zresetowania licznika wkładów w celu ominięcia funkcji blokady wydruku i uzupełnienia materiałów eksploatacyjnych jest zastosowanie metody ręcznej. W tym celu wykonaj następujące kroki:

  • W pierwszej kolejności usuń materiały eksploatacyjne ze sprzętu biurowego.
  • Kliknij przycisk „Anuluj” w menu serwisowym urządzenia drukującego, przytrzymując przycisk „OK”. Po kilku sekundach możesz zwolnić oba przyciski.
  • Znajdź pozycję w menu o nazwie „Menu resetowania”, a następnie kliknij „OK”.
  • Teraz powinieneś wybrać „Częściowy reset”. Twoje urządzenie zostanie wówczas wyłączone.
  • Włącz drukarkę lub urządzenie wielofunkcyjne, wybierz swój region i język, a następnie postępuj zgodnie ze wszystkimi instrukcjami wyświetlanymi przez urządzenie drukujące.
  • Sprawdź poziom atramentu; jeśli ten parametr nie wynosi 100 procent, powtórz ponownie poprzednio wymienione kroki. Jednak zamiast pozycji „Częściowy reset” należy kliknąć „Półpełny reset”.
  • Alternatywnie możesz spróbować przytrzymać przycisk Resetuj/Zatrzymaj na samym urządzeniu drukującym przez około dziesięć sekund. Dzięki temu działaniu poziom atramentu w materiale eksploatacyjnym po prostu nie będzie już monitorowany przez drukarkę. Ale to podejście ma jedną wadę. Faktem jest, że po takiej operacji będziesz musiał samodzielnie monitorować poziom atramentu w każdym wkładzie.

Należy pamiętać, że kroki opisane powyżej dotyczą tylko niektórych modeli drukarek. Większość urządzeń wymaga oprogramowania sprzętowego kasety. Aby dowiedzieć się jak zrobić to specjalnie dla Twojego modelu drukarki, skorzystaj z wyszukiwania według modelu urządzenia w bocznym menu.

Co zrobić, jeśli nie udało się zresetować chipa?

Jeśli jednak nie możesz rozczipować materiałów eksploatacyjnych drukarki lub urządzenia wielofunkcyjnego, istnieje tylko jedno wyjście z tej sytuacji, a mianowicie wymiana chipa. Należy jednak wziąć pod uwagę, że chip będzie musiał zostać wymieniony za każdym razem, gdy uzupełnisz materiał eksploatacyjny. Generalnie znalezienie odpowiednich chipów do wkładów do różnych modeli drukarek nie stanowi dziś problemu, bo... Współczesny rynek sprzętu biurowego i jego komponentów przepełniony jest ogromną liczbą ofert.

Innym sposobem rozwiązania tego problemu jest ponowne flashowanie samego sprzętu biurowego. Aby to zrobić, będziesz musiał zapoznać się z odpowiednimi materiałami na naszej stronie internetowej lub skorzystać z usług specjalistów z dowolnego wiarygodnego centrum serwisowego.