Jak zacząć swoją p rzygodę z mikroprocesorami

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Doktor_UC
-
Posty: 13
Rejestracja: 07 cze 2010, 3:39
Lokalizacja: Częstochowa

Post autor: Doktor_UC » 18 lip 2010, 20:02

Pikczu pisze:Reszta bascoma się brzydzi.
Podoba mi się to stwierdzenie. Rozumiem też argumenty keruseykaryu. Moje zdanie jest takie, że programując mikrokontrolery obowiązkowa jest znajomość asemblera i przynajmniej jednego, a najlepiej dwóch języków programowania wyższego poziomu. Asembler - wiadomo - pełna kontrola nad kodem i maksymalna znajomość architektury mikrokontrolera. A jeśli chodzi o języki wyższego poziomu, to nie ma kompilatora w pełni zaspokajającego potrzeby wszystkich programistów. Co do Bascoma, to nie wiedziałem, że przyjaźń z nim to wstydliwa znajomość :) Świetnie została w nim zrobiona obsługa wyświetlaczy LCD, i chcąc szybko obsłużyć układ z wyświetlaczem używam najczęściej Bascoma lub kompilatorów mikroElektroniki. Połączenie Bascomu z asemblerem pozwala optymalizować dowolnie skomplikowane programy.

Prawda jest taka, że często pogardzamy wszystkim, co najprostsze. Mam tego przykład na uczelni, gdzie trwa śmiertelny bój zwolenników Windowsa i Linuxa. Moi studenci dopiero wtedy czują się spełnieni, gdy mogą mi powiedzieć, że nie wiedzą jak przekopiować plik w Windows, ale w Linux - owszem.

Aha, i gratulacje dla kolegi lutownik za zgrabne poprowadzenie dyskusji, by wywołać lawinę postów :)

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 18 lip 2010, 20:09

to i ja się udzielę ponownie. choć nie znam innych języków poza bascomem a i ten nie jest u mnie perfekt, to zgodzić się z Tobą kolego keruseykaryu nie mogę odnośnie co najmniej dwóch rzeczy (choć mogę się mylić):
keruseykaryu pisze:znam kogoś, kogo nauczyłem pisać w BASCOM. Teraz jak ma coś napisać to tylko BASCOM i robi to szybko. Ale trafił Mu się projekt, gdzie program trzeba było upchnąć do ATtiny13 i co? Program w BASCOM się nie zmieścił. 106% zajętości procesora
są takie dyrektywy jak:

Kod: Zaznacz cały

$hwstack
$swstack
$framesize
chyba pomoże w tym aby mimo wszystko zmieścić te 6% ponad normę ? dodatkowo jest funkcja OPTIMIZE CODE.
keruseykaryu pisze:Niestety na dłuższą metę BASCOM nie jest zbyt przyszłościowy. Po dwóch latach zobaczysz wszystkie ograniczenia.
widziałem projekty mocno zaawansowane pisane w bascomie. fakt, czasem były wspomagane asemblerem, ale jakoś trzeba sobie radzić. przykładem dość zaawansowanego programu może być projekt zasilacza kolegi Pikczu, umieszczony gdzieś tu na stronach forum w dziale DIY. więc i bardziej złożone projekty też da się wykonać.
jak wyżej napisał kayron:
kayron pisze:musisz sobie odpowiedzieć na kilka pytań.
1. Co na tym chcesz robić i za jaka cenę
jeśli mają to być "proste" programy to bascom AVR jest wręcz idealny. a przecież mozna nauczyć się i jednego i drugiego. nikt nikomu nie broni.

ten soft zaświeca i gasi diodę ?
keruseykaryu pisze:Kod:
    .include "tn13def.inc"

    .cseg
    .org  0x00

    ldi   r16, RAMEND
    out   SPL, r16

    ldi   r16, 0x01
    out   DDRB, r16
    out   PORTB, r16

main:
    in    r17, PORTB
    eor   r17, r16
    out   PORTB, r17

    ldi   r24, 0x80
    ldi   r25, 0xFF
    rcall wait

    rjmp  main

;----------------------
wait:
    push  r25
wait_1l:
    dec   r25
    brne  wait_1l
    pop   r25
    dec   r24
    brne  wait
    ret
to i tak jest dość długi. sam wiesz że w bascom będzie znacznie krótszy.

oczywiście nie weź tego do siebie kolego keruseykaryu, nie odbierz jako atak na Twoją szanowną osobę, ani jako zażarłą obronę bascoma. chcę tylko pokazać że bascom to jednak dobre narzędzie za niewielkie (jeśli nie zerowe) pieniądze.

