Spisu treści:

Samouczek asemblera AVR 8: 4 kroki
Samouczek asemblera AVR 8: 4 kroki

Wideo: Samouczek asemblera AVR 8: 4 kroki

Wideo: Samouczek asemblera AVR 8: 4 kroki
Wideo: ЯЗЫК АССЕМБЛЕРА за 3 МИНУТЫ 2024, Listopad
Anonim
Samouczek asemblera AVR 8
Samouczek asemblera AVR 8

Witamy w samouczku 8!

W tym krótkim samouczku zamierzamy trochę odwrócić się od wprowadzenia nowych aspektów programowania w języku asemblerowym, aby pokazać, jak przenieść nasze komponenty prototypowe na oddzielną "drukowaną" płytkę drukowaną. Powodem jest to, że w tym momencie nasza główna płytka prototypowa jest zapchana tak wieloma chipami, przewodami, przyciskami i diodami LED, że testowanie nowych rzeczy staje się trudne, a ponieważ w końcu i tak musimy przenieść komponenty na własne płytki, równie dobrze możemy zacząć już teraz. Wielu z was prawdopodobnie jest już biegłych w rzeczach, które omówimy w tym samouczku, więc możesz traktować ten samouczek jako jedynie relaksującą przerwę od kodowania.

Tak więc dzisiaj przeniesiemy naszą rolkę do gry ATmega328P i towarzyszącą jej parę kości na zewnętrzną płytkę z połączeniami z naszą płytą główną w celu komunikacji z nią i zasilania. Poza tym okablowanie i funkcjonowanie kostki będzie samodzielne w tym komponencie.

Prawdopodobnie możesz na tej podstawie przewidzieć, że naszym ostatecznym celem jest zrobienie tego z każdym komponentem, który konstruujemy po drodze, tak abyśmy po zakończeniu mogli ukryć je wszystkie w ładnie wyglądającym pakiecie, który będzie działał za pomocą naciśnięć przycisków, nie widząc wszystkiego przewodów i wyrobisk wewnętrznych.

Większość tego samouczka spędzimy wykonując zadania fizyczne, takie jak projektowanie obwodu, mapowanie płytki prototypowej i lutowanie rzeczy razem, ale na końcu musimy wykonać trochę programowania po przeniesieniu rzeczy. Powodem jest to, że w tej serii samouczków będziemy w końcu używać 2-przewodowego interfejsu szeregowego do komunikacji między naszym głównym kontrolerem „nadrzędnym” a wszystkimi kontrolerami „podrzędnymi”, które składają się na komponenty naszego ogólnego projektu, a także: jak pamiętasz, w samouczku 6 wymyśliliśmy rodzaj metody typu alfabetem Morse'a, aby przekazywać nasze rzuty kostką z rolki (Samouczek 4) do Analizatora Rejestrów (Samouczek 5), który wyświetlał wynik rzutu kostką w postaci binarnej na 8 diodach LED. Cóż, była to po prostu metoda komunikacji typu "swój własny", którą zdecydowałem się użyć, ponieważ w tamtym czasie było za wcześnie, aby wejść w 2-przewodową komunikację szeregową. Jesteśmy już prawie przygotowani do zanurzenia się w głęboki koniec komunikacji szeregowej i będziemy to robić w samouczku 10, ale na razie musimy przewidzieć ten przyszły rozwój i ponownie podłączyć diody LED naszych rolek do kości, aby uwolnić dwie piny, których potrzebujemy do komunikacji szeregowej.

To są piny SCL i SDA w ATmega328P. Na schemacie pinów widać, że są one również nazywane ADC5 i ADC4, gdy są używane w konwersjach analogowo-cyfrowych, są nazywane PCINT13 i PCINT12, gdy są używane jako styki „Pin Change Interrupt”, a na koniec ogólnie nazywamy je PC5 i PC4 kiedy po prostu uważa się je za piny na PortC. Ponieważ użyliśmy tych dwóch pinów jako części naszego wałka do gry z różnych powodów (główne to ułatwienie kodowania i łatwiejszego podłączania diod LED na płycie), będziemy teraz musieli zmodyfikować nasz kod i nieco go ponownie podłączyć, aby zwolnij te szpilki do przyszłej komunikacji.

