• Witamy w największym polskim serwisie internetowym poświęconym w całości zagadnieniom samodzielnej budowy nagłośnienia.
    Dzięki DIYaudio.pl poznasz zagadnienia samodzielnej budowy nagłośnienia od podszewki oraz będziesz mógł dyskutować o DIY audio do woli.

    Artykuły z dawnego portalu zostały przeniesione do sekcji forum na samym dole.

Początek zabawy z programowaniem uC

Rejestracja
Kwi 28, 2005
Postów
118
Reakcji
0
Lokalizacja
Łódź
Witam
Na IV semestrze zaczyna mi się przedmiot - Technika mikroprocesorowa, po rozmowie ze starszymi rocznikami na tych zajęciach będziemy uczyli się programować uC.
Osoby które nie miały z nimi wcześniej do czynienia (czyli ja) mają problemy z zaliczeniem laborek.
Jako, że znajomość programowania nie pójdzie w przyszłości na marne to chcę samemu zacząć uczyć się programować.
Co potrzebuję do programowania?
Na dobrą sprawę wystarczy programator (koniecznie pod USB), podstawka pod uC, oczywiście język w którym napisze się program (troche się bawiłem w Bascomie, z kumplem zrobiliśmy sterowanie PWM silnika DC) i "kompilator", który przetłumaczy program na język niskiego poziomu.
Na alledrogo znalazłem chyba ciekawą ofertę http://www.allegro.pl/item917899570_plytka_testowa_atmega8_168_32_usb_lcd_bascom_prog.html

W skład zestawu wchodzi programator, wyświetlacz, płytka testowa z 3 wyjściami + przykładowe programy, poradniki itp.

Co myślicie o takim zestawie? Chciałbym nauczyć się programować nie tylko żeby nie czuć się "głupim" na zajęciach, ale też nauczyć się czegoś dla siebie.

Na forum jest kilka osób które z programowaniem są za pan brat, liczę na porady jak się "wkręcić" w programowanie mikro kontrolerów.
Pozdrawiam
 
Ja na Twoim miejscu olałbym płytki na ATmegach 8 i poszedł w większą rodzinę ATmega 16/32/644

Ta płytka co podałeś jest dość słaba...żeby nie powiedzieć, że bardzo słaba.
Ja posiadam ZL3AVR ale ta jest droga. Za ok 150zł można kupić coś takiego http://www.tme.eu/html/PL/zestawy-u...ontrolerami-atmega16/ramka_4737_PL_pelny.html i to jest już fajny zestaw. Plusem płytki startowej jest szybki start (jak sama nazwa mówi) oraz pełna konfigurowalność. Minusem jest to, że nie łączysz sprzętu więc nie nabierasz wprawy w projektowaniu urządzeń mikroprocesorowych.

Programator proponuje taki: http://www.allegro.pl/item917721146_programator_isp_avr_usb_stk500_idc_najtaniej.html
Mam podobny, działa na Viscie i na 7 bez problemu. Konfiguruje się tylko makefile projektu.

Co do języka to raczej nie skupiałbym się na Bascomie, lecz poszedł w C, czyli pakiet WinAVR. No chyba, że chcesz assemblera, wtedy najbardziej panuje się nad zasobami mikrokontrolera a dobrze napisane programy są najbardziej wydajne.
Link do WinAVR
http://sourceforge.net/projects/winavr/files/
(w zestawie jest Programers Notepad, z którego wprost można skompilować projekt i wgrać go po ISP)

Jak już zaczynasz to warto poczytać o fusebitach, tutaj masz świetną stronę do ich wyliczania: http://www.engbedded.com/fusecalc/

Warto też zaznajomić się z książką http://www.lideria.pl/sklep/opis?nr=34286
jest dostępna na sieci w PDF'ie. Świetnie pomaga zrozumieć sprzęt zaszyty w mikrontrolerze, opisuje rejestry konfigurujące dla danych peryferiów a także ma przykłady w C (niestety niektóre używane makra są już nie aktualne, WinAVR dość mocno ewoluuje).

Ja generalnie zaczynałem od programatora, płytki stykowej i heja...ale co się namęczyłem czasami to moje...przez to wiele się nauczyłem.

Mogę jeszcze dodać, że bez studiowania datasheetow się nie obejdzie. Poza tym internet i strony AVR Freaks oraz http://winavr.scienceprog.com/avr-gcc-tutorial/ i http://winavr.scienceprog.com/example-avr-projects/

Na początek chyba wystarczy...

Projekt, który robiłem dla mojej Panny na ten sam przedmiot na PŁ:
http://strefa51.net/diy/widmowy_diyaudio.jpg
http://strefa51.net/diy/projekt_sprawko.doc

Pozdro

[ Dodano: 2010-02-21, 21:28 ]
dodam jeszcze dwie fajne stronki:
http://www.hobby.abxyz.bplaced.net/index.php?pid=4&cid=1
http://avr.elektroda.eu/?q=node/8
 
Na początek płytka stykowa + jakiś mały procesor ( polecam sklep LISPOL na allegro, tanio i wszytko kupisz). Ale to plątanina kabli, ale umiejętność łączenia i układania elementów też się nabywa. Potem sobie coś wytrawisz.

Bascoma sobie odpuść na rzecz C. Ja tam nie jestem jakimś dobry programistą i muszę nieraz długo posiedzieć ale C to uniwersalny język i umiejętności pisania programów zaowocują może na innych frontach.

No i kolega LuSzTi podał 2 najlepsze stronki polskie z Tutorialami do nauki.
 
LuSzTi napisał:
Ja generalnie zaczynałem od programatora, płytki stykowej i heja...ale co się namęczyłem czasami to moje...przez to wiele się nauczyłem.
To wydaje się dobrą opcją na początek, jak coś popsuję to nie narobię dużych szkód :D

Bascom jest dość prosty ale niestety zajmuje dużo pamięci, ale faktycznie C jest chyba najbardziej uniwersalny (w C++ trochę programowałem na I semestrze i nawet coś tam wychodziło).
W Assemblera raczej nie chcę się pchać, bo ze mnie informatyk jak z koziej d**y trąba :D

Co do programatora to ma śmigać pod Win7 x86 na laptopie, czyli http://www.allegro.pl/item917721146_programator_isp_avr_usb_stk500_idc_najtaniej.html powinno spełnić moje oczekiwania.
 
Programator zgodny z stk masz w tme za 50 zł netto wiec cena porównywalna z allegro a przy okazji zamówisz sobie kilka innych rzeczy.

http://www.tme.eu/pl/katalog/index.phtml#cleanParameters=1&search=stk500&bf_szukaj=+

Dobrym roziwązaniem ale drogim jest kupno stk500, mam ten kit w pracy i powiem, że jest kapitalny. Tylko podłączać preryferia i uruchamiać, masz tam wszystko diody, przyciski , kupe wyjść, RS232 do komunikacji z uC z kompem wiec uruchmisz w zasadzie każdy projekt. Niestety ta cena ..

Co do języka to bascom jest bardzo dobry na początek, jest kapitalny polski help dzieki któremu mozna sie wszystkiego nauczyć. Odnosząc to do C to help w zasadzie nieistnieje, trzeba grzebać po necie i patrzeć "jak to zrobili inni" co niewątpliwie utrudnia start. Język C jest niby uniwersalny ale każda platforma ma swoje unikalne cechy których trzeba się nauczyć, robiłem programy w AVR studio, IAR pod MSP430, IAR pod ARMy atmelowskie, Code Composer Studio pod MSP430 i za każdym razem spotykałem się z pewnymi róznicami które nie pozwalały czasem na "kopiuj - wklej - bo to przecież C". Niemniej podstawa języka jest ta sama i to jest zaleta.

Wadą bascoma jest to, że uzależnia od swojej prostoty i niestety im dłuzej go używasz tym boleśniejsze będzie przejście na C. Niektóre rzeczy w bascomie są banalnie proste a trudniejsze w C ale niektóre któe sa proste w C są prawie niewykonalne w bascomie, chyba, że się nim super płynnie posługujesz.

