Przejdź do głównej zawartości

Posty

Wyświetlanie postów z 2012

Programowanie AVR cz. 6: Czy ATmega z ATtiny mogą się jakoś dogadać?

Mogą. I to na wiele sposobów. Doświadczeni elektronicy od razu wskażą kilka - od prostego połączenia port-w-port począwszy. Jednym z elementów wyposażenia mikrokontrolerów AVR, a dokładniej moich dwóch modeli ATtiny2313 i ATmega48P, jest zrealizowany sprzętowo port UART , zgodny logicznie z RS232 (jeśli chodzi o całkowitą zgodność, konieczne jest użycie układu dopasowującego napięcia - można użyć tranzystorów lub MAX232). Obsługa tego portu w BASCOMie jest banalnie prosta. Posłużmy się przykładem. Niech ATmega będzie nadajnikiem, który wysyła przez łącze szeregowe, w odstępach co ok. pół sekundy, kolejne duże litery alfabetu łacińskiego (a przy okazji każdy wysłany znak sygnalizuje zapalająca się na chwilę dioda - schematu i konstrukcji układu z poprzedniego posta nie zmieniałem); wysyłanie liter uruchamiane jest przyciskiem. ATtiny zaś, wyposażony w wyświetlacz LCD, będzie odbiornikiem, który podczas oczekiwania na znak wyświetla napis "Ready...", po odbiorze znaku wyświe

Programowanie AVR cz. 5: ATmega przybyła...