Zaczniemy więc od projektowania, cięcia, okablowania i lutowania. Następnie przepiszemy rolkę do gry w kości, aby działała z naszym nowym zestawem, a na koniec przetestujemy ją, aby upewnić się, że nadal działa.

Aby ukończyć ten samouczek, będziesz potrzebować następujących elementów:

  1. Standardowe rzeczy, których zawsze potrzebujesz, a których przestanę ciągle powtarzać: twoja tablica prototypowa, twoja kopia arkusza danych i zestawu instrukcji oraz twój mózg.
  2. Płytka PCB do prototypowania obwodów bezprzewodowych, taka jak ta: https://www.ebay.com/itm/191416297627 Mam zamiar użyć wersji Measure Explorer 103RAWD tej płytki: https://www.ebay.com/itm/103RAT -circuit-proto-proto… ponieważ mam ich pod ręką, ale wersja 103RAW-0, do której linkuję powyżej, również będzie działać dobrze.
  3. Nożyczki, druty, lut, lutownica, "pomocne dłonie" lub cokolwiek do trzymania rzeczy, itd. itd. itd. Od teraz przestanę wymieniać te rzeczy. Jeśli rzeczywiście dotarłeś tak daleko w tych samouczkach, prawdopodobnie masz już wszystkie te rzeczy.

Oto link do pełnej kolekcji moich samouczków asemblera AVR:

Krok 1: Zaprojektuj schemat połączeń

Zaprojektuj schemat połączeń
Zaprojektuj schemat połączeń
Zaprojektuj schemat połączeń
Zaprojektuj schemat połączeń
Zaprojektuj schemat połączeń
Zaprojektuj schemat połączeń

Fajną rzeczą w tablicach Measure Explorer jest to, że jeśli poświęcisz trochę czasu i zaplanujesz wszystko na początku, możesz zaoszczędzić sobie cholernie dużo okablowania na końcu. Zaczniemy więc od zaprojektowania naszego układu, zanim zaczniemy cokolwiek lutować. Przy tego rodzaju płytce trzeba przeciąć wiązkę przewodów połączeniowych, co nie jest wcale takie proste, ale w efekcie otrzymujemy bardzo ładną kompaktową płytkę z minimalnym bałaganem splątanych przewodów. obwód tak, aby pasował do płytki. Dobrym sposobem na to jest pobranie mapy planszy, a następnie użycie jej do zabawy z różnymi projektami, aż znajdziesz taki, który działa. Oto układ ME-PB-103RAWD https://www.bluemelon.com/photo/3483513-T800600-j.webp

Krok 2: Wytnij obwód na płytce

Wytnij obwód na tablicy
Wytnij obwód na tablicy
Wytnij obwód na tablicy
Wytnij obwód na tablicy
Wytnij obwód na tablicy
Wytnij obwód na tablicy

Najpierw weź ostry i używając układu, który zaplanowałeś w poprzednim kroku, narysuj swój obwód na tablicy. Tj. narysuj linie reprezentujące przewody. Nie rysuj niczego pod względem komponentów, tylko przewody łączące, jak pokazano na pierwszym zdjęciu. Zwróć uwagę, że kiedy schrzanisz (a jeśli jesteś podobny do mnie, wiele razy coś schrzanisz w tych krokach), możesz użyć gumki i wymazać linię. Zrób to dla obu stron planszy.

Następnie musisz przeciąć połączenia wokół linii. Jeśli przyjrzysz się uważnie planszy, zobaczysz, że każdy otwór na kołek jest połączony z 4 sąsiednimi po obu stronach planszy, tak że wszystkie otwory na planszy są połączone ze sobą na początku. Musisz więc przeciąć po obu stronach każdego z przewodów, aby je odizolować. Najczęstszym sposobem wykonania tego cięcia jest nóż Exacto. Ale ssę noże Exacto i prawdopodobnie bym się skaleczył. Dlatego używam Dremela z cienką końcówką do cięcia. Żałuję, że nie mam nasadki szlifierskiej, która byłaby ostra, ponieważ działałaby najlepiej - ale nie mam takiej, więc użyłem nasadki do cięcia. (Uwaga dodana: Po ukończeniu tego projektu stwierdziłem, że mniejsze głowice "heavy duty" do Dremels działają najlepiej, wyglądają jak małe kółka z papieru ściernego i działają jak pokazane tutaj narzędzie tnące, z wyjątkiem tego, że mają mniejszą średnicę i tak znacznie łatwiej jest zobaczyć i kontrolować miejsce cięcia)

