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

Jakiego języka prog. najlepiej jest się nauczyć (PIC itp.)?

29 Sty 2004 18:56 11509 75
  • Poziom 21  
    Witam. Elektroniką zajmuje się już dłuższą chwilę, ale coraz częściej zachodzi potrzeba zrobienia jakiegoś układu na procesorkach, więc chcialbym sie nauczyć pisać proste programy np. pod PIC-a, a że jestem w tym "zielony' to mam do Was kilka pytan z tym związanych:

    - jaki język programowania najlepiej wybrać
    - jakis dobry kurs danego języka
    - programy w których mógłbym pisać kod źródłowy

    Z góry dzięki i pozdrawiam.
  • PCBway
  • Poziom 14  
    Coż, prawdziwi ... artyści używają asm lub C. W Polsce najpopularniejsze rodziny procków to są PIC, C51 oraz AVR. Jeżeli chodzi o asm, to generalnie jest dostępny bezpłatnie na stronach www producentów procków. W przypadku C sprawa się komplikuje, bo to są narzędzia komercyjne. Dla początkujących jest jeszcze coś co nazywa się BASCOM. Ponoć ma się ukazać jakiś cykl o BASCOM na łamach EP lub czegoś podobnego.
    Ja nie inwestowałam w poznanie BASCOM i tak chyba pozostanie.

    Programu, w których pisze się programy to są zintegowane środowiska lub proste programy. Jest tego pełno w internecie.
  • Poziom 33  
    Proponuję użyć opcji "szukaj" (o ile działa, bo ostatnio bywają małe problemy), podobnych postów było już mnóstwo.
    BTW to i do PICów już się BASCOM dobrał???
    Zdecydowanie polecam zacząć od asemblera, kiedy już go nieco poznasz to przesiądziesz się na co tylko zechcesz np. C albo zostaniesz przy asm. Żaden język (nawet C, choć sam w nim piszę bo jest znacznie bardziej wydajny) nie pozwala tak dobrze poznać sprzętu jak asembler, a dobra znajomość sprzętu to podstawowy warunek tworzenia dobrych programów.
  • PCBway
  • Poziom 14  
    Sorry, rozpędziłam się, faktycznie nie słyszałam o BASCOM do PIC.
    Tdv zgadzam się z tobą w kwesti (cytuję):
    "Zdecydowanie polecam zacząć od asemblera, kiedy już go nieco poznasz to przesiądziesz się na co tylko zechcesz np. C albo zostaniesz przy asm. Żaden język (nawet C, choć sam w nim piszę bo jest znacznie bardziej wydajny) nie pozwala tak dobrze poznać sprzętu jak asembler, a dobra znajomość sprzętu to podstawowy warunek tworzenia dobrych programów."
    Przybij za to piątkę do ... ekranu.
  • Poziom 42  
    calinka napisał:
    Sorry, rozpędziłam się, faktycznie nie słyszałam o BASCOM do PIC.
    Tzn bascoma jako bascoma nie ma, ale jest kilka kompilatorów basica o podobnych możliwościach (gotowe procedury do LCD, I2C itp).
    calinka napisał:
    Tdv zgadzam się z tobą w kwesti (cytuję):
    "Zdecydowanie polecam zacząć od asemblera, kiedy już go nieco poznasz to przesiądziesz się na co tylko zechcesz np. C albo zostaniesz przy asm. Żaden język (nawet C, choć sam w nim piszę bo jest znacznie bardziej wydajny) nie pozwala tak dobrze poznać sprzętu jak asembler, a dobra znajomość sprzętu to podstawowy warunek tworzenia dobrych programów."
    Przybij za to piątkę do ... ekranu.
    Ja też podpisuje się rękoma i nogami.
  • Poziom 14  
    Nic dodać, nic ująć.
  • Poziom 21  
    Nic dodać , nic ująć. Ale dlaczego nie zacząć od http://www.picbasic.org/
    ????
    Ja mam już 40 stkę na karku , ślęczałem kiedyś całymi latami nad ASM.
    aż pewnego dnia Bóg zesłał na ziemię nową łopatę. ( czyli nowe narzędzia)
    i od tamtej pory pisanie w asm poszło do historii.a ja nie męczę sie nad podzieleniem liczby 32 bitowej przez 16 bitową czy z innymi problemami takimi chociaż jak LCD. Moja rada zacznij od C lub od starego sprawdzonego Basica.
    Podana stronka zawiera kompilator do pica. Jest tak dobry, że nawet go sobie kupiłem za całe 130 funtów plus koszty wysyłki. Ale warto było.
    Dzięki niemu napisałem już zajebistą ilość programów i "Zarobiłem "
    Napisanie programu zajmuje Ci mało czasu. W ciągu kilkunastu minut można napisać dość pokaźny program, w którym możesz robić stertę rozmaitych obliczeń matematycznych, możesz posługiwać się zmiennymi 32 bitowymi, zmiennoprzecinkowymi, i masz do wyboru całą masę
    różnorodnych procedur
    Addition '+'. Adds variables and/or constants.
    Subtraction '-'. Subtracts variables and/or constants.

    Multiply '*'. Multiplies variables and/or constants.
    Multiply HIGH '**'. Returns the high 16 bits of the 16-bit multiply result.
    Multiply MIDDLE '*/'. Returns the middle 16 bits of the 16-bit multiply result.
    Divide '/'. Divides variables and/or constants.
    Modulus '//'. Returns the remainder left after dividing one value by another.

    Bitwise AND '&'. Returns the bitwise AND of two values.
    Bitwise OR '|'. Returns the bitwise OR of two values.
    Bitwise XOR '^'. Returns the bitwise XOR of two values.
    Bitwise SHIFT LEFT '<<'. Shifts the bits of a value left a specified number of places.
    Bitwise SHIFT RIGHT '>>'. Shifts the bits of a value right a specified number of places.

    ABS. Returns the absolute value of a number.
    ACOS Returns the ARC COSINE of a value in RADIANS.
    ASIN Returns the ARC SINE of a value in RADIANS.
    ATAN Returns the ARC TANGENT of a value in RADIANS.
    COS. Returns the COSINE of a value in RADIANS.
    DCD. 2 n -power decoder of a four-bit value.

    DIG. Returns the specified decimal digit of a positive value.
    LOG Returns the NATURAL LOG of a value.
    LOG10 Returns the LOG of a value.
    MAX. Returns the maximum of two numbers.
    MIN. Returns the minimum of two numbers.
    NCD. Priority encoder of a 16-bit value.
    REV. Reverses the order of the lowest bits in a value.

    SIN. Returns the SINE of a value in RADIANS.
    SQR. Returns the SQUARE ROOT of a value.
    TAN Returns the TANGENT of a value in RADIANS.
    DIV32. 15-bit x 31


    to wszystko to tylko "kropla w morzu" i jest do twojej dyspozycji.Możesz także robić wstawki w asm, masz generowany kod asm , kompilacja za pomocą mpasm.
    ale wyboru dokonasz sam
    Pozdrawiam
  • Poziom 33  
    euromatic napisał:
    Nic dodać , nic ująć. Ale dlaczego nie zacząć od http://www.picbasic.org/
    ????
    Ja mam już 40 stkę na karku , ślęczałem kiedyś całymi latami nad ASM.
    aż pewnego dnia Bóg zesłał na ziemię nową łopatę. ( czyli nowe narzędzia)
    i od tamtej pory pisanie w asm poszło do historii.a ja nie męczę się nad podzieleniem liczby 32 bitowej przez 16 bitową czy z innymi problemami takimi chociaż jak LCD. Moja rada zacznij od C lub od starego sprawdzonego Basica.
    Podana stronka zawiera kompilator do pica. Jest tak dobry, że nawet go sobie kupiłem za całe 130 funtów plus koszty wysyłki. Ale warto było.
    Dzięki niemu napisałem już zajebistą ilość programów i "Zarobiłem "
    Napisanie programu zajmuje Ci mało czasu. W ciągu kilkunastu minut można napisać dość pokaźny program, w którym możesz robić stertę rozmaitych obliczeń matematycznych, możesz posługiwać się zmiennymi 32 bitowymi, zmiennoprzecinkowymi, i masz do wyboru całą masę
    różnorodnych procedur
    Addition '+'. Adds variables and/or constants.
    Subtraction '-'. Subtracts variables and/or constants.

    Multiply '*'. Multiplies variables and/or constants.
    Multiply HIGH '**'. Returns the high 16 bits of the 16-bit multiply result.
    Multiply MIDDLE '*/'. Returns the middle 16 bits of the 16-bit multiply result.
    Divide '/'. Divides variables and/or constants.
    Modulus '//'. Returns the remainder left after dividing one value by another.

    Bitwise AND '&'. Returns the bitwise AND of two values.
    Bitwise OR '|'. Returns the bitwise OR of two values.
    Bitwise XOR '^'. Returns the bitwise XOR of two values.
    Bitwise SHIFT LEFT '<<'. Shifts the bits of a value left a specified number of places.
    Bitwise SHIFT RIGHT '>>'. Shifts the bits of a value right a specified number of places.

    ABS. Returns the absolute value of a number.
    ACOS Returns the ARC COSINE of a value in RADIANS.
    ASIN Returns the ARC SINE of a value in RADIANS.
    ATAN Returns the ARC TANGENT of a value in RADIANS.
    COS. Returns the COSINE of a value in RADIANS.
    DCD. 2 n -power decoder of a four-bit value.

    DIG. Returns the specified decimal digit of a positive value.
    LOG Returns the NATURAL LOG of a value.
    LOG10 Returns the LOG of a value.
    MAX. Returns the maximum of two numbers.
    MIN. Returns the minimum of two numbers.
    NCD. Priority encoder of a 16-bit value.
    REV. Reverses the order of the lowest bits in a value.

    SIN. Returns the SINE of a value in RADIANS.
    SQR. Returns the SQUARE ROOT of a value.
    TAN Returns the TANGENT of a value in RADIANS.
    DIV32. 15-bit x 31


    to wszystko to tylko "kropla w morzu" i jest do twojej dyspozycji.Możesz także robić wstawki w asm, masz generowany kod asm , kompilacja za pomocą mpasm.
    ale wyboru dokonasz sam
    Pozdrawiam


    No to już objaśniam dlaczego zacząć od asm. Przejrzyj może na tym forum pytania odnośnie programoania. Są to w zdecydowajen większości pytania ludzi, którzy zaczeli programowanie proców od BASCOMa. Wydaje im się, że BASCOM wystarczy bo ma wszystkei te funkcje i wszystko można prosto napisać tylko nie mają pojęcia jak działa mikrokontroler i co w nim siedzi, a co za tym idzie to ich programowanie nadaje się do .....
    Zaczynając od asemblera można poznać uC, a właściwie nie można tylko trzeba bo inaczej nic się nie osiągnie. Idąc Twoim tokiem rozumowania to w goóle po co zabierać się za programowaine, skoro szybciej i łatwiej pójśc do sklepu i kupić gotowe urządzenie - w sumie teraz można kupić prawie wszystko...
  • Poziom 21  
    To czy wogóle taka osoba będzie potrafiła dobrze pisać programy nie zależy od tego w jakim języku zaczyna lub pisze. To bzdura.... Zależy to tylko i wyłącznie od tego na ile jej zależy na tym by być "Profesionalistą"
    Jeżeli podejdzie do sprawy poważnie i nie rzuci tego w kąt po kilku niepowodzeniach, to napewno zainteresuje się możliwościami i konstrukcją mikrokontrolera.
    Samo życie ją do tego zmusi...
    Duża ilość dzieciaków która zacznie od asemblera rzuci to zajęcie po pierwszych próbach, bo jest to dla nich zatrudne. Chcą od razu napisać obsługe twardych dysków... MP3.... itd.
    a ja zaczynałem od zapalenia i zgaszenia diody led.....i jaka była to radość!!!
    Jeszcze większa była gdy zaczęła migać...
    "Kto chce to będzie dobry, niezależnie od tego w jakim języku pisze, w końcu miliony ludzi używają Basica i wielu innych środowisk"
  • Poziom 33  
    Nie zgodze się z tym. To troche tak jabyś budował dom z betonowych półfabrykatów bo łatwiej, a budowanie z cegły jest dla Ciebie za trudne, nie wiem jak Ty ale ja bym się nie wprowadził do domu wybudowanego przez takiego eksperta... Zaczynałeś od diody bo ni emiałeś innego wyjścia. Nauczyłeś się asemblera i czegoś o uC bo nie miałeś wyjścia... A teraz jest wyście bo BASCOM powstał dla tych, którym się nie chce. Tłumaczenie, że asembler jest za trudny to kiepskie tłumaczenie, tym bardziej że dzisiaj jest dostępne mnóstwo materiałów na temat uC, czego kiedyśnie było, a ludzie je jakoś opanowywali... Jeżeli się komuś nie chce, albo opanowanie uCjest za trudne dla niego, to jak już napisałem lepiej niech idzie do sklepu i kupi gotowe urządzenie. Natomiast jeżeli ktoś chce się nauczyć to zawsze niech zaczyna od asemblera, a potem w pełni świadomie może wybrać język wysokiego poziomu.
  • Poziom 21  
    Może budowanie z cegły jest dla Ciebie lepszym rozwiązaniem , dlaczego jednak najchętniej wszyscy budują z suporexu?
    Dom z cegły wymaga większego nakładu kosztów, więcej zaprawy, ma gorszą izolację i koszuje tyle , że nikt dzisiaj tego nie robi. To miniona epoka. Tak jak asembler.A mówienie , że jest się lepszym bo zna się assembler to tylko przechwałki. Idź w zawody z piszącym w C lub innym języku jak chociażby Basic a zobaczymy kto szybciej i lepiej napisze soft.
    Trzeba wykorzystywać ludzkie doświadczenia po to żeby nie zaczynać od początku. Pisząć w Basicu czy innym z "wyższego poziomu" wykorzystujesz to co inni już zrobili. A starali się jak najlepiej. Diś samochody budowane są i projektowane przez oprogramowanie ( wyższego poziomu).
    On dawno skończy, a ty będziesz dalej układał cegiełki na fundament.
    Musicie się pogodzić z tym , że asembler będzie wymierał ze wzrostem poziomu techniki mikrokontrolerów. Ciekaw jestem ile czau i ilu ludzi musiało by pisać soft aby zapełnić procesor który ma 128kB pamięci?
    Pół roku? a może dłużej...



    Ale nie gniewaj się , ja mam takie zdanie na ten temat i nic go już nie zmieni. Ty masz swoje zdanie i też pewnie nic go nie zmieni.
    Problem tkwi w tym , że ten "młody programista " chce spróbować swoich sił w tej materii. Ty podałeś mu asm, Ja podałem namiar na basic do PIC.
    teraz on niech wybierze.

    Pozdrawiam serdecznie

    Jeden chodzi do kościoła , drugi nie.
    To odróżnia ludzi od siebie bo gdyby tak nie było to było by bardzo nudno.
  • Poziom 42  
    euromatic napisał:
    dlaczego jednak najchętniej wszyscy budują z suporexu?
    Gratuluje budowania fundamentów domy z suporexu. Fundament ma być z założenia dobrze związany z gruntem, tak jak podłożem jest sprzęt. Pokaż mi jakie wsparcie ma np PIC16 dla kodu wysokiego poziomu.
  • Poziom 33  
    euromatic: ja o wozie Ty o kozie... NIe chodzi mi o to, że budowla z prefabrykatów musi być gorsza, może być lepsza ale musią ją wybodować ktoś, kto się na tym zna!!! I o poznanie sprzętu tu chodzi, a nie o bezmyśln ekorzystanie z różnej maści generatorów kodu i BASCOMa. BTW to sam programy pisze w C, ale zanim coś zaczynam robić to najpierw sobie muszę poorać manula z uC.
  • Poziom 34  
    Według mnie jest jedna prosta regóła:
    - Jeśli w gre whodzi szybkość np jeśli program musi hodzić
    błyskawicznie to polecam assembler który pozwala budowanie
    z takich 'pojedyńczych cegiełek'...
    - Jeśli zaś w gre whodzi efektywność to lepiej jest użyć języków
    wysoko-poziomowyh.. takih jak C... pozwala on używanie z takich
    jusz gotowyh 'prefabrykowanyh' elementów...
    - Jeśli ktoś hce pisać efektywny program.. który niemusi być szybki..
    a hce go pisać w assemblerze to radze puknąć sie w głowe i pomyśleć
    sobie: "Wymyślanie koła" (coś co jusz istnieje) ponieważ do tego
    służą języki takie jak C

    oczywiste jest że jeśli ktoś hce napisać w miare szybki i efektowny program to lepiej jest pisać w C używając go jako swoistego
    'rusztowania' całego kodu.. a elementy które mają największy wpływ
    na szybkość pisać w assemblerze... wontpie żeby komuś sie hciało
    kombinować np dzieleniem liczby zmiennoprzecinkowej w assemblerze..
  • Poziom 14  
    Wszyscy mają rację ;-)
    Ale żeby dobrze poznać mikrosterownik trzeba poznać jego assembler.
    Ja też czasami kożystam z BASCOMA (avr i 8051), ale i tak większość kodu jest w tedy w assemblerze,
    pomijając to, że kodu wynikowego wychodzi mniej, to łatwiej min się "myśli" w assemblerze. A ile razy trzeba się zastanawiać "co ten bascom wyprawia z tymi timerami/rejestrami/przerwaniami/itd"?
  • Poziom 21  
    Myślę , że są i tacy co czytają...Co tam.... W końcu jest to jak narazie tylko ich chobby. Lepsze to niż kopanie staruszki, czy picie browarów.
  • Poziom 27  
    ja programuję w C i w asemblerze, na AVR, PIC-ach i '51 - w zależności od nastroju, tego co mam pod ręką albo wymagań projektowych. Wszystko jest dla ludzi i każdy niech korzysta z tego, co mu bardziej pasuje, a nie na co jest moda. Osobiście nie korzystam z Bascoma, ale nie neguję jego użyteczności.
  • Poziom 17  
    do jakich mikrokontrolerow najlatwiej i najtaniej zakupic programtor?chce zaczac przygode z mikrokontrolerami i podobnie jak autor postu nie wiem od czego zaczac :roll:
  • Poziom 21  
    Procesory PIC możesz zaprogramować za pomocą programatora JDM który zawiera ok 15 popularnych elementów typu rezystor, dioda,tranzystor.
    Procesory AVR możesz zaprogramować programatorem składającym się z wtyczki, kabelka 5 żyłowego,3 rezystory , i... i to wszystko.
    Zacznij od procesorów z szeregowym programowaniem a będzie najtaniej.
    Proponuję , żebyś zabrał się za PIC,AVR,51
  • Użytkownik usunął konto  
  • Poziom 14  
    Aemblera lub C++ ale dobrego kursu sam poszukuję.
  • Poziom 34  
    Ja mam taki projekt że musze pisać 100% w asmie... chce żeby procek generował sygnał video do telewizora.. w czym musie sie trzymać dokładności 0,1us.. jak bym napisał w C albo bascomie to by powstało bagno albo wogule by niedziałało...
  • Poziom 31  
    To moze i ja sie wlacze.Wedlug mnie BASCOM jest do du.. dlatego ze do wszystkiego pisze sie biblioteki a potem siada jeden z drugim i zamiast sie troche nauczyc to wala gotowe funkcje do obslugi tego czy owego.Asembler jest z kolei niewygodny jesli chodzi o pisanie duzego projektu ale warto od niego zaczac sie uczyc z zastrzezeniem ze do pewnego momentu.I tu chyba najlepiej wziac C.Jest to C tak naprawde niskopoziomowe i pisac sobie wszystkie funkcje obslugi samemu z ta dogodnoscia ze mnozenie czy dzielenie wiekszych liczb nie doprowadza czlowieka do szalenstwa :lol:.
  • Poziom 33  
    Tdv napisał:
    Proponuję użyć opcji "szukaj" (o ile działa, bo ostatnio bywają małe problemy), podobnych postów było już mnóstwo.
    BTW to i do PICów już się BASCOM dobrał???
    Zdecydowanie polecam zacząć od asemblera, kiedy już go nieco poznasz to przesiądziesz się na co tylko zechcesz np. C albo zostaniesz przy asm. Żaden język (nawet C, choć sam w nim piszę bo jest znacznie bardziej wydajny) nie pozwala tak dobrze poznać sprzętu jak asembler, a dobra znajomość sprzętu to podstawowy warunek tworzenia dobrych programów.


    arcu, euromatic: Przeczytajcie moją wypowiedź od której zaczęła się dyskusja!!!
    Nadal twierdze, że zdecydowana większość ludzi sięgających najpierw po BASCOMa jest na tyle leniwa, że nigdy nie zjarzy do manuala procesora.

    Dopisane:
    https://www.elektroda.pl/rtvforum/topic108963.html
    Ewidentny przykład. Jakby nie miał BASCOMa to by poczytał o IIC i nie zadawałby elementarnych pytań.
  • Poziom 22  
    Panowie ,dyskusja jest akademicka. Przypomina spór o wyższości Świąt Bożego Narodzenia nad Świętami Wielkiej Nocy. Proponuję takie podejście- Odpowiednie narzędzie ,do konkretnego zadania. Mogę to rozwinąć ,ale myślę że się rozumiemy.Całe szczęście że narzędzi jest tyle że można wybierać...
  • Poziom 21  
    Pewnie, że jest to dyskusja czysto akademicka. Dawniej spory rozwiązywano za pomocą pistoletów lub broni białej.
    Zamiast wmawiania innym że to jest lepsze od tamtego , proponuję żeby asemblerowcy i baskomowicze ( czy raczej basicowcy) staneli do pojedynku i w określonym czasie napisali jakieś oprogramowanie według założeń kogoś spoza sporu.(np. redakcja AVT, żeby wykluczyć ewentualne oszustwo). Oprogramowanie miałoby wycisnąć z procesora wszystko co tylko możliwe, bez użycia specjalizowanych układów dodatkowych, ze względu na koszty i trudności zaopatrzeniowe.
    Projekt musi być na poziomie, powinien wykorzystywać większość zasobów procesora. "Wysoka komisja" oceni napisane oprogramowanie.
    Może to być ktoś z redakcji AVT, ewentualnie mogą to być czytelnicy EP.
    proponuję czas na wykonanie tego zadania "24h"
    (żartowałem) myślę że 7 dni wystarczy......
    W pojedynku udział wziąść mogą wszyscy zainteresowani, w wieku od 7 do 77 lat.
    Pozdrawiam
  • Poziom 13  
    Żeby czegokolwiek się nauczyć (tym bardziej dobrze) trzeba w to włożyć dużo energii. Dlatego jeśli ktoś jest dociekliwy to dobrze programować mikrokontrolery nauczy się zarówno zaczynając od języka wysokiego poziomu jak i od asemblera. Z językami wysokiego poziomu faktycznie jest ten problem, że można się bardzo szybko rozleniwić (przecież dużo już zostało wymyślone), natomiast do asemblera można się bardzo szybko zrazić , tym bardziej jeśli bierze się za niego osoba niecierpliwa.
    Ja osobiście preferuję podwójną robotę przy nauce, czyli pisz w języku wysokiego poziomu by przez sukcesy brnąć dalej w coraz to bardziej zawiłe problemy (chociaż dla niektórych niepowodzenia są jeszcze lepszą motywacją - ci niech zaczynają od asemblera), ale jednocześnie ucz się asemblera przez analizę kodu wynikowego w asemblerze (np. pliki *.lst generowane przez avrgcc) i, w miarę możliwości, własnoręczne optymalizowanie takiego kodu.
    Ostatecznie moje zdanie jest takie: bez znajomości asemblera można zrobić dużo (oczywiście znając język wyższego poziomu), ale ze znajomością asemblera da się już zrobić niemal wszystko.