Pośrednim rozwiazaniem może być kompilator Code Vision, też C ale jest w nim sporo automatów podobnych do bascoma ułatwiających pisanie programu dzięki wbudowanym modułom konfiguracji peryferii procka.
 
Jesli nie masz zamiaru rozwijac sie w strone uC i zalezy Ci na szybkim i sprawnym wykonaniu ukladu na uC z np RC5, LCD czy czyms innym to wybierz BASCOMa.
Szybko sprawnie sobie zaprogramujesz cos takiego.
Do tego BASCOM posiada swietny manual, ktory chyba nawet jest po polsku.

C jest 'tata' jezykow, ten jezyk znajdziesz wszedzie.
Poziom trudnosci jest juz o wiele wyzszy niz w BASCOMie, programujac w C musisz znac dokladnie uC, jego rejestry etc. nie wspominajac o skladni samego jezyka, ktora nie jest taka lopatologiczna jak w BASICu.
Oczywiscie pod AVRy istnieje avr-gcc czyli darmowy kompilator GNU GCC +dodatki pod AVRki.

Taki jak Yoshi napisal, kazdy jezyk ma swoje zalety i wady.
Wiele ludzi pisze ze BASCOM ssie bo zapewne nie uzywala tego jezyka na dluzsza mete, tak naprawde da sie naprawde duzo, wygodnie i szybko cos zrobic.
Fakt, nie ma co ukrywac ze skladnia BASICa jest nieco 'ułomna' oraz ze BASCOM zjada troche zasobow, jest to zwiazne z tym ze wystepuje w nim wiele funkcji 'gotowcow' robiacych za Ciebie wszystko, nie musisz sie martwic o jakies czasy, zbocza, przerwania nic a nic. (np obsluga RC5)

Zgodze sie rowniez z:
Wadą bascoma jest to, że uzależnia od swojej prostoty i niestety im dłuzej go używasz tym boleśniejsze będzie przejście na C.

To prawda, niestety czasem BASCOM zmusza nas do wykonania 'ukladu pod siebie' co oczywiscie pozniej owocuje latwizna w jego programowaniu, oczywiscie ma to swoje wady.

Ja sam hobbystycznie klepie w BASOMie bo mnie wiecej nie potrzeba, aczkolwiek nie ukrywam ze teraz wzialem sie za pisanie pod AVR w C poniewaz projekt, ktory chce wykonac bylby kosmiczny do zrezalizowania w BASCOM.

Jesli chcesz cos na poczatek z C i AVR to polecam to:
http://temp.tomekk.org/avr_c.pdf

Druknij i poczytaj.

/edit/
Co do plytki testowej, ja osobiscie uzywam tylko podstawki + gniazda ARK3, mam po prostu wyprowadzenie kazdej nozki na ARK, robie uklad na pajaka i cisne z koksem.
Programator to jak jak pisza, jakis sgodny z stk200/300 badz stk500. Kazdy soft to obsluguje.
 
Ja też bardzo długo klepałem w bascomie ale odpadłem w momencie gdy przyszło napisać sterownik graficznego LCD na ks107, "prawie" działało ale prawie jak wiadomo robi wileką różnicę.

Do prostszych zadań bascom jest świetny, bardzo prosta i przyjemna składnia, ma sporo gotowych rozwiązań o których nie trzeba mieć pojęcia a można z nich korzystać np jak softwarowy dodatkowy USART czy USART buforowany który w C trzeba robić manualnie co już nie jest takie proste dla początkującego a w bascomie to jest jedno polecenie w linii definicji USARTa. Podobnie z LCD, typowy 1..4 liniowy odpalasz w bascomie w ciągu chwili definiując go w opcjach projektu.

C jest o wiele lepszy do pracy na tablicach, wskaźnikach, na operacjach bitowych, gożej np operuje się moim zdaniem na eepromie czy magistrali SPI ale to moje osobiste zdanie.
Osobiście sugerowałbym spróbować w C, jeżeli "nie da rady" to wtedy siegnąć po bascoma ;). Do bascoma był kapitalny kurs Piotra Góreckiego w EdW.
 
