Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'mikrokontroler'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

Znaleziono 16 wyników

  1. Wstęp Ten artykuł porusza tematykę doboru mikrokontrolerów do Twojego projektu. Nie jest istotne czy tworzysz prosty sterownik LED, narzędzie do pracy, czy zaawansowane urządzenie pomiarowe. Z tymi wskazówkami bez problemu znajdziesz odpowiedni komponent dla siebie. Artykuł jest kierowany do osób stawiających swoje pierwsze kroki w projektowaniu własnych systemów, które potrzebują podstawowych informacji "na co zwrócić uwagę" podczas wyboru elementu do potrzeb projektowych oraz listy potencjalnych alternatyw. Mikroprocesor, mikrokontroler, FPGA Zanim zgłębimy detale, warto zrozumieć główne rodzaje komponentów, które są kluczowymi jednostkami obliczeniowymi w projektach. Mikroprocesory: To stosunkowo złożone komponenty, które nie posiadają wbudowanej pamięci RAM ani ROM (w kontekście pamięci programu). Były popularne w komputerach domowych, takich jak Commodore 64 czy Atari 2600 pod koniec XX wieku. Charakterystyczne dla nich jest posiadanie magistrali równoległej do podłączenia pamięci i innych układów pomocniczych – nie posiadają wbudowanych peryferiów. Mikrokontrolery: To podzespoły elektroniczne, które zawierają wbudowaną pamięć RAM, a często także pamięć programu (ROM). Istnieją również wersje bez wbudowanej pamięci ROM, takie jak RP2040 lub ESP32D0/ESP32S0. W przypadku braku pamięci programu użytkownik musi dołączyć zewnętrzną pamięć, zazwyczaj wykorzystując interfejs QSPI. FPGA (Field-Programmable Gate Array): To zaawansowane układy do równoległego przetwarzania danych i prototypowania układów scalonych. W projektach hobbystycznych są powszechnie wykorzystywane przy obsłudze wyświetlaczy o dużej rozdzielczości lub w konstrukcji urządzeń diagnostycznych. Ich charakterystyczną cechą jest zdolność do wykonywania wielu operacji jednocześnie, co przewyższa możliwości mikrokontrolerów i mikroprocesorów. SoC (System on a Chip): To samodzielne układy zawierające pamięć RAM i ROM. Nie zawsze możliwe jest zapisywanie w pamięci ROM (czasem zawiera tylko instrukcje bootloadera, a program wgrywamy na kartę SD lub pamięć EMMC). Mimo, że niektóre mikrokontrolery można określić jako SoC, ten termin zazwyczaj odnosi się do zaawansowanych układów, które spotykamy w minikomputerach SBC (Single-Board Computers). Poniższa fotografia 1 przedstawia przykładowy mikrokontroler w obudowie TQFP: Fotografia 1 (Wikipedia, Public Domain) Podstawowe cechy mikrokontrolerów Przed wyborem układu właściwego dla naszego projektu, warto zwrócić uwagę na kilka kluczowych cech. Nie ma tu sztywnej hierarchii, ponieważ ich istotność zależy od konkretnych potrzeb projektowych: Rodzina / architektura: Określa używane środowisko programistyczne oraz narzędzia, takie jak kompilatory i debuggery. Często producenci mikrokontrolerów prześcigają się w udostępnianiu coraz bardziej zaawansowanych narzędzi dla projektantów urządzeń i programistów. Package / Obudowa: Określa liczbę wyprowadzeń i sposób montażu (w tym jak bardzo przy tym będziemy się denerwować) Peryferia: Lista wewnętrznych podzespołów mikrokontrolera, takie jak dostępne magistrale, wsparcie dla protokołów, zegary, DMA czy przetworniki ADC/DAC. RAM i ROM (Flash): Określają dostępną przestrzeń dla programu i zmiennych. Niektóre układy wymagają zewnętrznej pamięci Flash (np. RP2040, ESP32, ESP8266) ADC / DAC: Wbudowane peryferia do obsługi sygnałów analogowych – ADC dla wejść analogowych, a DAC dla wyjść analogowych. Zasługują na osobną sekcję, gdyż często wpływają na wybór układu. Taktowanie i zestaw instrukcji: Określa szybkość działania mikrokontrolera. Niektóre nowsze rdzenie mogą być wydajniejsze, nawet przy niższym taktowaniu, dzięki nowszym zestawom instrukcji. Napięcie zasilania: Definiuje pobór prądu mikrokontrolera, a również konieczność zastosowania konwerterów poziomów logicznych między układem, a zewnętrznymi peryferiami. Architektury mikrokontrolerów Obecnie na rynku wyróżnia się cztery główne „rodziny” mikrokontrolerów: ARM: Te mikrokontrolery, zasilane głównie napięciem 3,3V, są niezwykle wszechstronne i popularne. Bez względu na projekt z pewnością znajdziesz odpowiedni model dla siebie. AVR: Starsza rodzina mikrokontrolerów, wykorzystywana głównie tam, gdzie kluczowa jest niezawodność. Osiągają pełną wydajność przy zasilaniu 5V. Xtensa (ESPressif ESP32/ESP8266): Chińska rodzina mikrokontrolerów na bazie architektury Xtensa, zaprojektowana głównie dla aplikacji IoT. Warto zauważyć, że nie wszystko, co pochodzi z Chin, jest złej jakości, co udowadnia ten układ. RISC-V: To dość nowa otwarta architektura, wykorzystywana do tworzenia zarówno mikrokontrolerów, jak i procesorów. Układy oparte na tej architekturze są podobne do ARM, ale znajdują się w niższym przedziale cenowym ze względu na brak opłat licencyjnych. Jak dokonać wyboru? Często warto zacząć od tego, co już znamy. Jeśli mieliśmy do czynienia z mikrokontrolerami STM32, sensownym krokiem będzie znalezienie w tej rodzinie układu spełniającego nasze potrzeby, a jeżeli go nie znajdziemy to poszukiwanie innego mikrokontrolera na bazie architektury ARM. Jeżeli używaliśmy Arduino Uno to bliżej nam może być do AVR. W innym przypadku, dobieramy układ z dowolnej rodziny, która odpowiada nam pod względem pozostałych kryteriów. Package / Obudowa Mikrokontrolery występują w różnych rodzajach obudów, od tradycyjnych do montażu przewlekanego po nowoczesne, przeznaczone wyłącznie dla montażu powierzchniowego. Wybór obudowy najczęściej zależy od umiejętności lutowniczych. DIP – obudowy przewlekane, najprostsze do przylutowania (wystarczy lutownica transformatorowa, aczkolwiek znacznie wygodniej jest pracować z lutownicą kolbową) SOP, QFP, TQFP, LQFP – obudowy SMT z wyprowadzonymi nóżkami, proste do lutowania z wykorzystaniem grotu typu „minifala” QFN – obudowy SMT z wyprowadzeniami na boku obudowy (bez nóżek) – dość skomplikowane do lutowania grotem minifala (wykonalne, lecz czasochłonne). Najlepiej lutować je gorącym powietrzem lub w specjalistycznym piecu do lutowania rozpływowego. BGA – obudowy SMT z kulkami pod układem. Bardzo trudne do lutowania amatorskiego (wymagają wprawy). Układy te należy lutować wyłącznie z użyciem gorącego powietrza lub pieca do lutowania rozpływowego. Weryfikacja jakości spoin jest praktycznie niemożliwa. Istnieją również gotowe moduły np. ESP32 WROOM czy Arduino Nano, aczkolwiek w tym zestawieniu omawiamy wyłącznie tematykę mikrokontrolerów jako układów scalonych, a powyższe moduły do takich nie należą, ale warto ich używać w fazie prototypowania, gdyż znacząco skracają czas lutowania. Fotografia 2 przedstawia układy logiczne w obudowach DIP, a fotografia 3 zaś pamięć RAM z układami scalonymi w obudowach BGA. Fotografia 2 (Wikipedia, Public Domain) Fotografia 3 (Wikipedia, Smial, CC BY-SA 2.0) Dobrą praktyką jest wybór obudowy z większą liczbą wyprowadzeń niż potrzebujemy (czasem w trakcie projektu okazuje się, że ich brakuje). W bardziej optymistycznym scenariuszu, większa ilość nóżek ułatwi nam wyprowadzenie ścieżek z układu podczas projektowania płytki PCB, jednakowoż należy mieć na uwadze, iż ze wzrostem ilości wyprowadzeń znacząco wzrasta cena układu. Peryferia? Rozważenie potrzebnych peryferii jest kluczowe. Na przykład, jeśli chcesz stworzyć kontroler PID do sterowania grzałkami, potrzebujesz interfejsu do termopary - to może być wejście analogowe albo magistrala, jak np. SPI do podłączenia wzmacniacza MAX6675. Dodatkowo będziesz potrzebować licznika sprzętowego do generowania sygnałów sterujących grzałką. Na powyższym przykładzie widać, iż to, czego potrzebujesz, zależy od konkretnego projektu. W prostych projektach jak ten wymieniony wyżej wystarczy zwykły, najprostszy mikrokontroler - np. CH32V003. Jeśli zaś marzysz o stworzeniu konsoli do gier, potrzebne będzie coś znacznie bardziej potężnego, np. STM32H7*, który ma większą moc obliczeniową i bardziej zaawansowane funkcje, jak wbudowany układ graficzny czy obsługa pamięci zewnętrznej SDRAM. Jakie peryferia i parametry warto mieć na uwadze? Ilość pinów/wyprowadzeń mikrokontrolera (GPIO): Związana z potrzebnymi wyprowadzeniami, jak i zajętymi pinami przez magistrale (I2C, SPI itp.). Magistrale komunikacyjne (I2C, SPI, UART/USART/LIN, CAN, USB): Pomagają w sprzętowej obsłudze komunikacji z innymi modułami, oszczędzając moc obliczeniową mikrokontrolera. Przetworniki ADC: Potrzebne, gdy chcesz mierzyć sygnały analogowe, np. temperaturę na termistorze. I2S/SAI: Jeśli chcesz, by twoje urządzenie miało wbudowany dźwięk (warto zauważyć, że potrzebny będzie zewnętrzny układ do obsługi dźwięku – tzw. „kodek”). Przetworniki DAC: Wbudowany przetwornik cyfrowo-analogowy, który pozwala generować sygnały analogowe bez zewnętrznych układów. DMA – służy do sprzętowego przesyłania danych z pamięci RAM do konkretnego rejestru (nie musi tego robić program), co jest znacznie szybsze, a zarazem oszczędza moc obliczeniową RTC(C) – niektóre mikrokontrolery posiadają wbudowany zegar czasu rzeczywistego i kalendarz, które w przypadku zasilania bateryjnego są w stanie określić aktualną datę. Przydatne w projektach automatycznych zraszaczy czy lampek zapalanych o konkretnej godzinie. To tylko fragment listy, aczkolwiek pokazuje, jak duży wpływ na projekt ma wybór odpowiednich peryferii. Jak widać na 11 stronie niniejszego dokumentu niektóre mikrokontrolery posiadają naprawdę rozbudowane peryferia, a to jest układ „z niższej półki”. Dobrą praktyką jest stworzenie projektu systemu (w formie diagramu funkcjonalności urządzenia), który następnie określi nam jakie elementy sprzętowe będą nam niezbędne (również pozwoli określić pomocnicze układy scalone, lecz jest to temat na inny artykuł). Pomocne mogą być również podobne projekty zrealizowane przez inne osoby oraz dokumentacja układów w nich zastosowanych. Przykładowy projekt systemu ukazuje rysunek 4. Rysunek 4 (źródło własne) RAM/ROM Każdy mikrokontroler ma swoje ograniczenia, szczególnie jeśli chodzi o pamięć programu. Z reguły, tańsze mikrokontrolery mają mniej pamięci programu lub w ogóle jej nie posiadają, wymagając zewnętrznego układu. Dla większości projektów, minimalna ilość pamięci ROM wystarcza. Jednak w bardziej skomplikowanych projektach, jak wspomniana wcześniej konsola do gier, może okazać się, że standardowa pamięć nie wystarczy. Wybór odpowiedniej ilości pamięci ROM jest często kwestią doświadczenia - po prostu nabiera się wprawy. Tu sprawa jest jeszcze trudniejsza. Wiele zmiennych można przenieść poza pamięć RAM, co może znacząco ułatwić życie. Zazwyczaj ilość pamięci RAM rośnie wraz z ilością peryferii w mikrokontrolerze. Oczywiście, jeśli wybraliśmy mikrokontroler bazując tylko na peryferiach, bez uwzględnienia pamięci, to może okazać się, że tej pamięci nam zabraknie (szczególnie w rodzinie AVR, gdzie jest jej mniej), aczkolwiek jest to bardzo rzadko spotykane zjawisko. Warto mieć na uwadze, że bardziej zaawansowane mikrokontrolery posiadają możliwość rozbudowania pamięci RAM za pomocą zewnętrznego układu scalonego (np. W25Q128 lub MT48LC4M32B2B5). Sygnały analogowe – DAC/ADC Czasem chcemy zbudować proste urządzenie diagnostyczne bez używania zewnętrznych przetworników. Tutaj pomocne są peryferia analogowe (o których już wspomnieliśmy). Istotne w ich przypadku są dwa parametry: Rozdzielczość: To, jak dokładnie jest przekształcany sygnał cyfrowy na analogowy. Na przykład, przetwornik 8-bitowy z napięciem referencyjnym 1V ma skok równy 0,0039V między kolejnymi wartościami, zaś przetwornik 16-bitowy o identycznym napięciu referencyjnym ma znacznie dokładniejszy skok w wysokości 0,000015V. Istnieją również przetworniki o wyższej dokładności (24bit, 32bit), które są dedykowane głównie systemom audio. Sample Rate (SPS): To, jak często przetwornik dokonuje odczytów lub zmiany. Przykładowo, 1MSPS oznacza, że przetwornik może odczytywać lub zmieniać swój stan około milion razy na sekundę. W diagnostyce sygnałów o wysokiej częstotliwości (np. w oscyloskopach) potrzebujemy około 10-krotnie większego Sample Rate'a niż częstotliwość sygnału. Innymi słowy, dla sygnału 100MHz potrzebujemy około 1GSPS, aby był wyraźnie widoczny na ekranie urządzenia i nie był nadmiernie przekłamany – przykładowo na jeden okres sinusoidy 100MHz powyższy przetwornik dokona maksymalnie 10 pomiarów, co może spowodować znaczne zniekształcenie sygnału. Staramy się wybierać przetworniki o jak najwyższych parametrach zachowując jednocześnie umiar kosztowy, chyba że budujemy urządzenie do pracy z wysokimi częstotliwościami, jednakowoż wtedy często potrzebny jest sprzęt specjalistyczny – FPGA czy dedykowane przetworniki różnicowe. Dobrym wyborem na start jest układ z przetwornikiem 12-bitowym z szybkością 1MSPS, który spełnia większość potrzeb w projektach hobbystycznych, aczkolwiek w wielu przypadkach 10bit z szybkością liczoną w SPS lub kSPS też wystarczy (np. do odczytywania wartości potencjometru). Inne istotne cechy Jak już zauważyłeś ten artykuł opisuje wyłącznie najbardziej podstawowe parametry wpływające na wybór mikrokontrolera. W rzeczywistości należy brać pod uwagę również te bardziej złożone – np. w przypadku architektury ARM uwzględnić rodzaj rdzenia – np. rdzeń M3 nie posiada wbudowanej sprzętowej akceleracji obliczeń na liczbach zmiennoprzecinkowych (FPU), co już występuje w przypadku rdzenia M4. Tak samo rdzenie o niższej numeracji posiadają np. wolniejsze zestawy instrukcji względem tych o numeracji wyższej. W wielu przypadkach taktowanie mikrokontrolera nie ma znaczenia, aczkolwiek w przypadku systemów, które działają „w czasie rzeczywistym” należy brać pod uwagę czas reakcji takiego mikrokontrolera na określone zdarzenie, który definiowany jest przez ilość cykli od wystąpienia zdarzenia do reakcji oraz właśnie wspomniane taktowanie rdzenia – jeżeli ilość cykli będzie identyczna to mikrokontroler o wyższym taktowaniu szybciej je przetworzy. Oprócz tego są też inne parametry: temperatura pracy, standard wykonania (automotive – przeznaczony dla branży samochodowej, mil-spec – standard wojskowy, industrial – standard przemysłowy), pobór prądu, dostępność stanów uśpienia, to czy mikrokontroler posiada wbudowany moduł RF czy nawet niezbędne komponenty pasywne lub interfejs debuggera (JTAG, SWD, SWIO, ISP...). Dobór mikrokontrolera nie jest wbrew pozorom taki łatwy, a jest to jeden z najbardziej istotnych komponentów, które wpływają na pracę całego urządzenia, więc warto poświęcić na niego dość dużo czasu. Appendix Jeżeli masz problem z doborem mikrokontrolera do projektu przedstaw schemat poglądowy (lub opis) założeń w osobnym wątku, a bardziej doświadczeni użytkownicy forum chętnie podzielą się swoimi opiniami i propozycjami.
  2. Witam. Realizuję projekt matrycy mikrofonów z wykorzystaniem mikrofonów MEMS ICS-52000 oraz mikrokontrolera, który służy do zbierania danych z mikrofonu w celu dalszej analizy dźwięku np. w MATLAB'ie. Mam problem z komunikacją z mikrofonami. Mikrofony ICS-52000 mają wyjście TDM i mam takich mikrofonów połączonych w łańcuch zgodnie z dokumentacją (zdjęcie poniżej). Celem jest pobranie danych z mikrofonów i zapisanie ich na dysku. Póki co mam gotową konstrukcję i próbuję pisać program, który pobierze dane z każdego mikrofonu. Moje pytanie brzmi: W jaki sposób zrealizować mogę komunikację TDM (Time Division Multiplexing)? Nie ma na ten temat za wiele materiałów. To co udało mi się znaleźć to zastosowanie interfejsu SAI (Serial Audio Interface) i próbowałem ten interfejs wykorzystać jednak podłączając tylko jeden mikrofon w celu jego stestowania nie działało to tak jak powinny. Próbowałem pobrać dane przez HAl_SAI_Receive_DMA() i w funkcji callback void HAL_SAI_RxCpltCallback(SAI_HandleTypeDef *hsai) przypisać wartość do zmiennej, jednak nie działało to. Szczerze to nie ma zbyt wielu przykładów zastosowania tego interfejsu do rejestracji dźwięku, a z dokumentacji co udało mi się wyczytać to SAI wspiera TDM. Konfiguracja interfejsu SAI Mode: Master Konfiguracja zegara: Po włączeniu SAI w tej konfiguracji mam 3 piny: SAI1_SD_A - wyjście danych SAI1_SCK_A - zegar SAI1_FS_A - frame select (word select) Czy zegar jaki podaje na wyjścia mikrofonów równy jest wartości zegara SAI1 (24MHz)? Czy częstotliwośc SAI1_FS_A równa jest częstotliwości audio (48kHz), czy musze ten pin obsługiwać w jakiś sposób? Według dokumentacji mikrofony są synchronizowane przez sygnał WS, więc mikrofony dzielące ten sam zegar będą samplowane synchronicznie.
  3. Cześć, od dłuższego czasu poszukuję mikrofonu do miktrokontrolrea, który będzie posiadać automatycznie zmieniany gain. Do tej pory jedyne co znalazłem to max9814 i sen12642, ale nie spełniają on moich oczekiwań. Ogólnie chodzi o alternatywę do tego: https://wiki.dfrobot.com/Gravity__Analog_Sound_Level_Meter_SKU_SEN0232#target_5 Super jeśli byłaby tańsza. Macie coś godnego poleceina? Pozdrawiam
  4. Cześć, mając przetwornik A/C (np. MCP3426) na wyjściu otrzymuję liczbę stałoprzecinkową. Co, jeśli dodam do siebie 4 wyników pomiarów i podzielę ich sumę przez 4. Może się zdarzyć tak, że wynik będzie zmiennoprzecinkowy. Tu, już wchodzimy na arytmetykę zmiennoprzecinkową, często wolniejszą dla mikrokontrolera. Gdy patrzę na ten problem, zastanawiam się, czy jest sens w ogóle uśredniać w takim wypadku. Jak to rozwiązujecie?
  5. Sprzedam 12 szt Mikrokontrolerów XILINXⓇ XC95108TM Cena 60 pln / szt kontakt. 798 415 578
  6. Dlaczego akurat ten temat? Znaczna część młodzieńców interesujących się elektroniką z oczywistych względów jako szkołę średnią wybiera technikum elektroniczne, a następnie studia powiązane z tymże kierunkiem. Tymczasem zapał u wielu młodych entuzjastów elektroniki jest skutecznie studzony przez system edukacji, który serwuje im zagadnienia czy całe przedmioty, które są zwyczajnie zbędne, a nie uczy ich tego, co naprawdę jest przydatne po zakończeniu edukacji. Z tego całego procesu można wyciągnąć kilka wniosków, którymi warto podzielić się z innymi – mianowicie, dlaczego nie powinno się zniechęcać oraz jak pomimo wątpliwego poziomu edukacji zdobyć umiejętności, które mogą wyróżnić nas pośród przyszłych, potencjalnych pracodawców. Ten artykuł bierze udział w naszym konkursie! 🔥 Na zwycięzców czekają karty podarunkowe Allegro, m.in.: 2000 zł, 1000 zł i 500 zł. Potrafisz napisać podobny poradnik? Opublikuj go na forum i zgłoś się do konkursu! Czekamy na ciekawe teksty związane z elektroniką i programowaniem. Sprawdź szczegóły » Technikum i 8051 Około 8 lat temu, patrząc na nazwę przedmiotu „układy mikroprocesorowe” przypuszczaliśmy, że będzie on dotyczył AVR. Jednak podczas lekcji powiedziano nam, że będziemy przyswajać architekturę i programowanie mikrokontrolera Intel 8051. Mikrokontrolery te można nazwać technologicznymi dinozaurami; zostały zaprojektowane w 1980 roku i obecnie nie są w zasadzie nigdzie używane – z wyjątkiem polskich szkół i uczelni, dla których przygotowano specjalne urządzenie do nauczania programowania oparte na tym układzie scalonym, nazwane DSM-51, kosztujące na chwilę obecną prawie 2000 zł brutto! Urządzenie DSM-51 Z jednej strony oryginalne mikrokontrolery 8051 są protoplastami całego szeregu dzisiejszych układów, ich język programowania (asembler) jest bardzo niskopoziomowy. Dzięki temu łatwo można zrozumieć np. działanie rejestrów roboczych oraz co się dzieje w momencie wykonywania poszczególnych instrukcji. Z drugiej strony – czy należy poświęcać temu cały semestr? Warto pokazać, że coś takiego istnieje i przy okazji krótko omówić podstawowe zasady działania tego systemu mikroprocesorowego. Ale przez resztę zajęć można wziąć do ręki inny mikrokontroler i spędzić czas nad czymś, co faktycznie jest używane gdzieś poza szkołą – jeżeli nie bezpośrednio w przyszłej pracy zawodowej, to przy nauce programowania na studiach. Do tego celu idealne wydaje się Arduino – przyjazna platforma, która nie jest używana powszechnie chociażby w przemyśle, ale za to świetnie nadająca się do nauki programowania. Właśnie dzięki tej drugiej właściwości wielu amatorów elektroniki używa Arduino w zaciszu domowym, przy okazji poznając podwaliny języków C i C++ (język programowania Arduino jest w czymś rodzaju uproszczonego połączenia tych dwóch języków). Samo Arduino jest relatywnie tanie – oryginalną płytkę Arduino Uno można kupić za kwotę poniżej 100 zł (cena na moment pisania artykułu). Dlaczego zatem nie zastąpić mocno przestarzałego i horrendalnie drogiego DSM-51 czymś, co jest tańsze, nowocześniejsze, bardziej użyteczne i rozwojowe? Wbudowane “peryferia” używane w DSM-51 to m.in.: Wyświetlacze: alfanumeryczny LCD 2x16, Wyświetlacz segmentowy, Klawisze, Dioda LED, Buzzer. Co oferuje Arduino w porównaniu do DSM-51? Modularność i możliwość podłączenia mnóstwa nowocześniejszych, bardziej zaawansowanych technologicznie urządzeń peryferyjnych (wystarczy zajrzeć do kursów dot. Arduino). Już sama znajomość podstaw prosperujących języków C i C++ oraz zaznajomienie się z nowocześniejszą technologią (tu warto przytoczyć specyficzne płytki Arduino z wbudowaną komunikacją Ethernet czy Wi-Fi) deklasuje mikrokontrolery 8051, których dogłębna znajomość w dzisiejszych czasach jest bezcelowa. Arduino Ethernet Rev3 Studia inżynierskie i kolejne rozczarowanie Po nauce programowania w technikum pojawiła się nadzieja, że szkoła wyższa to faktycznie wyższy poziom i że uda się zasiąść do czegoś nowocześniejszego, jak np. AVR czy STM32. Na trzecim roku w planie figuruje przedmiot o analogicznej nazwie do tego, który był w technikum. Na blatach w sali leży ten sam rodzaj płyt edukacyjnych z 8051, które programowano w szkole średniej… Znów semestr poświęcony technologii, której znajomość się nigdzie nie przyda; do tego „kształcenie” odbywa się z legendarną, akademicką surowością – zrozumienie fragmentu programu nie jest zadowalające. Na pytanie wykładowcy nie wystarczy odpowiedzieć poprawnie, własnymi słowami. Odpowiedź powinna zostać wyuczona na pamięć dokładnie tak, jak podano na wykładzie – w przeciwnym razie była uważana za błędną. Programy tworzone podczas zajęć również nie były wyjątkowo finezyjne, bo nie pozwalał na to sprzęt: jednym z zadań było zaprogramowanie kontrolera tak, aby sterował sygnalizacją świetlną na makiecie skrzyżowania (trochę bardziej skomplikowane zapalanie i gaszenie diod po upływie określonego czasu, wykorzystując przerwania). W drugim etapie zajęć do wejść cyfrowych podłączono czujniki przeszkody IR. Pojawienie się przeszkód na danym czujniku i w odpowiedniej kolejności powodowało odpowiednio zwiększenie lub zmniejszenie zawartości licznika, co z kolei miało odpowiadać liczeniu pasażerów w autobusie. Zawartość licznika przedstawiał wyświetlacz 7-segmentowy. Takie programy jedynie uczą pewnych zależności, które równie dobrze da się pokazać na nowocześniejszym sprzęcie, jednocześnie zaznajamiając z jego architekturą czy językiem programowania, co może dać oczywiste benefity w przyszłości. Mikrokontroler Intel P8051 używany w DSM-51. Warto zwrócić uwagę na rok produkcji mikrokontrolera (1982). Szczęśliwie, w następnym semestrze pojawiły się upragnione AVR. Niestety, sam prowadzący zajęcia przyznał, że jeden semestr na porządne poznanie AVR to za mało. Pojawia się pytanie, czy nie lepiej byłoby poświęcić dwa semestry na naukę AVR? Skąd zatem czerpać wiedzę i chęci? Czytając ten artykuł można odnieść wrażenie, że autor próbuje jeszcze bardziej zrazić czytelnika do uczenia się programowania mikrokontrolerów. Nic bardziej mylnego – chce pokazać swoje doświadczenia i dać przekaz młodemu człowiekowi żądnemu wiedzy, że nie ma się co przejmować, gdy po wejściu do klasy zastanie zakurzony i podniszczony sprzęt, który jest być może starszy od jego rodziców. Trzeba wtedy wziąć sprawy we własne ręce - jeżeli szkoła nie jest w stanie przekazać potrzebnej nam wiedzy, to należy zdobyć ją gdzie indziej. Cóż, edukacja w polskich szkołach i na uczelniach jest, jaka jest i ciężko będzie to przeskoczyć; na zmiany też zapewne przyjdzie poczekać. Jednak nie ma się co martwić – przecież istnieją fora czy kursy internetowe. STM32 NUCLEO-F103RB wykorzystywane do nauki programowania w jednym z kursów. Umiejętność programowania tego typu modułów jest pożądana na rynku pracy. Ogromna ilość ludzi pomimo ukończenia edukacji wciąż pogłębia swoją wiedzę, wykorzystując do tego Internet. Nic dziwnego, na rynku pracy pojawiają się interesujące i dobrze płatne oferty, które mogą być poza ich zasięgiem – a to dlatego, że nie są wystarczająco dobrze zaznajomieni z układami takimi jak na przykład AVR czy STM32. Osobom w takiej sytuacji nie pozostaje nic innego, jak zakupienie odpowiedniego sprzętu czy całego zestawu edukacyjnego i wzięcie się do nauki – wtedy uda się poszerzyć horyzonty i znaleźć lepszą pracę, a tak namiętnie męczone przez szkołę mikrokontrolery z poprzedniej epoki wcale nie będą do tego niezbędne.
  7. Cześć, stworzyłem na Arduino Nano prototyp pewnego urządzenia i ma on szansę stać się produktem komercyjnym. Jednak teraz pojawia się pytanie czym zastąpić Arduino w końcowej wersji? Urządzenie jest proste: 4 wyjścia cyfrowe 3 wejścia cyfrowe wyświetlacz I2C/SPI lub inny Pobór prądu nie ma znaczenia, układ nie będzie robił skomplikowanych operacji, reakcja nie musi być natychmiastowa (dopuszczam opóźnienia do 200ms). Do urządzenia będzie dostarczone zasilanie 24V DC, 2 wejścia i 1 wyjście też będą na 24V, więc zapewne będę musiał pomyśleć nad konwersją napięć (chyba, że jest jakiś uC na 24V?). Będę robił PCB, więc dobrze jakby układ dało się łatwo umieścić na płytce. Urządzenie ma pracować 24h/dobę przez kilka lat, więc uC musi to wytrzymać. Urządzenie ma być dosyć nisko budżetowe, ale nie jest to najważniejsze. Wydaje mi się, że Arduino Nano w gotowym produkcie nie wygląda najlepiej (może się mylę?), więc pytanie czym je zastąpić? Pierwszy pomysł to Atmega328. Jest dość tania i pozwala łatwo przenieść projekt z Arduino. Niestety nie mam w tym doświadczenia i nie wiem, czy nie lepiej wziąć innego ARV lub coś z rodziny STM (a może zostawić Nano?). Może ktoś zna różnice między dostępnymi rozwiązaniami i mógłby mi doradzić? Nagrodą będzie moja dozgonna wdzięczności i chwała po wsze czasy 😀 PS: niestety nie mogę zdradzić co to za urządzenie 🤐
  8. Dzień Dobry, Mam pytanie odnośnie programowania mikro kontrolerów. Zajmuję się akurat ATTINY2313A. Mam ustawiony wewnętrzny oscylator na częstotliwość 4 MHz bez wewnętrznego podziału zegara przez 8. Poniżej mój krótki kod w 😄 #include <avr/io.h> int main(void) { DDRB = _BV(DDB0); // ustawienie pinu PB0 w stan wyjścia TCCR0A = _BV(WGM01); // ustawienie generatora w tryb CTC TCCR0B = _BV(CS00); // wybór zegara z skalowaniem przez 1 OCR0A = 1; // ustawienie górnej wartości licznika while (1) { if (TIFR & _BV(OCF0A)) { // sprawdzenie czy w rejestrze TIFR ustawiona została flaga OCF0A po przepełnieniu licznika OCR0A TIFR |= _BV(OCF0A); // wyzerowanie flagi OCF0A poprzez ustawienie logicznej jedynki PORTB ^= _BV(DDB0); // przełączenie bitu na pinie PB0 } } } W moim przypadku według dokumentacji czyli wzoru poniżej: fOC0A=fclk_I/O/(2·N·(1+OCR0A)) fOC0A=4000000/(2·1·(1+1)) fOC0A=1000000=1MHz A teraz do meritum:) Co robię nie tak? Częstotliwość którą uzyskuję to --> 207.4KHz. W załączniku przesyłam zdjęcie z oscyloskopu z widocznym przebiegiem na pinie PB0. Pozdrawiam, Oskar Zaremba
  9. Source Enterprise sp. z o.o. sp. k. jest ambitnym, stabilnie finansowanym krakowskim start-up’em. Rekrutujemy do nowych zespołów badawczo-rozwojowych. Zespoły te zajmowały będą się konstruowaniem mobilnych robotów oraz budową ekosystemu do zarządzania nimi. PROGRAMISTA MIKROKONTROLERÓW Miejsce pracy: Kraków, Wola Justowska Marzy Ci się kreatywna praca w startup’ie? Chciałbyś brać realny udział w tworzeniu nowych konstrukcji mechatronicznych? Pracujemy w interdyscyplinarnych zespołach. Tworząc zespół, wybieramy osoby, których umiejętności będą nawzajem się uzupełniały. Do Twoich zadań należeć będzie: tworzenie i rozwój oprogramowania w języku “C”, programowanie mikrokontrolerów Espressif ESP32, Nordic nRF, STM32, tworzenie oraz aktualizacja dokumentacji, budowa oraz testowanie prototypów. Oczekujemy od Ciebie: minimum 3 lata doświadczenia w programowaniu z wykorzystaniem języka z rodziny “C”, bardzo dobrej znajomości programowania w języku “C” i/lub “C++”, doświadczenia w programowaniu mikrokontrolerów (8-,32-bitowych) w “C” i/lub “C++”, znajomości specyfiki programowania systemów wbudowanych z uwzględnieniem ograniczonych zasobów sprzętowych, umiejętności obsługi podstawowych peryferiów, umiejętność obsługi komunikacji BLE oraz WiFi, wiedzy w zakresie elektroniki cyfrowej i analogowej umożliwiającej czytanie schematów zawierających cyfrowe i analogowe obwody elektroniczne, znajomości elektroniki w stopniu pozwalającym na świadomą implementację obsługi poszczególnych bloków elektronicznych, umiejętności posługiwania się urządzeniami kontrolno-pomiarowymi, znajomości języka angielskiego min. na poziomie B2, umiejętności samodzielnego rozwiązywania problemów, samodzielności w dziedzinie, którą reprezentujesz. Dodatkowo możesz pochwalić się: wykształceniem wyższym, osiągnięciami w realizacji projektów związanych z robotyką, znajomością oprogramowania Atlassian: Confluence, Jira, Bitbucket, doświadczeniem w zwinnym podejściu do zarządzania projektami, znajomością zagadnień szyfrowania oraz transmisji danych. Oferujemy: pracę w zespole Scrum, wynagrodzenie adekwatne do posiadanych umiejętności i zaangażowania, umowę o pracę lub B2B, pokój kreatywny, pyszną kawę. Prosimy o przesyłanie CV w języku polskim wraz z klauzulą RODO na adres mailowy careers@see.inc. Klauzula: “Wyrażam zgodę na przetwarzanie moich danych osobowych przez firmę Source Enterprise Spółka z ograniczoną odpowiedzialnością Spółka Komandytowa dla potrzeb niezbędnych do realizacji procesu rekrutacji zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO).” Oraz jeśli chcesz wziąć udział w przyszłych rekrutacjach: “Wyrażam również zgodę na przetwarzanie moich danych osobowych w celu prowadzenia przyszłych rekrutacji przez wyżej wskazaną firmę.” Wysyłając swoje CV i inne dokumenty aplikacyjne wyrażasz zgodę na przetwarzanie swoich danych osobowych przez Source Enterprise Spółka z ograniczoną odpowiedzialnością Spółka Komandytowa z siedzibą w Krakowie, ul. Starowolska 9, 30-231 Kraków, jako administratora danych osobowych, na potrzeby realizacji toczącego się procesu rekrutacyjnego. Udzielenie zgody jest dobrowolne, jednak niezbędne w celu wzięcia udziału w rekrutacji na stanowisko wskazane w ogłoszeniu. Zgoda może zostać w każdym czasie wycofana poprzez wysłanie oświadczenia na adres e-mail: gdpr@see.inc lub na wskazany powyżej adres siedziby, jednak uniemożliwi to dalszy udział w rekrutacji. Twoje dane osobowe wskazane w Kodeksie pracy lub w innych ustawach szczegółowych (według wymogów ogłoszenia), są przetwarzane w oparciu o przepisy prawa i ich podanie jest konieczne do wzięcia udziału w rekrutacji. Pozostałe dane osobowe (np. Twój wizerunek) przetwarzamy na podstawie Twojej dobrowolnej zgody, którą wyraziłaś/eś wysyłając nam swoje zgłoszenie rekrutacyjne i ich podanie nie ma wpływu na możliwość udziału w rekrutacji. Możemy przetwarzać Twoje dane osobowe zawarte w zgłoszeniu rekrutacyjnym także w celu ustalenia, dochodzenia lub obrony przed roszczeniami, jeżeli roszczenia dotyczą prowadzonej przez nas rekrutacji. W tym celu będziemy przetwarzać Twoje dane osobowe w oparciu o nasz prawnie uzasadniony interes, polegający na ustaleniu, dochodzeniu lub obrony przed roszczeniami w postępowaniu przed sądami lub organami państwowymi. Masz prawo dostępu do swoich danych, w tym uzyskania ich kopii, sprostowania danych, żądania ich usunięcia, ograniczenia przetwarzania, wniesienia sprzeciwu wobec przetwarzania oraz przeniesienia podanych danych (na których przetwarzanie wyraziłeś zgodę) do innego administratora danych. Masz także prawo do wniesienia skargi do Generalnego Inspektora Ochrony Danych Osobowych (w przyszłości: Prezesa Urzędu Ochrony Danych Osobowych). Cofnięcie zgody pozostaje bez wpływu na zgodność z prawem przetwarzania, którego dokonano na podstawie zgody przed jej cofnięciem. Twoje dane osobowe przetwarzamy w celu prowadzenia rekrutacji na stanowisko wskazane w ogłoszeniu przez okres nie dłuższy niż 180 dni od momentu zakończenia procesu rekrutacji, a gdy wyraziłaś/eś zgodę na udział w przyszłych rekrutacjach przez okres nie dłuższy niż 3 lata od momentu zakończenia rekrutacji. Ponadto Twoje dane osobowe możemy przechowywać dla celów ustalenia, dochodzenia lub obrony przed roszczeniami związanymi z procesem rekrutacji przez okres nie dłuższy niż 3 lata od momentu zakończenia rekrutacji. W określonych przypadkach możemy przetwarzać Twoje dane dłużej niż 3 lata, jeżeli taka konieczność wynika z przepisów prawa. Nie przekazujemy Twoich danych osobowych poza Europejski Obszar Gospodarczy. W razie pytań możesz się z nami skontaktować pod adresem e-mail gdpr@see.inc. Zastrzegamy możliwość kontaktu tylko z wybranymi kandydatami.
  10. Płytka prototypowa AVR Witam mam dla was do zaprezentowana płytkę prototypową z mikrokontrolerem AVR w obudowie DIP40. Zaprezentowany układ został wykonany dla osób zaczynających zabawę z mikrokontrolerami AVR. Płytka PCB ma wymiary 132mm x 69mm. Został wykonany w programie KiCad. Schemat umieszczony poniżej składa się z Płytki dwuwarstwowej Mikrokontrolera AVR DIP40 Wyświetlacza 7-segmentowego Wyświetlacza LCD HD44780 Dwóch mostków H w jednej obudowie 5 przycisków przycisków 1. Obok mikrokontrolera są umieszczone jego wyprowadzenia. Do obu wyświetlaczy wyprowadzenia umieściłem obok goldpinów Portu A dla LCD oraz Portu C dla 7-segmentowego (odpowiedzialnego za załączenie segmentów) Umożliwia to łatwe połączenie używając zworek. Każdy podłączony układ ma doprowadzone zasilanie. 2. Mikrokontroler AVR – Płytka przystosowana jest do mikrokontrolerów AVR w obudowie DIP40. Nie wyposażyłem układ w programator. Lecz zastosowałem złącze ISP 10-pinowe. Programator to koszt ok 20 pln. Podłączyłem do układu zewnętrzny rezonator kwarcowy w obudowie HC-49 przy montażu należy pamiętać o przylutowaniu adaptera. Daje to możliwość zamiany taktowania procka. 3. Wyświetlacz 7-segmentowy jest to element ze wspólną anodą Jest to układ który ma już wyprowadzone i połączone segmenty i anody poszczególnych cyfr. Do obsługi wyświetlacza wykorzystywane są piny wyprowadzone przy Porcie C (segmenty) oraz obok wyświetlacza (Anody). Segmenty posiadają również rezystory 220 Ω. Można również zastosować wyświetlacz ze wspólną katodą ale należy pamiętać o tym pisząc program. 4. Wyświetlacz LCD HD44780 nie występuje on w prezentowanym układzie ma on wyprowadzenia na PCB. Jest możliwa jedynie komunikacja 4-bitowa, która oszczędza na ilości potrzebnych połączeń między mikrokontrolerem a ekranem. Wykorzystać można wiele rozmiarów wyświetlaczy. Najczęstszym jest 1602 który posiada dwa wiersze oraz 16 kolumn. Czyli 32znaki. Jest też możliwość podłączenia ekranu 2004 i zależność kolumn i wierszy jest identyczna jak w opisywanym wcześniej ekranie. Pod ekranem jest miejsce na zworkę RW która odpowiada za komunikacje zwrotną z LCD do mikrokontrolera. Nie korzystając z tej opcji należy przełączyć pomiędzy RW a GND. Obok zworki RW jest miejsce na przylutowanie potencjometru do ustawienia kontrastu. 5. Mostek H jest to element do pełnej obsługi silników. Układ L293D jest w obudowie DIP 16. Układ ten pozwala sterować w pełni (prędkość, kierunek obrotów) dwoma silnikami DC. Można również podłączyć opisywany układ do silnika krokowego bipolarnego. Dzięki wyprowadzeniom można wykorzystać zewnętrzne napięcie przystosowane do danego silnika. W każdym z silników możemy decydować o prędkości obrotowej wykorzystując złącze PWM oraz kierunkiem przy użyciu wejść 1A, 2A lub 3A, 4A (np. 1A Vcc , 2A GND -> obroty w prawo) 6. Ostatnim opisywanymi elementami są przyciski. Są one podjęte a stałe do GND a drugie końce wyprowadzeń są podłączone do złączy goldpinowych. Projekty które można zrealizować na omawianym PCB Migotanie diodami LED (należy pamiętać o podłączeniu co najmniej jednego wyprowadzenia Anod do GND) Sterowaniem Wyświetlaczem LED 7 segmentowym (multipleksacja) Obsługa wyświetlacza LCD Sterowanie silnikami DC w wykorzystaniem PWM Sterowanie silnikiem krokowym bipolarnym obsługa klawiszy (sprawdzenie stanu na pinie) Obecny układ jest pierwszą wersją po której nastąpią poprawki. W kolejnych etapach rozwoju chciałbym dodać osobne diody LED podpięte na stałe do 5V lub GND wraz z rezystorami. Dołączyć dwa moduły jednym jest ekspander pinów pracujący na magistrali TWI (I2C) oraz moduł termometru cyfrowego DS18B20 połączonego za pomocą komunikacji 1-wire. Poprawić układ PCB (układ ścieżek, wymianę obudów na inne). Zachęcam do zadawania pytań, pisania sugestii oraz krytyki w celu dalszego rozwoju. W załączniku dołączam plik rar z wszystkimi plikami KiCad'a.Board 1.rar Pozdrawiam
  11. Witam, pracuję nad pewnym projektem do pojazdu. Chciałbym stworzyć system, który pozwoli uruchomić motocykl bez konieczności użycia kluczyka. Myślałem, żeby do tego celu wykorzystać moduł nrf podłączony do Teensy 3.6 znajdującego się w motocyklu oraz drugi moduł nrf służący jako pilot/brelok. Teensy po wyłączeniu silnika będzie wchodzić w tryb energooszczędny(Deep sleep) natomiast po wykryciu komunikacji z tym konkretnym nRF zostanie wybudzona(wykorzystam przerwania). Wiem, że takie nRF'y mają spore dystanse dlatego chciałbym jakoś ten dystans móc zmniejszyć, powiedzmy do 50-80m. I tutaj może pytania: - czy dystans komunikacji między takimi nRFami da się zmniejszyć(programowo?) ? -czy schemat takiego systemu ma sens? Da się coś może zrobić lepiej? -jakiej płytki/procesora najlepiej użyć do takiego pilota(musi być energooszczędny) ? Tutaj link do omawianego modułu: https://elty.pl/pl/p/Miniaturowy-modul-z-nRF24L01-2.4GHz-montaz-SMD/1762?gclid=CjwKCAjw44jrBRAHEiwAZ9igKIHTyQq9zrTGPwRNgydnKvBfk6NXBh60JIfxNxD4B28CpPtDnGPXpRoCA0QQAvD_BwE Z góry dziękuję za każdą pomoc.
  12. Chciałem ostatnio zgłębić tajniki mikrokontrolerów za pomocą Mt3620 jednak pojawił się taki problem, że udało mi się wgrać jeden program (migającą diodę) ale jak już za drugim razem chciałem go wgrać (zmieniłem pin gpio zgodnie z dokumentacją na czerwony) płytka przestała być widoczna dla komputera. Nie świeci się żadna dioda (zawsze się jedna świeciła ). Nie wiem czy ja coś źle zrobiłem a może płytka jest uszkodzona. Jeżeli ktoś wiedziałby jak zdiagnozować problem proszę o pomoc.
  13. Dzień dobry mam problem z klonem arduboyem którego sam zbudowałem. Problem występuje podczas kompilacji programu i wyskakuje taki błąd. Gierkę pobierałem z tej strony https://github.com/TEAMarg/ID-46-Arduventure/releases/tag/v1.0 i przeniosłem folder ARDU_AB na pulpit z tymi plikami i podczas wgrywania wywala mi taki błąd. Mikro-kontroler to arduino nano wraz z oled 128x64. Z góry będę wdzięczny 🙂 In file included from c:\program files\windowsapps\arduinollc.arduinoide_1.8.21.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\io.h:99:0, from c:\program files\windowsapps\arduinollc.arduinoide_1.8.21.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\pgmspace.h:90, from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:28, from C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.h:5, from C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:1: C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp: In function 'void TIMER4_OVF_vect()': C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:4:24: error: 'OCR4A' was not declared in this scope ATMLIB_CONSTRUCT_ISR(OCR4A) ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:4:3: note: in expansion of macro 'ATMLIB_CONSTRUCT_ISR' ATMLIB_CONSTRUCT_ISR(OCR4A) ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp: In member function 'void ATMsynth::play(const byte*)': C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:112:3: error: 'TIMSK4' was not declared in this scope TIMSK4 = 0b00000000;// ensure interrupt is disabled ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:127:3: error: 'TCCR4A' was not declared in this scope TCCR4A = 0b01000010; // Fast-PWM 8-bit ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:128:3: error: 'TCCR4B' was not declared in this scope TCCR4B = 0b00000001; // 62500Hz ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:129:3: error: 'OCR4C' was not declared in this scope OCR4C = 0xFF; // Resolution to 8-bit (TOP=0xFF) ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:130:3: error: 'OCR4A' was not declared in this scope OCR4A = 0x80; ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp: In member function 'void ATMsynth::stop()': C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:152:3: error: 'TIMSK4' was not declared in this scope TIMSK4 = 0; // Disable interrupt ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp: In member function 'void ATMsynth::playPause()': C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:159:3: error: 'TIMSK4' was not declared in this scope TIMSK4 = TIMSK4 ^ 0b00000100; // toggle disable/enable interrupt ^ C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp: In function 'void ATM_playroutine()': C:\Users\macio\Documents\Arduino\libraries\ATMlib-master\src\ATMlib.cpp:424:9: error: 'TIMSK4' was not declared in this scope TIMSK4 = 0; // Disable interrupt ^ exit status 1 Błąd kompilacji dla płytki Arduino Nano.
  14. Pracuję w dziale kontroli zakładu przemysłowego. Pojawiła się konieczność dokonywania i archiwizowania w terenie setek pomiarów dokonywanych suwmiarką w celu ich dalszej analizy. Zlecę z ramienia firmy wykonanie projektu polegającego na stworzeniu urządzenia pomiarowego z popularnej suwmiarki cyfrowej dołączonej do modułu zawierającego: zasilanie na kilkanaście godzin, moduł zegara, moduł karty SD, wyświetlacz ( 4x16) do prezentacji aktualnie dokonanych 2 serii po 16 pomiarów. Pokrętła sterujące: wyboru, zapamiętania, korekcji. Efektem działania szkicu ma być zapamiętanie na karcie pakietów danych: 2 serie po 16 pomiarów, poprzedzone datą i godziną pomiaru, poprzedzone dodatkowymi 3 liczbami do wprowadzenia pokrętłami sterującymi. Doświadczony automatyk może zaproponowac inny sposób gromadzenia danych. To jeden z paru projektów, które mogę zlecić. Ten jest paląco aktualny. Inne mogą byc rozbudowywane przez lata, zgodnie z potrzebami zakładu. Piotr Telefon kontaktowy -696 480 976. Mazowsze zachodnie.
  15. Zdecydowałem się przestawić swój kolejny projekt utrzymany w klimatach retro. Wszystko zaczęło się jakiś rok temu, gdy przypadkowo odkryłem, że sprzedawcy na popularnych chińskim serwisie aukcyjnym posiadają podejrzanie duże ilości podejrzanie tanich układów MOS6502. Wydało mi się to zbyt piękne, aby było prawdziwe. Z ciekawości zamówiłem kilka sztuk, płacąc za nie kilka dolarów i zapomniałem o całej sprawie, licząc na to, że pewnie otrzymam podróbki z wygrawerowanymi laserowo oznaczeniami. Jak bardzo się myliłem! Po uruchomieniu na płytce prototypowej okazały się być prawdziwymi układami MOS6502, wykonanymi w technice NMOS. Zabrałem się więc za projektowanie właściwej płytki, myśląc o stworzeniu swojego własnego komputera pracującego pod kontrolą języka BASIC. Ten projekt ciągle jest w realizacji, ale nie o nim chcę tutaj napisać. W międzyczasie bowiem w mojej głowie pojawił się jeszcze jeden pomysł. Chciałem sprawdzić jak ta rodzina procesorów sprawdza się w roli mikrokontrolera. Albo innymi słowy - byłem ciekaw co by było, gdyby Arduino powstało trzydzieści lat temu. 😉 Tym razem od brytyjskiego sprzedawcy na eBay-u zamówiłem kilka sztuk nowszych procesorów WDC65C02, wykonanych w technologii CMOS. Zastosowanie tej wersji układów nie tylko zmniejszało znacznie pobór prądu, ale także upraszczało układ, niwelując konieczność stosowania bufora szyny adresowej. Za punkt wyjścia do tego projektu posłużyła płyta procesorowa mojego ciągle powstającego komputera na MOS6502, która została poddana pewnym modyfikacjom. Przede wszystkim zmieniła się organizacja pamięci - zwiększyłem ilość EPROM-u kosztem RAM-u, dodana została także pamięć EEPROM. Organizacja pamięci wygląda następująco, zaczynając od 0x000: 8 kB pamięci RAM 8 kB przestrzeni adresowej I/O 8 kB pamięci EEPROM 8 kB układ EPROM (dodatkowa pamięć, obecnie niewykorzystywana) 32 kB EPROM (główna pamięć, przechowująca program, dane i adresy wektorów) Urządzenie pracuje z prędkością 4 MHz. Sygnał taktowania pochodzi z jednoukładowego generatora kwarcowego. Układ DS1232 odpowiada za obsługę wejścia RST (likwidacja drgań styków i obsługa power-on reset). Urządzenie posiada także port wyjściowy na 74HCT373 - można za jego pomocą migać dwiema diodami, pozostałe linie są wyprowadzone na złącze IDC-40. Dekoder adresów jest zrealizowany na układach 74HCT138 i 74HCT139. Dodatkowo kilka bramek układu 74HCT00 posłużyło do generowania sygnałów !RD i !WR, wykorzystywanych w układach kompatybilnych z magistralą intela (a więc także zastosowanych pamięciach). Wszystkie sygnały szyny danych, adresowej, te związane z obsługą przerwań oraz wyjścia dekodera adresów są wyprowadzone na złącze IDC-40. Moim zamiarem było stworzenie płytki, która nie tylko będzie mogła służyć do eksperymentów z historyczną rodziną procesorów, ale także będzie mogła posłużyć jako podstawa do budowy jakiegoś użytecznego projektu, poprzez dodanie odpowiednich modułów, na wzór shieldów Arduino - z tą różnicą, że podpinanych bezpośrednio do magistrali procesora za pomocą taśmy IDC-40. Na pierwszy ogień poszła płytka zawierająca wyświetlacz HD44780 (4x20) oraz kilka przycisków tact switch. Wyświetlacz pracuje bezpośrednio na magistrali procesora - do tego w końcu został zaprojektowany. Konieczne było tylko dodanie prostej logiki, generującej sygnały sterujące. Od strony programowej obsługa wyświetlacza w takich systemach jest nawet prostsza niż obecnie - wystarczy jedynie wpisywać odpowiednie wartości pod odpowiednie adresy w przestrzeni adresowej procesora. Przyciski posiadają własny port wejściowy, zrealizowany na 74HCT245. Praca nad tym projektem była dla mnie także okazją do zapoznania się z asemblerem 6502, chociaż prawdę mówiąc większość kodu napisałem w C posługując się kompilatorem cc65, uzupełniając go o asemblerowe wstawki. Co prawda jest to dość prosty kompilator i być może nie nadaje się do pisania gier pod Commodore C64, ale w w tego typu zastosowaniach sprawdza się całkiem nieźle.
  16. Witam forumowiczów, na wstępie wspomnę iż dopiero rozpoczynam swoją przygodę z elektroniką toteż proszę o wyrozumiałość jeśli pojawi się taka potrzeba. Mam do przygotowania urządzenie którego opis przygotowałem poniżej. Urządzenie ma posiadać wbudowaną pamięć w której przechowywane będą pliki audio oraz pliki tekstowe (.txt, .xlsx, .csv, itp.) które powinny mieć możliwość łatwej aktualizacji (np. podłączenie tabletu lub telefonu przez bluetooth lub usb / wifi / wbudowany slot na kartę SIM i aktualizacja przez internet (preferowane jeśli cena nie okaże się zaporowa)). Pamięć nie powinna być potrzebna większa niż 100 megabajtów. Urządzenie ma być zamknięte w niesprecyzowanej jeszcze obudowie z jednym przyciskiem zewnętrznym po naciśnięciu którego na podstawie zawartości plików tekstowych oraz aktualnej godziny odtwarzany ma być wybrany przez algorytm plik audio. Urządzenie powinno być dostosowane do działania w warunkach zewnętrznych. Zasilanie urządzenia ma pochodzić z sieci energetycznej, ewentualnie z baterii połączonej z panelem fotowoltaicznym. W pierwszej kolejności muszę ustalić platformę która będzie najlepsza (najtańsza ze spełniających założenia). Po wstępnym sprawdzeniu rozwiązań doszedłem do wniosku, że najlepszą platformą do realizacji powyższego zadania będzie Arduino ewentualnie Raspberry pi‎. Oba rozwiązania wydają się oferować wszystko czego potrzebuję. Czy mam rację i powinienem wybrać jedno z tych rozwiązań? Może coś przeoczyłem i wspomniane rozwiązania uniemożliwiają realizację któregoś z opisanych wymagań? Czy może jest jakieś inne które spełni wymagania a w realizacji okaże się tańsze? Z góry dziękuję za zainteresowanie i odpowiedź. W przypadku zainteresowania wątkiem chętnie będę go kontynuować ponieważ wybór rozwiązania to dopiero pierwszy krok na długiej drodze do powstania prototypu.
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.