keruseykaryu

Post autor: keruseykaryu » 18 lip 2010, 20:45

matrix pisze:są takie dyrektywy jak:
$hwstack
$swstack
$framesize
chyba pomoże w tym aby mimo wszystko zmieścić te 6% ponad normę ? dodatkowo jest funkcja OPTIMIZE CODE.
Te dyrektywy nie pomogą na braki pamięci FLASH. Pomogą tylko na braki w pamięci SRAM, ale z tym sobie kolega poradził. A optymalizacja? Kiedyś widziałem rezultaty z tłumaczeniem i to nie byle kogo. Tylko gdzie to było? :roll:
matrix pisze:widziałem projekty mocno zaawansowane pisane w bascomie. fakt, czasem były wspomagane asemblerem, ale jakoś trzeba sobie radzić. przykładem dość zaawansowanego programu może być projekt zasilacza kolegi Pikczu, umieszczony gdzieś tu na stronach forum w dziale DIY. więc i bardziej złożone projekty też da się wykonać.
Nie neguję tego, że się da. Pewnie, że się da. Ale czasem trzeba coś co lepiej wykorzysta pamięć Flash. Proste.
Powiem w sekrecie, że znana polska firma dostała urządzenie, którego pracą steruje kod napisany w BASCOM. I sprzedaje je za 1366PLN sztuka.
to i tak jest dość długi. sam wiesz że w bascom będzie znacznie krótszy.
W zapisie człowiekostrawnym owszem. Ale te kilkanaście rozkazów generuje 38 bajtów kodu wynikowego. BASCOM nie ma szans. :D
matrix pisze:chcę tylko pokazać że bascom to jednak dobre narzędzie za niewielkie (jeśli nie zerowe) pieniądze.
Zerowe do 4 kilo i amatorskiego wykorzystania. Potem niestety 400PLN musisz "wykartkować".

Awatar użytkownika
Pikczu
Użytkownik
Posty: 754
Rejestracja: 18 lip 2005, 18:33
Lokalizacja: Dublin
Kontakt:

Post autor: Pikczu » 18 lip 2010, 21:06

Po części sie zgadzam z keruseykaryu z punktu widzenia profesionalnego, zarobkowego.
Zbyt długi kod genreuje nie potrzebne koszty konstrukcyjne itd.
Jednak popatrzmy na to od strony hobby, bascom jest idealnym rozwiązaniem.
A jeśli już braknie mi miejsca to otwieram szufladke i wyciagam większy procesor.
Lepszy taki działający w bascomie niż nie działający w ASM.

Edit:
Z tym starchem też masz rację już 3 lata sobie obiecuje że w końcu się za C wezmę i dalej nic.
Przerażają mnie te nawiasy w nawiasach z nawiasami w nawiasach.


:oops: Ps. mój kod w dziale DIY nie jest niczym wielkim bez przesady to takie niedzielno-wieczorne wypociny i proszę go wogóle nie brac pod uwage w tym temacie

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 18 lip 2010, 21:20

keruseykaryu pisze:Zerowe do 4 kilo i amatorskiego wykorzystania. Potem niestety 400PLN musisz "wykartkować".
no jest jeszcze chyba wersja light do 8k kodu za trochę ponad 100zeta?
keruseykaryu pisze:te kilkanaście rozkazów generuje 38 bajtów kodu wynikowego. BASCOM nie ma szans.
to jest oczywiste że bascom zabiera sporo pamięci, na pewno więcej niż inne języki, ale przecież mamy takie dyrektywy jak:

Kod: Zaznacz cały

$include
w każdym razie nieważne. ja na chwilę obecną nie zamierzam przesiadać się na coś innego, bo bascom jest dla mnie idealny, ale nie mówię definitywne NIE. może kiedyś.
kiedyś mówiłem że nie będę jeździł samochodem z automatyczną skrzynią biegów, ani samochodem kombi i co?
dziś mam kombi w automacie i bardzo się cieszę.
pozdrawiam uczestników jakże miłej dyskusji.

Doktor_UC
-
Posty: 13
Rejestracja: 07 cze 2010, 3:39
Lokalizacja: Częstochowa

Post autor: Doktor_UC » 19 lip 2010, 5:00