Po drodze warto trzymać deskę pod światło i upewnić się, że przewody są rzeczywiście przecięte. Możesz być zirytowany faktem, że po obu stronach deski są połączenia, więc musisz powtórzyć proces cięcia z drugiej strony, ale myślę, że zobaczysz sens tego, kiedy skończysz. Popełniłem wiele błędów przy przecinaniu przewodów, które nie powinny być przecinane, a trzymanie drugiej strony nadal jest fajne.

Przecięcie obwodu na płytkę zajmie trochę czasu i cierpliwości, ale jest to trochę zabawne, gdy już się w tym dobrze opanujesz.

Krok 3: Przylutuj komponenty i przetestuj

Przylutuj komponenty i przetestuj
Przylutuj komponenty i przetestuj
Przylutuj komponenty i przetestuj
Przylutuj komponenty i przetestuj
Przylutuj komponenty i przetestuj
Przylutuj komponenty i przetestuj

Teraz, gdy zaizolowałeś już wszystkie przewody na płytce drukowanej, możesz zacząć lutować poszczególne elementy.

Najpierw przylutowałem diody LED do jednej z kostek, a następnie wziąłem dodatnie i ujemne przewody z płytki stykowej i przetestowałem połączenia dla każdej diody LED, aby upewnić się, że są od siebie odizolowane i działają.

Podobnie z drugą kostką.

Następnie podłącz rezystor do każdej kostki i rezystor 10K z tyłu płyty.

Następnie podłącz oscylator kwarcowy, nasadki 22pf, przyciski i ATmega328P. Możesz przylutować gniazdo chipa, a następnie dopasować do niego ATmega328P, aby móc je usunąć, jeśli chcesz i ponownie użyć go w czymś innym. Właśnie przylutowałem swój chip do płyty, ponieważ wiem, co ostatecznie budujemy za pomocą tych wszystkich samouczków i wiem, że spodoba mi się na tyle, że nie będę chciał wyjmować chipa.

Zwróć uwagę, patrząc na tył tablicy, w jaki sposób przymocowaliśmy nagłówki. Użyłem długich nagłówków szpilek i wygiąłem je poziomo, aby nie wystawały z płytki. To po to, żebym mógł ostatecznie zakryć płytkę do poziomu przycisków i diod LED pojemnikiem i nie przeszkadzać w nagłówkach. Mamy nagłówek dla Tx, Rx, dzięki czemu możemy zaprogramować układ, mamy nagłówek dla SDA, SCL, dzięki czemu możemy później korzystać z komunikacji 2-przewodowej. i mamy 3 pinowe złącze dla AVCC, AREF, GND po drugiej stronie płyty. Mam wszystkie piny uziemienia i piny VCC połączone razem na chipie, więc potrzebujemy tylko jednego wejścia zasilania.

Wreszcie, gdy wszystko jest już podłączone, podłączamy kostkę 1 do kostki 2 tak, jak to zrobiliśmy na płytce stykowej, dzięki czemu możemy kontrolować obie kostki za pomocą tylko 9 pinów.

Teraz musimy zmodyfikować nasz kod, aby kontrolował tę nową konfigurację.

Krok 4: Kod montażu i wideo

Załączyłem kod montażowy i wideo z działającego wałka do kości. Wszystko, co zrobiłem, to wziąłem kod dla naszego wałka do kości z samouczka 6, zmodyfikowałem szpilki, aby pasowały do nowego układu i usuń podprogram komunikacyjny, ponieważ będziemy pisać nowy w Samouczku 10. Następnym razem ponownie rozłożymy naszą klawiaturę i nauczymy się sterować wyświetlaczami 7-segmentowymi. Do zobaczenia!

Zalecana: