Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Nauka programowania.. dobry sprzet?

paavo91 13 Jan 2008 16:59 3770 36
Computer Controls
  • #1
    paavo91
    Level 19  
    Witam.Mam zamiar uczyc sie programowac mikrokontrolery.Mysle nad zakupem tej plytki testowej http://link_usunieto
    Czy bedzie dobra dla nooba? Mam duzo opisow(osla laczka itp) lecz one sa do innej plytki...poradze sobie?

    Przeniosłem z Programowanie Ogólne - krzychoocpp


    Proszę nie umieszczać linków do aukcji internetowych. Link skasowałem. Proszę również poprawić błędy - funkcja "Pisownia". [c_p]
  • Computer Controls
  • Helpful post
    #2
    M. S.
    Level 34  
    Płytka wygląda nieźle (poza ceną). Wątpliwość budzi możliwość zastosowania tranzystorów bipolarnych i diód świecących bo brak przy tych elementach potrzebnych rezystorów. Trzeba je będzie wmontować w przewody połączeniowe.
    Nauka programowania zaś nijak ma się do płytki testowej. No chyba, że ktoś jest na tyle nieświadomy, że musi zestawiać połączenia na podstawie szczegółowego opisu typu "połącz punkt A1 z B3". Taka nauka nie ma z kolei sensu.
  • Computer Controls
  • #3
    paavo91
    Level 19  
    Czyli jakbym się chciał czegoś nauczyć to lipa? Wogóle to jest sens sie uczyć programowania w Bascomie? Proszę o jakieś porady, bo zaczynam przygodę z elektroniką a chciałbym się czegoś nauczyć, czegoś co ma przyszłość.
  • #4
    M. S.
    Level 34  
    Źle to odczytałeś. Płytka się nada. Jednak będzie trzeba łączyć na podstawie schematu i swojej inwencji.
    Co do programowania w Bascomie to zależy. Do zastosowań hobbystycznych w zupełności wystarczy. Jeśli byś pracował jako programista, tym bardziej w zespole, a dodatkowo musiał pisać na uC różnych producentów to lipa. Bascom jest jednak najprostszy do opanowania. Nie wymaga dokładnej znajomości uC. Oczywiście znajomość Bascoma nie wyklucza możliwości poznania C i asm, lecz pokaźnie rozleniwia programistę, bo po co siedzieć w książkach jeśli można uzyskać bardzo przyzwoite efekty dużo mniejszym nakładem pracy. Najwyżej zastosuje się nieco "większy" uC, droższy zaledwie o parę złotych. Z mojego doświadczenia powiem, że gdybym miał zaczynać od "C" lub asm to bym nie zaczął. Obecnie piszę głównie w Bascomie, pomimo, że poznałem nieco "C", a i w asm popełniłem jeden prosty program.
  • #6
    paavo91
    Level 19  
    No właśnie będę miał utrudnienie, czego raczej niechce... .Czyli jak już to kupić trzeba taką płytkę jak mam w kursie oślej łączki. Hmm będe to musiał długo przemyśleć.Bo za C się wziąść to nie taka łatwa sprawa :/ Mam 16 lat dopiero i mało wiary w siebie.A że poszedłem do szkoły elektronicznej to pasuje się czymś zająć :) Tylko w tej chwili z mojej nauki nic nie wynika heh. Oby sie to zmieniło.
  • #7
    Freddie Chopin
    MCUs specialist
    przestan wiec marudzic i szukac problemow tam gdzie ich nie ma. olej plytke - zrob sobie swoja. wez pierwszy lepszy kontroler jaki ci sie podoba, podlacz na jeden port pare diodek (przez rezystory), na drugi pare przyciskow (z pullup'ami lub pulldown'ami), na trzeci port podlacz wyswietlacz LCD, dolacz do UARTa uklad MAX232 (albo 3232 jesli procek jest na mniej niz 5V) i do tego wtyczka DB-9 oraz kabelek do COMa. wyprowadz sobie piny przy okazji wszystkie gdzies tam. i masz gotowa plytke. programator da sie zlozyc - znajdziesz w sieci milijard schematow, wiec nie ma co kupowac drozyzny.

    a co do jezyka... pisanie programow na uC w basicu prowadzi w prosty sposob do calkowitego odmóżdżenia i problemow w napisaniu czegokolwiek, do czego nie ma gotowej funkcji zrob_to_czy_tamto(). bierzesz do reki datasheeta i uczysz sie ASM. piszesz sobie standardowe programiki (miganie diodkami, komunikacja RS, obsluga przyciskow, LCD) i zaczynasz kumac ASM. jak juz skumasz ASM, to mozna sie przesiasc na C, gdyz ta kolejnosc dzialan sprawi, ze zrozumiesz jak obslugiwac kontroler gdy nie ma do czegos gotowej funkcji typu zamigaj_dioda_co_sekunde(). moze byc tez tak, ze stwierdzisz ze nie ma po co sie przesiadac na C i zostaniesz przy ASM.

    anyway - nie usprawiedliwiaj sie wiekiem, bo to nie ma nic do rzeczy. do poznania wszelkich aspektow uC jest potrzebny jedynie logiczny umysl, zdolnosc kreatywnego myslenia i jezyk angielski.

    hf & gl

    0x41 0x56 0x45!!
  • #8
    paavo91
    Level 19  
    Freddie Chopin wrote:
    przestan wiec marudzic i szukac problemow tam gdzie ich nie ma. olej plytke - zrob sobie swoja. wez pierwszy lepszy kontroler jaki ci sie podoba, podlacz na jeden port pare diodek (przez rezystory), na drugi pare przyciskow (z pullup'ami lub pulldown'ami), na trzeci port podlacz wyswietlacz LCD, dolacz do UARTa uklad MAX232 (albo 3232 jesli procek jest na mniej niz 5V) i do tego wtyczka DB-9 oraz kabelek do COMa. wyprowadz sobie piny przy okazji wszystkie gdzies tam. i masz gotowa plytke. programator da sie zlozyc - znajdziesz w sieci milijard schematow, wiec nie ma co kupowac drozyzny.



    Strasznie prosto to powiedziałeś...aż wydaje mi się że to zbyt proste.Niby mam opisy z oślej łączki ale twoj słowa podepnij tu i tam nie rozjaśniają mi za bardzo :/ Nie masz jakiegoś ciekawego opisu krok po kroku zrobienie tej płytki + ćwiczenia?
  • Helpful post
    #9
    Freddie Chopin
    MCUs specialist
    nie ma takiego opisu [; musisz w necie znalezc schemat takiej plytki prototypowej (na dowolny procesor, zasada jest taka sama), to zobaczysz jak to wyglada. mysle ze znajdziesz takie opisy na stronie microchip'a (producent prockow PIC oraz dsPIC) - oni raczej wszystkie kiekawe schematy udostepniaja. zerknij o co chodzi i zaprojektuj swoja plytke - to na prawde nie jest problem.

    albo zrob wersje minimalistyczna. na plytce daj tylko procka, wejscie na programator, zasilanie i kwarc, wszystkie porty procka wyprowadz na goldpinach. bedziesz sobie podpinal co ci potrzeba. czasem jednak mozna sie z tym pogubic, zalezy czy ktos lubi pajaki, czy raczej gotowe plytki.

    zajrzyj tez na strone www.mos.pwr.wroc.pl - na stronie naszego kola naukowego znajdziesz schemat kompletnej i niezle rozbudowanej makiety dla procesorow MSP430, AVR i C51 (oraz ponoc tez i ARM) - jesli zdecydujesz sie tylko na jedna rodzine, to mozna go bardzo uproscic. mozna z niego tez wywalic to co nie bedzie ci potrzebne i makieta gotowa.

    nikt nie mowil, ze to prostsze niz kupienie, jednak na pewno mozna sie przy tym czegos nauczyc.

    0x41 0x56 0x45!!
  • #10
    paavo91
    Level 19  
    Wielkie dzięki za twój wysiłek, ale z tego co czytam to jestem jeszcze za głupi na to i chyba sie nie wezme za to :/ Zawsze uczyłem się w szkole i widocznie do mnie trzeba łopatą po koleji :/ Może kiedyś...
  • #12
    paavo91
    Level 19  
    Ale co ja moge zrobić?? Jeśli nie będe miał wytłumaczone od a do z to nic nie zrobie.W oślej łączce jest ładnie tłumaczone ale od strony programowania a od technicznej to za wiele nie wyniiose.Chyba będzie mi potrzebna dobra książka..
  • Helpful post
    #13
    User removed account
    User removed account  
  • #14
    M. S.
    Level 34  
    Twój kolega z pierwszej klasy elektronika zaczął programowanie uC w sierpniu ubiegłego roku z niewielką moją pomocą. Dziś ładuje do procka prawie 16k programu (Ja jeszcze ATMEGI16 nie użyłem ani razu). Ma na koncie przedwzmacniacz z procesorem dźwięku na I²C z rozbudowanym menu, termometrem zegarem, sterowaniem pilotem i Bóg wie z czym jeszcze. Programowanie jednak to nie wszystko. Trzeba opanować wykonywanie sprzętu - płytki, lutowanie, elementy wzmacniające sygnały z wyjść uC itp. To wszystko da się zrobić w domu. Części zaś dostępne są w internecie. Pomimo, że mam sklep elektroniczny "za rogiem" to i tak kupuję w necie bo taniej. Na pocieszenie powiem, że elektronika cyfrowa sprzętowo jest dużo prostsza niż analogowa. To forum jest kopalnią wiedzy. Jest jeszcze goglownica. Jak nie podołasz z "C" to zacznij od Bascoma (książka i pomoc do tego programu jest po polsku). Lepsze programowanie w Bascomie niż żadne. Twój kolega podołał. Tobie też się uda. Ja zobaczysz co to za świat to dalsza nauka (C, asm) będzie cię cieszyć coraz bardziej. DO ROBOTY!
    Na początek goggle wypluło coś takiego http://www.cnc.info.pl/viewtopic.php?t=2953
  • #15
    Freddie Chopin
    MCUs specialist
    a ten kolega programuje w bascomie? bo jesli tak, to by tlumaczylo te 16kb kodu. jesli zas taki soft wyszedl mu w C, to znaczy ze jakis kijowy kompilator. sorry, ale 16kB kodu na cos takiego to jest przesada....

    0x41 0x56 0x45!!
  • #16
    M. S.
    Level 34  
    Kolego. Pisałem takie same programy w C i w Bascomie. Kod w C stanowił 70 - 80% objętości wygenerowanej przez Bascoma. Superwydajność "C" to podania i legendy.
    Pierwsze moje próby programowania mikroprocesorów sięgają czasów Z80, 8080 itp. Barierą nie do pokonania dla mnie był asm pomimo, że miałem wtedy do dyspozycji kilka książek i za sobą kilka lat budowania elektroniki analogowej. Jeszcze po 30 latach pamiętam jaka jest mentalność młodego elektronika. Ma działać po uruchomieniu układ zmontowany błędnie bo w pośpiechu. Niech kolega zatem zacznie od najprostszych metod dających szybko dobry efekt. Inaczej rzuci tym wszystkim w cholerę. Moim zdaniem zaczynanie od rejestrów uC kiedy ledwo jest w stanie sklecić główną myśl programu położy na łopatki każdego młodego człowieka.
  • #17
    paavo91
    Level 19  
    M.S. "(książka i pomoc do tego programu jest po polsku). Mówisz o tej książce co kolega wyżej??? I czy w tej książce znajdę dobre info jak zbudować orientacyjnie płytkę?
  • #18
    Freddie Chopin
    MCUs specialist
    moze i superwydajnosc C to legenda na jakies stare konstrukcje, teraz jednak po prostu bez C i asm nie ma sie co brac za to, bo ktora firma robi cos w basicu? hobbystycznie to mozna sobie pisac w czym sie chce, ale hobby moze sie przerodzic w przyszly zawod - lepiej wiec pisac w czyms co jest lepsze - a C po prostu JEST lepsze, bo 99% nowych uC jest pod nie optymalizowane i jest FIZYCZNA NIEMOZLIWOSCIA aby basic byl tam rownie wydajny. pomijam juz fakt, ze basic nie jest dostepny na wszystkie platformy sprzetowe - moze do 8-bitow wystarcza, ale poprosze o przyklad 16b procka, ktorego jest sens programowac w basicu, nie mowiac juz o 32bitowych, dsp albo tego typu kosmosach.

    zauwaz, ze dla 10kB programu, twoje 70-80% przeklada sie na kod w basicu o objetosci conajmniej 13kB, przy czym objetosc kodu przeklada sie w sposob BEZPOSREDNI na wydajnosc - program taki jest wolniejszy o CONAJMNIEJ 30%. czego ty sie spodziewales pod terminem 'superwydajnosc'? ze program bedzie zajmowac 5% i wykonywac sie 100x szybciej? 30% skoku mocy to jest BARDZO DUZO. doloz teraz do tego optymalizacje kodu pod platforme i mozesz z tych 30% zrobic spokojnie 50% jak nie wiecej... teraz zoptymalizuj sobie to pod basic... gl & hf

    lecmy dalej - co to za zabawa mikrokontrolerami, skoro nie zamierzasz sie wglebiac w jego wnetrze i nie interesuje cie jak cos dziala? to rownie dobrze mozna sie ograniczyc do portu LPT w kompie i jakiejs aplikacji graficznej, ktora ustawia jakis tam stan na ktoryms tam pinie. jak ktos tytuluje sie fanem motoryzacji, to sluszne jest zalozenie, ze wie jak dziala skrzynia biegow, sprzeglo, silnik, gaznik, turbosprezarka. czy wiec mozna nazwac pisanie w basicu przy uzyciu gotowych procedur do wszystkiego co sie da - 'hobbistycznym zajmowaniem sie uC'?

    C jest prosty
    kropka
    trzeba sie go tylko nauczyc

    (asm jest jeszcze prostszy [; )

    0x41 0x56 0x45!!
  • #19
    M. S.
    Level 34  
    Jeśli zdecydujesz się na Bascoma to jest książka "Programowanie mikrokontrolerów AVR w języku BASCOM" Marcina Wiazani. Znajdziesz tam wszystko co początkującemu przydać się może. Jest schemat prostego programatora, schematy podłączenia podstawowych elementów do uC. Książka omawia w miarę nowoczesny mikrokontroler ATMEGA8 - najrozsądniejszy (również cenowo) do rozpoczynania nauki. Jest też schemat rozbudowanej płytki testowej. Na początek nie jest taka potrzebna. Naucz się wykonywać płytki we własnym zakresie bo to cię nie ominie (patrz link wyżej) a zrobisz sobie taką jak będziesz potrzebował. Płytki testowe nie są dozgonne. Na początek wystarczy płytka z uC, którego końcówki są wyprowadzone na goldpiny i stabilizatorem napięcia. I tak zaczniesz od migania diodami i od wyświetlania różnych rzeczy na LCD. Jednym zdaniem lepiej zainwestować w książkę niż w płytkę.

    P. S. Fredi. Zgadzam się z tobą. Oczywiście masz rację. Jest tylko małe ale. W pierwszej klasie szkoły podstawowej nie uczą dzieci rozwiązywania równań różniczkowych i dodawania na palcach liczb zespolonych. Jeśli nasz młody kolega zostanie rasowym programistą, to na pewno do tego wszystkiego dojdzie. Jeśli nie, to mam nadzieję, że słowo mikrokontroler nie będzie mu obce. Zważyć trzeba też fakt, że bardzo dobry elektronik nie musi być super programistą, a super programista super elektronikiem. Nie ma natomiast obecnie elektroniki bez komputerów i komputerów bez elektroniki. Osobiście bardzo lubię układy radiowe, co dla wielu elektroników jest nie do przejścia. Mikrokontroler jest z reguły dla mnie jednym z mniej istotnych bloków tego radia. Po co miałbym do tego dłubać program w asm skoro w kilka chwil piszę prosty program, który po czasie jest dla mnie tak samo czytelny i mogę go bez problemu udoskonalić.
  • Helpful post
    #20
    rusala
    Level 22  
    C jest naprawde proste a nawet prostsze pod pewnymi wzgledami od BASICa (w postaci chocby BASCOMa). Od 2 lat jestem prezesem kola naukowego (do tego jeszcze nawiaze) a od 10 czytuje EdW wiec mialem stycznosc z BASCOMem i powiem szczerze do tej pory nie kumam niektorych programow w nim napisanych bo to skladanie klockow, i czasem nie jest dla mnie intuicyjne co te klocki robia a w C wszystko jest jasne i klarowne. Jak sie jest poczatkujacym to nie trzeba odrazu pisac niskopoziomowych funckcji w C tylko mozna uzyc jakis gotowych, ktorych mozna znalesc pelno w necie i to na kazda mozliwa platforme. BASCOM natomiast oferuje tylko 2 platformy a i miedzy nimi nie jest calkowicie przenoszalny. Do tego jest wolniejszy i wiecej zajmuje no nie da sie temu zaprzeczyc. Jezeli zbierze sie odpowiedni zasob funkcji (i wiedzy o nich) w C to mozemy sobie rownie latwo i szybko stworzyc program w C co w BASCOMie a do tego bedzie on w wiekszosci przypadkow wydajniejszy. Kilku ludzi w moim kole pisalo w BASCOMie ale teraz przesiedli sie na C bo zrozumieli, ze to jest przyszlosciowe, wszystkim nowym rowniez odradzam BASICa i radze, zeby pisali w C, nie musza odrazu rzucac sie naassemblera, ktorego osobiscie sam zadko stosuje.

    Do C jest tez duzo (wiecej) ksiazek pod AVRy z samego BTC sa przynajmniej 3 rozne. W EdW jest rowniez pelny kurs oprogramowywania AVRow w C. Ja bym proponowal ATmege 16 lub 162 na poczatek bo maja wieksze mozliwosci niz 8 a o cenie wogole niema co tu mowic bo wszystkie wymienione kosztuja ponizej 10 PLN.
  • #21
    paavo91
    Level 19  
    Heh... to teraz mnie już zgasiło . Niby Bascom prosty można sobie zacząć a C znów sie naucze dobrych nawyków.Hmmm w sumie to być nie być elektronikiem można umieć C zawsze się przyda. Z koleji można przyłożyć się bardziej do Bascoma. Teraz już zwariowałem :P
  • #22
    Freddie Chopin
    MCUs specialist
    to jest wybor jak miedzy nauka jezyka angielskiego a chinskiego - w koncu umiac chinski dogadasz sie z miliardem ludzi... olej tego nieszczesnego bascoma i skoro tak czy siak musisz sie nauczyc kazdego z nich od podstaw, to lepiej sie nauczyc C. w koncu musi byc jakis powod, dla ktorego w szkolach i na uczelniach uczy sie C, a nie basica (oczywiscie powody mozna wymieniac w nieskonczonosc, ale wystarczy argument powyzej, - kod jest 20-30% mniejszy). czytelnosc kodu w dowolnym jezyku zalezy tylko i wylacznie od programisty.

    0x41 0x56 0x45!!
  • #23
    pixel7
    Level 22  
    Moja przygoda z procesorami rozpoczęła się niecały rok temu.
    Mam już trochę lat (żona , syn...)
    Zacząłem pisać w Bascom - lekko łatwo i przyjemnie.

    Mam kilka pytań do "zaawansowanych programistów":

    Kto rozpoczynający naukę interesuje się wielkością kodu??
    Komu zależy na rewelacyjnej strukturze kodu?
    Komu brakuje jakiś skomplikowanych procedur?

    Zastanówcie się poważnie! Układy po prostu mają działać - bo chyba to jest głowny cel budowy jakiegoś urządzenia.

    Obecnie jestem w stanie napisać prawie każdy program a te których nie moge przy pomocy bascoma są zupełnie nieistotne do zastosowań typowo "domowych".

    Zbudowałem już kilkanaście najróżniejszych urządzeń, sterowników, alarmów - dział jak należy a w mniemaniu docelowych użytkowników są rewelacyjne!

    Po prostu zadaj sobie pytanie - co chcę osiągnąć?

    jeśli to ma być przygoda i świetna zabawa - BASCOM,
    jeśli zaawansowane tworzenie i praca zawodowa - C, ASM

    Pozdrawiam.


    ps. Wszystkie projekty tworzę sam od podstaw - od programatora po płytki testowe - pierwsze były na tekturkach!!
  • Helpful post
    #24
    Ch.M.
    Level 27  
    Zaczyna się wychwalanie gruszki nad pietruszki...
    Zaawansowane projekty pochłona tyle samo czasu w każdych z tych języków a proste to wiadomo ze w Bascomie.
    Owszem można coś zrobić, można coś zrobić dobrze, można coś zrobić lepiej: Bascom, C/C++, ASM
    Pozdrawiam
  • #25
    Freddie Chopin
    MCUs specialist
    dochodze do wniosku, ze wszyscy wychwalacze bascoma chyba nie wiedza co to jest C... w czym on jest taki wolniejszy od tego bascoma przy tworzeniu aplikacji... przeciez do robienia PROSTYCH aplikacji o jakich tu mowicie, nie trzeba znac ZADNYCH zaawansowanych konstrukcji w C typu wskazniki, referencje, dynamiczne zmienne i tym podobne pierdoly. dwie petle (for, while), trzy instrukcje warunkowe (if, else, case/switch), kilka operatorow (+=, *=, &=, itd.) no i tyle - mozna jechac. podstawy tego UNIWERSALNEGO jezyka, ktory przyda sie przy KAZDYM programowaniu (zarowno fizycznie, jako najpowszechniejsze narzedzie, jak i teoretycznie, jako tak zwany jedyne_sluszny_sposob_myslenia, czyli podchodzenie do sprawy w sposob logiczny i przejrzysty) mozna opanowac w kilka godzin poswiecone na pierwszy lepszy kurs programowania znaleziony na necie. korzysci ze znajomsci C sa nie do przecenienia. przy uzyciu C zaprogramuje sie WSZYSTKO, KAZDY istniejacy kontroler, kazdy procesor DSP, komputer PC. do tego php jest praktycznie KOPIA C jesli chodzi o skladnie, ktora ma ograniczone mozliwosci. uczac sie wiec C uczymy sie tak naprawde programowac KAZDA elektronike jaka istnieje, a do tego programy na PC oraz skrypty serwerowe www. powtorze to raz jeszcze - podstawy tego jezyka, to jest kilka godzin... mozna zaczac na kompie od programow konsolowych ktore cos tam wyswietlaja, potem cos tam licza itd. robicie z tego INTUICYJNEGO i PROSTEGO jezyka jakiegos wielce skomplikowanego i trudnego do opanowania, nielogicznego i zabugowanego potwora...

    pytania - kto rozpoczynajacy nauke interesuje sie wielkoscia kodu: nikt, ale jak juz zacznie sie tym interesowac, to nie bedzie sie musial uczyc od nowa, tylko dalej bedzie uzywal C, jesli wybral dobrze (albo ASM, jesli wybral lepiej [; )
    - komu zalezy na rewelacyjnej strukturze kodu? - to jakis zart? kazdemu powinno zalezec na przejrzystej, logicznej i uporzadkowanej strukturze kodu. jesli robi syf w programach, albo ma to w ogole gdzies, to znaczy ze jest pierdola, a nie programista... czy jak robisz plytki drukowane, to nie zalezy ci na tym, aby byly male, zgrabne, ladne i proste w wykonaniu? przeciez to takie nieistotne, w koncu wazne zeby dzialalo... to po co w ogole plytki - w pajaku tez dziala... do czasu... tak samo jak do czasu dziala technika pisania kodu jak popadnie. pewnego dnia przyjdzie jednak taki moment, ze dana osoba zgubi sie we wlasnym kodzie i to bedize juz koniec tego kodu. z tego (i jedynie z tego) powodu nalezy wyrabiac w sobie nawyk pisania w sposob uporzadkowany i czytelny, nie mowiac juz o takich ogolnie przyjetych zasadach, aby pisac komentarze (najlepiej po angielsku, bo to uniwersalny jezyk tej branzy, nigdy nie wiadomo kto potem uzyje tego kodu).

    - komu brakuje jakich skomplikowanych procedur? - patrzac na 99% pytan w tym dziale dochodze do wniosku, ze 100% ludzi uzywajacym bascoma i 50% ludzi uzywajacych C tego brakuje, bo jak nie ma osobnej instrukcji do odpalenia modulu preyferyjnego w postaci start_peryferyjne_costam, to juz nie da rady tego obsluzyc poprzez rejestry. skutki bezsensownego podejscia do sprawy.

    Ch.M. projekty pochlona moze i tyle samo CZASU programisty, ale na pewno nie CZASU procesora i jego PAMIECI oraz jego ZASILANIU.

    0x41 0x56 0x45!!
  • #26
    Ch.M.
    Level 27  
    O zasilaniu czy sprawności kodu nie pisałem z prostych przyczyn:
    Piszącego w Bascom interesuje tylko to by program działał a nie ciągnął mało prądu (zasilanie bateryjne i Bascom? Nigdy nie słyszałem by ktoś to łączył)
    Piszącego w Bascom interesuje by progam działał niezależnie czy musi użyć procka z 16kb czy 32kb
    Ja wolę by program mieścił się w 1kb czy 2kb bo to i tak jest już dużo jak dla ASM a resztę miejsca przeznacze jako pamięć do zapisania trzcionek na wyświetlacz LCD albo innych obrazków i pierdół, które by obsłużyć pod Bascomem to trzeba wcześniej dorzucić 1MB RAM/ROM czy też FLASH
    Dla piszącego w ASM wystarcza wewnętrzny RC 1MHz a pod Baskomem trzeba odpalić na 16MHz + rezonator zegarkowy albo 16MHz oscylator kwarcowy by tak samo precyzyjnie liczyć.
    O przejrzystości kodu nie wspomne bo przy kilkuset linijkach już ciężko przypomnieć sobie gdzie co jest mimo komentarzy. Można oczywiście pisać samymi wywołaniami podprogramów, ale po co tworzyć podprogram o długości 2 słów i ret?
    Wszystko to niuanse a po zsumowaniu wychodz, że kiepski kod w ASM zajmie i tak tyle samo miejsca jak kod w C i dużo mniej niż w Bascom. Dobry kod w ASM zajmie 30% mniej niz w C (albo jeszcze mniej) i kilka razy mniej niz w Bascom.

    Dla porównania niech ktoś napisze w Bascom obliczenie (x-102,4)*29/32
    Dodam, że dane X to wynik pomiaru ADC 10bit a obliczenia prowadzę z maxymalną rozdzielczością a wynik dzielenia dodatkowo zaokrąglam w górę, w zależności od wskaźnika zapożyczenia C. Kod zajmuje 35 linii czyli na pewno nie więcej niż 50 cykli
    Jestem Ciekaw czy ilość cykli przy kompilacji Bascomem będzie już liczbą 4 cyfrową :)

    Code:
    lsl R16               ; przesuwam cała liczbę 16bit w lewo (mnożę przez dwa, aby nie stracic najmłodszych bitów)
    
       rol R17   
       lsl R16               ; przesuwam cała liczbę 16bit w lewo (mnożę przez dwa, aby nie stracic najmłodszych bitów)
       rol R17
       lsl R16               ; przesuwam cała liczbę 16bit w lewo (mnożę przez dwa, aby nie stracic najmłodszych bitów)
       rol R17
       lsl R16               ; przesuwam cała liczbę 16bit w lewo (mnożę przez dwa, aby nie stracic najmłodszych bitów)
       rol R17
       lsl R16               ; przesuwam cała liczbę 16bit w lewo (mnożę przez dwa, aby nie stracic najmłodszych bitów)
       rol R17

    ; =================== konwersja tego co zmierzono na czujniku 0-1bar =====================================
    ADC_CisA_do_mmHg:; ============ program przeliczania na mmHg (x-102,4)*29/32 =============================
             ; ponieważ pomnozylismy juz liczbę przez 2^5=32 to musimy teraz odjąć od niej 102,4*32=0x0CCD
       ldi R16, 0xCD
       ldi R17, 0x0C
       sub R0, R16
       sbc R1, R17
       ; jesli wynik ujemny to skaczemy na koniec:
       brmi wpisz_zero
       ; teraz musimy tę liczbe pomniejszyc o jej 3/32, czyli najpierw dzielimy przez 2^4 i uzyskujemy 2/32
       movw R16, R0   ; kopiujemy do R17:R16 R1:R0
       lsr R17         ; dzielę przez dwa
       ror R16         
       lsr R17         ; dzielę przez dwa
       ror R16         
       lsr R17         ; dzielę przez dwa
       ror R16         
       lsr R17         ; dzielę przez dwa
       ror R16
       ; odejmujemy 2/32
       sub R0, R16
       sbc R1, R17
       lsr R17         ; dzielę przez dwa
       ror R16
       ; odejmuje 1/32
       sub R0, R16
       sbc R1, R17
       ; na koniec spowrotem przesuwamy liczbę 5 razy w prawo by uzyskać prawidłowy wynik.
       lsr R1               ; dzielę przez dwa
       ror R0
       lsr R1               ; dzielę przez dwa
       ror R0
       lsr R1               ; dzielę przez dwa
       ror R0
       lsr R1               ; dzielę przez dwa
       ror R0
       lsr R1               ; dzielę przez dwa
       ror R0
       brcs zaokraglij_w_gore
    ret   
       zaokraglij_w_gore:      ; zaokrąglam w górę
       ldi R16, 1
       ldi R17, 0
       add R0, R16
       adc R1, R17
    ret      ; Teraz w R1:0 powinna być wartość z zakresu 0-750 [mmHg] zaokrąglana w góre
  • #28
    Freddie Chopin
    MCUs specialist
    staramy sie tu mlodego adepta skierowac na wlasciwa sciezke, a nie da sie inaczej jak wskoczy tu jakis bascomowiec i zacznie gadac, ze przeciez w bascomie wszystko jest takie proste latwe i przyjemne... bez argumentow o przewadze C nad bascomem, nie ma mozliwosci przekonac kogos do wyboru wlasnie tego jezyka [;

    0x41 0x56 0x45!!
  • #29
    pixel7
    Level 22  
    Do kogo adresujecie swoje wypowiedzi?
    Do siebie, czy do chłopaka który zastanawia się jak rozpocząć przygodę z mikroprocesorami?

    Opisałem swoje przemyślenia i to co na ten temat uważam.
    Nie mam zamiaru umniejszać roli C i innych języków!

    -> Freddie

    Jak zacząłeś swoją przygode?
    Od razu C czy inne języki były wcześniej?
    Ja w 1983 dostałem ZX Spectrum a tam był BASIC.
    Nie było internetu, nawet giełdy na Grzybowskiej. Programy pisałem żywcem z "Bajtka" - bascom jest na tyle podoby że po tych latach usiadłem napisałem, skompilowałem - poszło! W każdym razie pozwól młodemu człowiekowi SAMEMU wyciągać wnioski a nie wpajać że wiesz najlepiej!
    Napiszy czy zajmujesz się programowaniem zawodowo?
    Czy to daje Ci i Twojej rodzinie utrzymanie?
    Ja traktuje to jako hobby i nie mam czasu ani chęci by uczyć się innych języków. Poza tym zamykanie się w jakiś określonych ramach nie prowadzi do rozwoju umysłu...

    A na marginesie:
    Mojej żony nie interesuje pobór prądu, długość kodu (chyba nawet nie wie co to kod...), tym bardziej jakich procedur użyłem...
    A jednak korzysta z urządzeń, które skonstruowałem i jest zadowolona!


    Pozdrawiam.
  • #30
    Freddie Chopin
    MCUs specialist
    zmartwie cie, poniewaz nie moge odpowiedziec na twojego posta w sposob, ktory by cie satysfakcjonowal [; 1983 roku mnie na swiecie jeszcze nie bylo, moim pierwszym komputerem byl C-64 do ktorego rowniez przepisywalem programy z bajtka (klasyk), nastepnie w LO nauczylem sie Pascala, potem C na studiach, samodzielnie php troche, ostatnio konsumuje assemblera. nie pracuje tez, ani nie zarabiam na rodzine - jestem obecnie na 5 roku elektroniki. zawodowo nie zajmuje sie programowaniem elektroniki ... jeszcze - na razie jest to jedynie element edukacji, hobby i przyszly zawod (DSP/uC/asm)

    co do samego meritum - wypowiedzi sa adresowane w przestrzen otaczajaca nas, w tym do zalozyciela tematu. nikt tez nie zabrania mu wybrac samodzielnie. pozatym - co to za argument, ze nie pozwalamy mu wybrac samodzielnie? a ty wybrales samodzielnie architekture swojego komputera, samodzielnie go konstruujac, czy kupiles gotowy? nie zebym byl jakims super doswiadczonym gosciem z kilkunastoma latami stazu zawodowego na karku, niemniej jednak uwazam, ze nalezy korzystac w poczatkowej fazie z doswiadczen innych.

    pozdrawiam rowniez.

    0x41 0x56 0x45!!