Warto odróżnić język od kompilatora. Bo przecież nie jest tak, że BASIC narzuca jakieś ograniczenia, które sprawiają, że programy wynikowe są wielkie. Chodzi o to, że kompilator Bascom generuje kod mało oszczędnie, ale przecież w każdej chwili możemy być zaskoczeni nową odsłoną tego kompilatora, produkującą programy prawie tak małe, jak asemblerowe, i wtedy wszyscy zostaną zmuszeni do przesiadki na Bascom. Przykładem tego, że BASIC może być oszczędny, jest mikroBasic PRO for AVR. W ogóle chciałbym zareklamować kompilatory mikroelektroniki, które są maksymalnie przyjazne i oszczędne, a mam wrażenie, że tylko ja w Polsce ich używam.

To duża liczba użytkowników podnosi atrakcyjność danego języka programowania, a w tym punkcie Bascom jest mocny.

keruseykaryu

Post autor: keruseykaryu » 19 lip 2010, 5:58

Pikczu pisze:A jeśli już braknie mi miejsca to otwieram szufladke i wyciagam większy procesor.
A jeśli kod nie mieści się nawet w ATmega2561? Szufladka nie pomoże... :D
matrix pisze:to jest oczywiste że bascom zabiera sporo pamięci, na pewno więcej niż inne języki, ale przecież mamy takie dyrektywy jak:
$include
To już drugi nie trafiony strzał. Masz jeszcze jedną szansę.
Doktor_UC pisze:Bo przecież nie jest tak, że BASIC narzuca jakieś ograniczenia, które sprawiają, że programy wynikowe są wielkie.
Przykład? Niestety w BASCOM można wykonać tylko jedną operację matematyczną w przypisaniu. Nie można napisać C = A + B * D. A to nie jedyny kwiatek.
Doktor_UC pisze:ale przecież w każdej chwili możemy być zaskoczeni nową odsłoną tego kompilatora,
W dosłownym tego słowa znaczeniu. Cichaczem pojawiła się wersja 1.12.0.0, ale tylko dla posiadaczy licencji.

Doktor_UC
-
Posty: 13
Rejestracja: 07 cze 2010, 3:39
Lokalizacja: Częstochowa

Post autor: Doktor_UC » 19 lip 2010, 6:21

keruseykaryu pisze:Przykład? Niestety w BASCOM można wykonać tylko jedną operację matematyczną w przypisaniu. Nie można napisać C = A + B * D. A to nie jedyny kwiatek.
A to właśnie jest przykład na bliskość języka BASIC do asemblera. Poprzez to chociażby kompilatory oparte na BASICU powinny tworzyć kod jak najbardziej oszczędny. I niektóre robią, jak chociażby do znudzenia powtarzany przeze mnie kompilator mikroElektroniki.

Jednym zdaniem: można atakować Bascom, ale nie warto :)

Awatar użytkownika
haterkmp
Użytkownik
Posty: 652
Rejestracja: 08 sie 2008, 11:47
Lokalizacja: Wałbrzych

Post autor: haterkmp » 19 lip 2010, 7:50