Dowiedziałem się, że będziemy pisać w assemblerze, uC to Atmel 8051 o ile się nie mylę.
Myślę, że jednak na początek wezmę jakiś tani programator pod USB i płytkę stykową.

Co do języków to tak jak pisałem, robiłem trochę w C++ i Visual Basicu, ale to było pisanie prostych programów. Dzisiaj dowiaduje się, że będziemy w assemblerze pisali, który ponoć do łatwego języka nie należy ale pozwala na poznanie sposobu "myślenia" uC.
 
luke666, no to niezła wtopa z tym assemblerem. Nie wiem po co w ogóle uczą takich zabytków na zabytkowym sprzęcie. Można się rozwodzić nad wyższością assemblera ale prawda jest taka, że nikt w tym nie robi bo to jest pętla na szyje, u nas w firmie zrobili w assemblerze program bo gdy powstawało urzadzenie wiekszy procek mogący pomieścić ten sam program pisany w C sporo kosztował. Teraz ten procek kosztuje grosze a problem o nazwie assembler sie ciągnie dalej bo jakakolwiek zmiana w programie nie jest taka prosta.

No trudno będziecie sie meczyć całe zajęcia zeby zrobic jakiś banalny program :lol:
 
Yoshi_80 napisał:
Nie wiem po co w ogóle uczą takich zabytków na zabytkowym sprzęcie.
Takie jest polskie szkolnictwo, uczyć się na starych sprzętach (na pracowni z metrologii korzystamy nie raz ze sprzętu który ma 60lat!! Tak, 60lat!!), starymi metodami, nie iść z techniką do przodu. Z jednej strony nie jestem na elektronice tylko elektrotechnice, więc kwestię programowania uC ograniczają do znajomości podstaw, ale będę chciał się nauczyć programować we własnym zakresie bo mam w głowie kilka projektów które bez ciężko by zrealizować bez użycia uC.

Na co zwrócić uwagę przy kupnie programatora?

KLIK 1
KLIK 2
KLIK 3
KLIK 4
KLIK 5

Jedne z nich są wyposażone w zworki, inne nie?
Wszystkie te programatory powinny współpracować z Atmelem 8051?

Podstawki to w swoim zakresie sobie porobię.
 
Uczą i bardzo dobrze że uczą. Rdzeń 8051 ma dalej mocną pozycje na rynku jest wbudowywany w różne układy SoC, (np. uC z USB firmy Cypress) chętnie wykorzystywany jest w układach FPGA w miękkiej postaci :)
To że asembler jest trudny to mit, wymaga jednak dużej wiedzy jak uP działa i dlatego katują nim na studiach.
Ja miałem na studiach najpierw zabytkowy 8085/86 potem 8051 później Z80, Motorole, PIC, AVR i wreszcie ARM.
Asembler, C, czy BASCOM to tylko narzędzia i tak należy na to patrzeć i odpowiednio dobrać do sytuacji. Jeśli ma to być proste urządzenie np. sterowanie drabinką w przedwzmacniaczu to BASCOM będzie wystarczający i głupotą było by pisanie w asemblerze. Wiadomo też ze nikt nie będzie pisał jakiejś dużej aplikacji w asemblerze bo to kompletnie nie ekonomiczne i za nim skończy to może się okazać że urządzenie jest już przestarzałe :) Ale czasami asembler jest niezastąpiony np. gdy trzeba spełnić jakieś rygorystyczne zależności czasowe w jakimś fragmencie programu.
Warto znać wszystkie 3 języki a nie ograniczać się tylko do "jedynie słusznej" drogi.

Na początek możesz kupić płytkę ZL3AVR
http://www.kamami.pl/index.php?ukey=product&productID=16469
i samemu zamontować tylko to co Ci będzie potrzebne.
BTC ma też książkę o programowaniu AVR w asemblerze są tam przykładowe aplikacje od bardzo prostych po szybką transformatę furiera.
W EdW był też dobry kurs C dla AVR.
 
Powrót
Góra