W tym artykule nie będzie nic nowego ani odkrywczego jeżeli chodzi o software - prezentowane programy są banalnie proste. Chodzi raczej o zastąpienie - przynajmniej na chwilę - mojego ulubionego procesorka ATtiny2313 nową ATmegą 48P . Zamówiłem kilka egzemplarzy tego bardziej zaawansowanego mikrokontrolera głównie dla wypróbowania jego możliwości i ficzerów . Na początku więc zmontowałem prosty układ z trzema diodami LED, napisałem programik, który miał powodować ich miganie, następnie zaś wyposażyłem procesor w oscylator kwarcowy 4MHz z kondensatorami blokującymi i odpowiednio ustawiłem fusebity . 4MHz - częstotliwość dużo niższa, niż ta, którą się ATmegom zadaje, ale chodziło mi o zachowanie kompatybilności w kontekście uzależnień czasowych (częstość przerwań timerów itp.) z układami projektowanymi na ATtiny. Inna rzecz, że tylko takie oscylatory mam w swoich śmieciach... A propos śmieci - wygrzebałem w nich również dwie sztuki drivera mocy ULN2803 (uwaga: linki do kart katalog

RaspberryPi: wspólna klawiatura, wspólna mysz i ewentualnie wspólny monitor, czyli jak zachować spokój...

Zapewne wielu z Was używa na co dzień świetnego programu Synergy ( http://synergy-foss.org/ ). Bo też wielu z Was spotkało się z sytuacją, kiedy to trzeba było w tym samym czasie (szachista powiedziałby: symultanicznie ) obsługiwać dwa lub więcej komputerów. W moim przypadku, na szczęście, liczba fizycznych (znajdujących się w tym samym pomieszczeniu, a nawet na tym samym biurku) komputerów obsługiwanych równolegle nie przekroczyła dwóch - stacjonarny i laptop. Żeby usprawnić sobie pracę najlepiej jest, przełączając się między komputerami, nie odrywać rąk od klawiatury i myszy - można ewentualnie spojrzeć na drugi monitor (do czego zresztą coraz częściej przychodzi nam się przyzwyczajać). Rozwiązań jest wiele - choćby różne wynalazki typu VNC, tyle, że zdalne pulpity, jak sama nazwa wskazuje, najlepiej sprawdzają się w pracy zdalnej (sieć o większym zasięgu, niż klasyczny LAN). Synergy zaś, mimo, że również wykorzystuje łącze sieciowe, służy po prostu do umożliwienia korzystania z j

Programowanie AVR cz. 4,5: Poprawki związane z drobnym przeoczeniem.

Parę dni temu, tuż po publikacji poprzedniego wpisu (na temat zegara PCF8583P ) zorientowałem się - przypadkowo, jak to zwykle bywa, ale też na skutek poczynionych obserwacji - że użyłem w układzie prototypowym egzemplarza mikrokontrolera z fusebitami ustawionymi domyślnie. Głównie chodzi tu o bity dotyczące częstotliwości taktowania i używanego generatora. Zaglądając w okienko pokazujące stan fusebitów zauważyłem, że mikrokontroler używa ciągle wewnętrznego generatora 8MHz z podziałem częstotliwości przez 8, czyli jest taktowany przebiegiem o częstotliwości efektywnej 1MHz. Do sprawdzenia stanu fusebitów skłonił mnie pomiar czasu pomiędzy kolejnymi przerwaniami timera nr 1 - skonfigurowałem go w pisanym właśnie programie jako timer, który powinien generować przerwanie co 1 sekundę. Jednak sekunda ta trwała nieco dłużej... Na obrazku poniżej pokazane zostały prawidłowe wartości fusebitów dla układu taktowanego sygnałem z generatora stabilizowanego zewnętrznym kwarcem 4MHz, czyli

Programowanie AVR cz. 4: ATtiny2313 + PCF8583P + AT24C04 + I2C,czyli... zabrakło pamięci, ale jest zegar nastawiany "w locie".

Kontynuując zabawę z magistralą I2C (patrz: poprzedni artykuł o programowaniu AVR ) i grzebanie w elektronicznym złomie, natknąłem się na niepozorny układ scalony PCF8583P , zamontowany wraz z - jak się domyśliłem - odpowiednim oscylatorem kwarcowym na prehistorycznej płytce uruchomieniowej, jeszcze chyba z czasów AT89C4051. Układ ten to zegar czasu rzeczywistego (RTC) wraz z kalendarzem i obsługa alarmów, zarządzany (programowanie, odczyt) poprzez magistralę I2C. Nie zastanawiając się długo postanowiłem dołączyć ten układ do systemu z poprzedniego wpisu, żeby stworzyć wypasiony zegar, kalendarz, budzik... Niestety, szybko okazało się, że mój ulubiony mikrokontroler ATtiny2313 ma zbyt mało pamięci FLASH, żeby pomieścić finezyjny kod, który zaczął mi wychodzić (żaliłem się już w moim streamie Google+). Dlatego też ograniczyłem program demonstracyjny do samego zegara - jedyny ficzer , jaki się pojawił, to nastawianie godziny i minuty "w locie" za pomocą dwóch przycisków. Oznacz

Programowanie AVR cz. 3: ATtiny2313, EEPROM AT24C04C i magistrala I2C. Oraz krótko o pewnej zapomnianej obietnicy.

000 wstęp Głównym bohaterem tego posta jest magistrala I2C , zwana również interfejsem dwuprzewodowym (ang. Two-wire lub 2-wire interface ). To proste łącze wykorzystywane jest w wielu ciekawych układach mogących współpracować z mikrokontrolerami i nie tylko. Można tu wspomnieć - żeby nie było, że użyłem słowa "wielu" bez pokrycia - choćby o układach pamięci, zegarach czasu rzeczywistego, przetwornikach AC/CA... Co prawda "małe" mikrokontrolery nie mają dedykowanych linii dla I2C, ale dzięki środowiskom i bibliotekom dla programistów, zapewniającym pełną implementację m. in. protokołu I2C, mamy możliwość bezproblemowego wykorzystania dobrodziejstw tej magistrali posługując się uniwersalnymi liniami wejścia - wyjścia. Można też podjąć się samodzielnej implementacji obsługi tej magistrali - jeśli ktoś lubi takie wyzwania. Na początek jednak warto przyjrzeć się samej idei i koncepcji magistrali I2C: I2C w Wikipedii Dobrze by było też przeanalizować kartę kata

Programowanie mikrokontrolerów AVR cz. 2

Parę uwag na temat programowania w sensie wgrywania przygotowanego (skompilowanego) programu (wsadu) do pamięci flash mikrokontrolera ATtiny2313 (i nie tylko). W pierwszym artykule na temat programowania AVR-ów założyłem, że dysponujemy płytką AVT3500 wraz z programatorem (kompatybilnym z STK500 v2) - płytka ta i programator wchodzą między innymi w skład zestawu do nauki programowania procesorów AVR. Nie każdy jednak ma dostęp do takiej płytki, czy też ma możliwość jej nabycia. Sam również postanowiłem uniezależnić się od tego zestawu - dotychczas używałem wypożyczonego z pracy. W związku z tym nabyłem (drogą kupna) polecany przez wielu użytkowników programator zgodny z USBASP i podłączyłem go do układu ATtiny2313 według wskazówek z artykułów: Programowanie ATtiny2313 dla opornych Programowanie mikrokontrolerów za pomocą programatora USBasp Wszystko działa elegancko - mogę zaprogramować układ bezpośrednio ze środowiska BASCOM-AVR oraz korzystając z avrdude (zarówno w systemac

Programowanie mikrokontrolerów AVR cz. 0

Zwykle w okolicach początku roku szkolnego piszę o edukacji jako takiej - co bym zmienił, co jest złe, co dobre itp. Dziś, zamiast tego co zwykle, będzie prequel poprzedniego artykułu o programowaniu AVR-ów w BASCOM-ie, a w zasadzie krótka prezentacja, jak w najprostszy sposób zmontować nieskomplikowany układ z  ATtiny2313 w roli głównej. Najpierw koncepcja. Wykorzystamy dwa wyjścia mikrokontrolera do zapalania i gaszenia (na przemian) dwóch diod świecących lub - jak w moim przypadku - kolorków jednej diody dwukolorowej ze wspólną katodą. Żeby nie przesadzać (jeszcze bardziej - wszak taki układ można zmontować z dwóch tranzystorów, dwóch kondensatorów i kilku rezystorów) z przerostem formy nad treścią, wykorzystamy wewnętrzny zegar taktujący ATtiny (co prawda 8MHz, ale mocno niestabilny - tutaj jednak nie powinno to w niczym przeszkadzać), cały układ natomiast zasilimy z trzech baterii AA (3*1,5V). Potrzebny będzie zatem ATtiny2313, dwa rezystory 220 Ohm, jedna dioda świecąca dwukol

Programowanie mikrokontrolerów AVR cz. 1

Niniejszym rozpoczynam serię artykułów, których celem będzie zgromadzenie i udostępnienie programów ilustrujących różne aspekty programowania mikrokontrolerów AVR. Nie ukrywam, że będzie to seria przeznaczona przede wszystkim dla uczniów technikum, dla których prowadzę zajęcia z układów mikroprocesorowych i z programowania mikroprocesorów. Zaczniemy oczywiście od podstaw i od prostych mikrokontrolerów (posiadamy platformy testowo-uruchomieniowe dla ATtiny2313, w planach na "powakacje" są również ATmegi); oczywiście programy będą dotyczyły na początku elementarnej problematyki działania układów mikroprocesorowych, komunikacji ze "światem zewnętrznym" i użytkownikiem. A dziś jeden prosty program (na zachętę), który napisaliśmy z uczniami w środę, 25 kwietnia, na sucho, na tablicy - latająca małpka ("@" przemieszcza się dookoła ekranu). Jednak na zajęciach program był przedstawiony łopatologicznie, napisany "metodą inżyniera Nachamowa". Tutaj zaś po