ja jak na razie też boję się C i z bascoma nie zamierzam rezygnować. natomiast zainteresowała mnie propozycja Doktora z tą mikroElektroniką. muszę sobie to obejrzeć :).
ponadto nie ma się co kłócić które święta są lepsze... dla jednych bascom to spełnienie programistycznych marzeń a dla niektórych istnieje tylko C. osobiście twierdzę, że hobbystycznie też nie mamy profesjonalnych labów do lutowania płytek falą ani laserowych frezarek do płyt czołowych... w prostych urządzeniach bascom się sprawdza a dostępność i przystępna cena AVR`ów z pamięcią 4kB przemawia do korzystania właśnie z darmowego bascoma. przecież większość z nas używa także eagla w wersji darmowej gdzie płytka ma ograniczone rozmiary...

Doktor_UC
-
Posty: 13
Rejestracja: 07 cze 2010, 3:39
Lokalizacja: Częstochowa

Post autor: Doktor_UC » 19 lip 2010, 8:28

Chłopcy z mikroElektroniki wyćwiczyli się w pisaniu dobrych kompilatorów projektując je dla mikrokontrolerów PIC, gdzie lista rozkazów jest naprawdę niewielka (tylko 35 w PIC16F84A). Te przyzwyczajenia widać często w programach dla AVR. Korzystam glównie z mikroC i mikroPascala, ale i mikroBasic mogę spokojnie polecić.

Awatar użytkownika
michalstec1
Użytkownik
Posty: 202
Rejestracja: 20 kwie 2007, 13:24
Lokalizacja: Jazowsko
Kontakt:

Post autor: michalstec1 » 19 lip 2010, 10:40

Polecam kurs C na http://www.kursc.dioda.com.pl/
Sam się trochę uczę i myślę że jest on naprawdę prosto napisany (nawet ja coś zrozumiałem :)).

Awatar użytkownika
lutownik
Użytkownik
Posty: 517
Rejestracja: 01 paź 2006, 12:37
Lokalizacja: z planety Zi Emia
Kontakt:

Post autor: lutownik » 19 lip 2010, 11:13

Na samym początku przepraszam że się nie odzywałem, ale miałem weekend b. pracowity i nie miałem nawet czasu by tu zaglądać.

Odpowiadając na pytania kolegi Kayron'a To chciałbym programować raczej hobbystycznie. Mam na myśli programowanie jakichś prostych układów typu zegarki z bajerami, mierniki na wyświetlaczu LCD, jakieś mrygałki, wyświetlacze VFD (np. IW18) i wiele innych prostszych ale również użytecznych układów elektronicznych których nie opłaca sie robić na zwykłych układach elektronicznych. Jeśli chodzi o ceny, to wiadomo. Na początek mogę się trochę szarpnąć na układy startowe, ale potem ceny układów żeby nie były jakieś kosmicznie drogie tylko odpowiadały kieszonkowemu 18 letniego ucznia technikum elektronicznego. Z tymi układami za 100zł czy 400zł to już nie przesadzajmy. Ja nie mam ojca potentata hotelowego, bym wyrzucać tyle kasy na zabawę :grin: Studia???? Raczej nie, choć nie mówię że na bank kończę na 4 klasie technikum.

Tak naprawdę trochę się gubię w tym wszystkim. Te wszelkie rodziny procków, pamięci, ARM, AVR itp. itd. Mógłby mi ktoś to rozjaśnić?? Kiedyś pamiętam że w którymś wydaniu EDW bodajże do 5 lat wstecz, był sobie taki plakacik, na którym były rozpisane jakieś rodziny procesorów, parametry itp. Z tego co jeszcze kojarzę to był to plakat na niebieskim tle.

Co do mrygałki na jednym LEDzie, to sam kolega widzi że kod który napisał zajmuje o wiele więcej czasu i wysiłku niż ten napisany w bascomie. Wiem bo napisałem takie coś w bascomie 8051. Ciekaw jestem ile trzeba by napisać program w C czy asemblerze któy będzię wyświetlał naprzemian na wyświetlaczu LCD napisy "wrzuć" "monetę" :lol:

Zaczyna mnie ciągnąć jakoś do tych PIC'ów, Tylko nie wiem dlaczego, być może przez tą nazwę :mrgreen:

Awatar użytkownika
haterkmp
Użytkownik
Posty: 652
Rejestracja: 08 sie 2008, 11:47
Lokalizacja: Wałbrzych

Post autor: haterkmp » 19 lip 2010, 11:38

ja powiem tak - AVR`y są tanie, ogromne wsparcie, taniuśkie programatory i w naszym kraju bardzo popularne (na pewno łatwiej je dostać niż PIC`e). ogromna ilość różnych for internetowych na których znajdziesz odpowiedzi na pytania. ja bym polecał początek właśnie na AVR. potem możesz kombinować z innymi.

Awatar użytkownika
lutownik
Użytkownik
Posty: 517
Rejestracja: 01 paź 2006, 12:37
Lokalizacja: z planety Zi Emia
Kontakt:

Post autor: lutownik » 19 lip 2010, 11:52

AVR czyli wszytkie ATmegi, ATtinny itd??

Warto wywalić kasę na takie coś na początek?? http://www.kamami.pl/index.php?productID=40423 czy lepiej kupić programator ISP i bawić się na płytce stykowej, albo w pająku?

kaliska5
Użytkownik
Posty: 348
Rejestracja: 01 maja 2008, 8:24
Lokalizacja: z nienacka
Kontakt:

Post autor: kaliska5 » 19 lip 2010, 12:27

Za 300zł(50zł książka) to można samemu zrobić potężna płytkę z bardzo rozbudowanymi peryferiami.Sam zacząłem naukę od kupna dużej uniwersalnej płytki i dokładałem co mi potrzeba było teraz mam spora płytkę ze sporymi peryferiami (RTC,LCD,COM->USB itd).Programator STK200 kupiłem na allegro za 12zł+przesyłka.

ODPOWIEDZ