Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

8051 - Ciekawe programy na 8051

TechnoT 18 Cze 2014 17:32 2265 17
  • #1 18 Cze 2014 17:32
    TechnoT
    Poziom 7  

    Witam, od pewnego czasu zacząłem się zajmować uC 8051, chciałbym poszerzyć swoją wiedzę i dopytać się jakie ciekawe rzeczy można zrobić na tym uC?
    Napisałem wiele roznych programow sterowania diodami, lcd, wysw 7 seg, silnikiem itp. Jakieś ciekawe pomysły? I co polecacie zacząć ogarniać bo tym mikrokontrolerze? Czytałem o zestawie arduino na atmedze, warto tym się zająć? Chciałbym również nauczyć się rzeczy które przydadzą mi się później w pracy, chciałbym byście mogli zasugerować czym się zająć w przyszłości. Pozdrawiam

    0 17
  • Arrow Multisolution Day
  • Pomocny post
    #2 18 Cze 2014 22:35
    Steryd3
    Poziom 31  

    Mikrokontroler 8051 to klasyk który większość ludzi których ktoś kiedyś próbował nauczyć techniki mikroprocesorowej musiała choć trochę poznać. Mnie w Technikum i na Politechnice też było dane się z nim zaprzyjaźnić. Jest to dość fajny i popularny mikrokontroler (wielu producentów poza Intelem który go stworzył ma go w takiej czy innej formie w swojej ofercie) tyle, że nieco archaiczny i z niewielkimi możliwościami.
    Na pytanie "co można jeszcze zrobić" odpowiedzi nie ma. Po to są mikrokontrolery by można było wiele. Ogranicza Cię tylko Twoja pomysłowość i możliwości oraz zasoby mikrokontrolera.
    Co po 8051...opcji jest wiele. Ja przesiadłem się na AVRy i powiem, że był to przeskok z motorynki na ścigacza. Drugą grupą dość popularnych mikrokontrolerów są PIC.
    Obecnie powoli przesiadam się na ARMy a bardziej szczegółowo to STM32. Przesiadka z 8-bitowego AVRa taktowanego najczęściej do 16 MHz na 32-bitowy mikrokontroler STM32 taktowany niejednokrotnie powyżej 100MHz z dużo lepszymi peryferiami była jak przesiadka ze ścigacza na samolot myśliwski.
    Polecam stronę http://mikrokontrolery.blogspot.com/ gdzie sporo jest o AVRach.
    Polecam też naukę języka C który jest obecnie wiodącym w mikrokontrolerach i nie tylko.
    Powodzenia w zdobywaniu wiedzy!

    0
  • Arrow Multisolution Day
  • #3 18 Cze 2014 23:28
    el2010tmp
    Poziom 25  

    TechnoT napisał:
    jakie ciekawe rzeczy można zrobić na tym uC?

    Dorysować oczy i będzie stonoga.

    A tak na poważnie to czasy świetności tego układu minęły już daaaawno temu.
    Po prostu nie warto się nim zajmować.

    0
  • #4 18 Cze 2014 23:49
    excray
    Poziom 39  

    Sedno tematu ujął użytkownik Steryd3 niemniej nie skreślałbym tego IC jak sugeruje el2010tmp Układ z pewnością mało przyszłościowy niemniej prosty, bardzo tani na chwilę obecną ze znaczną ilością dokumentacji i przykładów w internecie/literaturze i często spotykany w wielu starszych aplikacjach więc jednak warty mimo wszystko uwagi.

    0
  • #5 19 Cze 2014 13:10
    TechnoT
    Poziom 7  

    Czyli z tego co wywnioskowałem, ogarnąć 8051 we wszystkich aspektach, żeby jakoś zaznajomić się dokładnie ze wszystkimi funkcjami, a następnie zająć się jakimś AVR atmega itp? Aktualnie piszę w asemblerze, moim zdaniem dobrze jest ogarnąć ten język w znacznym stopniu, a potem odrazu na c. Skoro do c biblioteki są pisane w asemblerze z tego co wiem, to dobra będzie jego znajomość. W bascomy itp nie chce się bawić, bo w tym języku na wszystkie uC nie będę mógł robić programów, a c jest tak jak mówicie chyba znacznie lepszy. Kupiłem sobie jeszcze 2 procki 89s5.... i będę jeszcze przez kilka tygodni robił coś ciekawego na nich, jakieś czujniki, może jakiś sterownik do bramy. Czyli z avr czym zająć sie dokładnie? Macie jakiś startowy kit czy coś co pomogło by mi do ich nauki oczywiście w języku c? Bądź jaki model? Najlepiej taki, żeby jego znajomość już przydała mi się w przyszłości gdybym wiązał ją z tym właśnie zawodem ;p dzięki

    0
  • #6 19 Cze 2014 13:49
    _coder
    Poziom 11  

    el2010tmp trochę cie poniosło, 8051 jest i ma się dobrze jest cały czas używana w różnych konstrukcjach radiowych Texasa typu SoC gdzie potrzebny jest przewidywalny i do bólu bezbłędne uP. Polecam zapoznanie się z 8051 np. w scalaku cc2510 zmienicie zdanie na temat "starego 8 bitowca". Pisałem to już wielokrotnie ale napiszę jeszcze raz bez różnicy jaki procesorze będziesz się uczyć ważna jest znajomość algorytmów i ogólnych zasad pisania dobrego oprogramowania, procek i język to tylko narzędzia.

    0
  • #7 19 Cze 2014 16:15
    Steryd3
    Poziom 31  

    TechnoT napisał:
    Aktualnie piszę w asemblerze, moim zdaniem dobrze jest ogarnąć ten język w znacznym stopniu, a potem odrazu na c.

    Swego czasu zrobiłem dokładnie tak samo. Myślę, że nie jest to złe podejście do tematu bo znajomość assemblera pozwala zrozumieć lepiej architekturę sprzętu i później pisać w C lepsze programy. Nie mniej jednak nie ma co poświęcać zbyt wiele czasu temu językowi. Jeżeli zapoznałeś się już z jego koncepcją, napisałeś w nim program lub dwa to pora na przesiadkę na C.
    Co do bibliotek pisanych dla C w assemblerze- owszem, pisze się takie gdy zależy nam by program działał szybko i sprawnie. Czasem też stosuje się wstawki assembler-owe w programie z podobnych powodów lub pisze tzw. rozbiegówki do inicjalizacji mikrokontrolera (jak ma to miejsce w ARMach). Trzeba jednak podkreślić, że sytuacje te należą raczej do rzadkich bo język C pozwala na wiele i nie ma częstej potrzeby pisania takich wstawek które mimo swoich zalet są mało czytelne i utrudniają przenoszalność kodu między maszynami. Dodatkowo często te wstawki i biblioteki są już napisane więc nie trzeba ich pisać a tylko z nich korzystać.
    Osobiście przypominam sobie jedynie kilka sytuacji gdy używałem tak napisanych bibliotek-była to biblioteka do liczenia FFT oraz filtry cyfrowe.

    Odpowiadając na pytanie jaki model AVRa wybrać...na początek polecił bym ATmega32 lub ATmega16. Są to, moim zdaniem, dość reprezentatywne modele jak chodzi o AVRy (te różnią się między sobą właściwie tylko ilością zasobów pamięciowych-peryferia mają takie same).
    Wracając jeszcze na chwilę do naszego klasyka czyli 8051 i jego pobratyńców...jego znaczenie obecnie zmalało i jako niezależny mikrokontroler (taki który można sobie wlutować na płytę) występuje w nowych konstrukcjach niezwykle rzadko. Częściej obecnie można go zaobserwować w PSoC'kach lub IP-CORach (mówiąc prościej stanowi on wirtualny komponent). Tam ze względu na swoją prostotę i niezawodność stosuje się go w zadaniach gdzie nie wymagane są wielkie moce obliczeniowe a jedynie kontrola i sterowanie jakimiś innymi podzespołami czy procesami.

    0
  • #9 19 Cze 2014 17:12
    tmf
    Moderator Mikrokontrolery Projektowanie

    TechnoT napisał:
    Czyli z tego co wywnioskowałem, ogarnąć 8051 we wszystkich aspektach, żeby jakoś zaznajomić się dokładnie ze wszystkimi funkcjami, a następnie zająć się jakimś AVR atmega itp?


    Nauka '51 obecnie do niczego ci się nie przyda, to bardzo stara architektura, pokazująca tylko jak wiele w ciągu ostatnich 40 lat zmieniło się w projektowaniu mikrokontrolerów. Lepiej od razu zacząć od AVR (jeśli o nich myślisz). I to od C, z zahaczeniem o asembler, bo jak słusznie zauważyłeś znajomość tego języka polepsza zrozumienie architektury i czasami się przydaje - np. w czasie debugowania.
    Od jakiego AVR zacząć to już można dyskutować. IMHO warto zacząć albo od zestawu ATmega168 Xplained Mini - bo jest tani i ma na pokładzie debugger i programator lub od jednego z zestawów Xplained XMEGA lub od jednego z zestawów naszych rodzimych producentów - Leon Instruments lub Modułowo. Poza wspieraniem własnej myśli technicznej mogę powiedzieć że zestawy tych firm są naprawdę świetne. I tu masz pełny wybór - od prostych przejściówek XMEGA na stykówkę z paroma elementami, poprzez zestawy w stylu małe dev boardy typu eXtrino XL z Leon Instruments, poprzez zestawy wyspecjalizowane np. XMEGA eXplore GO awierający także koprocesor mp3. Akurat z AVR warto wchodzić w rodzinę XMEGA bo ma peryferia takie jakie spotkasz w wypasionych ARMach, co nie tylko zwiększa ich możliwości (np. DMA), ale daje ci możliwość nauki tych zaawansowanych układów, co przyda się jeśli przesiądziesz się na ARMy.

    0
  • #10 19 Cze 2014 18:09
    Steryd3
    Poziom 31  

    tmf napisał:
    Nauka '51 obecnie do niczego ci się nie przyda, to bardzo stara architektura

    Tu nie był bym taki restrykcyjny. Po pierwsze kolega TechnoT już się z nimi nieco zapoznał i nie ma co mu robić przykrości, że był to czas stracony. A po drugie wiedza ta łatwo da się przełożyć na inne architektury.
    Polecanie AVRa w sumie też powoli przestaje być "trendy". Ostatnio za kilka złotych dostałem mikrokontrolery STM32F030 które na głowę biją obliczeniowo najmocniejsze z 8- bitowych AVRów więc chyba powoli nadchodzi era mrugania diodką za pomocą 32-bitowych mikrokontrolerów. Ale to jest oczywiście kwestia dyskusyjna.

    Na marginesie pragnę też delikatnie kolegom przypomnieć, że ta leciwa 8051 miała np. lepiej rozwiązany system przerwań niż ATmegi i dopiero wprowadzenie XMEG poprawiło tę sytuację.
    Na studiach do przedmiotów o technice mikroprocesorowej "obowiązywały" nas książeczki napisane przez docenta Pogodę -było ich kilka-jedna np. traktowała o systemach przerwań (pamiętam bo był to "konik" docenta). Napisano je pewnie 20 lat temu. Możecie wierzyć lub nie -nic się nie zdezaktualizowały. Gdy czytam opisy jakichś nowych mikrokontrolerów mam wrażenie, że nic nowego poza rozwojem technologi nie powstało- wszystko opiera się o te same zasady i założenia. Oczywiście nowe peryferia komunikacyjne są implementowane, pobór mocy spada do niewiarygodnych kilkanaście lat temu poziomów ale koncepcja na działanie mikroprocesora i zarządzanie pamięcią, systemy przerwań- to wszystko już było.

    0
  • #11 19 Cze 2014 18:36
    tronics
    Poziom 36  

    Nauka 8051 ma tą zaletę, że jednocześnie uczy sprzęgania zewnętrznych peryferiów właśnie ze względu na ograniczone możliwości samego układu (mało wbudowanych peryferiów), można dołączać pamięć zewnętrzną praktycznie nawet w najtańszych rozwiązaniach (w niektórych nawet trzeba), a dodatkowo wymusza to niejako radzenie sobie z bardzo ograniczoną przestrzenią danych (SRAM) więc pozwala pisać oszczędniej, a nieraz wydajniej na nowszych architekturach. Osobiście polecam do zabawy z 89S51/2 MCU 8051 IDE - darmowe i bardzo bogate jeśli chodzi o dodatki (symulator procka, hd44780, klawiatury etc. etc.)
    Z drugiej strony zgadzam się, że na dłuższą metę nie ma co się na 8051 skupiać. Przy zetknięciu z AVR to 8051 odejdzie do lamusa. Kupujemy megę8 i mamy adc, szybszy rdzeń i więcej RAM za podobną cenę. Dodatkowo działa bez żadnych zewnętrznych komponentów (oprócz stabilizatora), wystarczy podać napięcie i startujemy z 1MHz wewnętrznego rezonatora RC po preskalerze. Kolejne arch. jak Xmega czy ARM to jeszcze większe zmiany, jeszcze więcej zintegrowanych elementów i jeszcze większa wydajność. Kwestia czy akurat tego obecnie autorowi potrzeba?

    0
  • #12 19 Cze 2014 22:19
    TechnoT
    Poziom 7  

    Dobra dzięki panowie, to narazie pobawię się 8051 żeby się nie zmarnowało, a w przyszłym miesiącu wyposażę się w jakąś atmege32 i zacznę ją programować w C, no może jeszcze 8051 w c, tylko nie wiem jakiego kompilatora do hex bym musiał użyć, znacie jakieś? Tak jeszcze na szybko spytam, jak zrobilibyście sterowanie bramy garażowej na 8051? Jaki silnik byście użyli? I sterowanie jakoś na przekaźnikach, czy jeśli dało by rade na silniku 12/24v jakiś tranzystorami? No i krańcówki podłączyć na dole i u góry tak? Jeszcze kwestia pilota, musiałbym kupić jakiś nadajnik i odbiornik z kodowanym sygnałem? Bo chyba nie chcemy, by sąsiad mi drzwi pilotem od swojego tv otwierał :D Pozdrawiam

    0
  • #13 20 Cze 2014 07:41
    Steryd3
    Poziom 31  

    Co do kompilatora do '51 ...dawno już nie jestem w temacie więc tutaj nie poradzę. Kiedyś sztandarowym kompilatorem C do 8051 był Keil (ale to nie jest darmowe narzędzie). Jeżeli chodzi o AVRy sprawa jest dość prosta-producent (Atmel) udostępnia do swoich mikrokontrolerów (nie tylko do 8-bitowych AVRów ale i AVR32 i ARM) darmowe środowisko AtmelSTUDIO. Moim zdaniem jest to najdogodniejsza obecnie opcja. Niektórzy używają też Eclipse ale mimo, że jest to świetne środowisko to jednak mój wybór pada na AtmelSTUDIO. Jego instalacja nie nastręcza żadnych problemów a to, że obecnie środowisko Atmela jest oparte o VisualStudio Microsoftu jest mocnym argumentem.

    0
  • #14 20 Cze 2014 08:54
    94075
    Użytkownik usunął konto  
  • #15 20 Cze 2014 09:20
    tronics
    Poziom 36  

    @up - Zazwyczaj dotyka to głównie samego rozmiaru kodu, gdzieś czytałem porównanie między Keil C51 i SDCC - było to ok 10% większe zużycie flasha w SDCC przy bardzo podobnym zużyciu RAM. Co do IDE to pisałem wyżej, do początkującego raczej więcej do szczęścia nic nie trzeba. Działa właśnie z SDCC (assembler jest zintegrowany, SDCC ściągamy do projektów C). A mnogość obsługiwanych architektur też nie jest wadą, co widać po GCC choćby.

    0
  • #16 20 Cze 2014 10:34
    94075
    Użytkownik usunął konto  
  • #17 20 Cze 2014 10:59
    tronics
    Poziom 36  

    Cytat:
    ale jeśli masz gcc z toolchaina do arm to raczej nie skompilujesz tym avr, mips, msp430 i odwrotnie.

    Nie widzę problemu. Co prawda topornie i pod górkę, ale w Code::Blocks wykrywa dostępne (i obsługiwane) kompilatory. Mogę w jednym IDE stworzyć projekt do ARM, AVR, PowerPC i '51 (i x86), jeśli bym się mocno uparł to wklepując dużo ręcznie zrobiłbym projekt do dowolnej arch. obsługiwanej przez kompilatory (wiec z80, h8, pic, mips etc.) skompilować nie problem. Gorzej, że takie użycie IDE ogranicza się w zasadzie wyłącznie do skompilowania.

    0
  • #18 20 Cze 2014 12:38
    tmf
    Moderator Mikrokontrolery Projektowanie

    Nie zrozumiałeś tego co pisze albertb. Z gcc masz avr-gcc, który kompilujje tylko pod AVR, arm-gcc, któy kompiluje tylko pod ARM itd. Możesz skorzystać z jednego IDE (np. Atmel Studio obsługuje AVR8, AVR32, ARM), ale musisz urzyć do kompilacji oddzielnych dla każdej architektury narzędzi.

    0