logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Początkujący po Tutorialu: Zestaw podstawowych pytań.

Pocketer 28 Lis 2006 17:01 2823 5
  • #1 3272643
    Pocketer
    Poziom 10  
    Posty: 17
    Witam

    Przeczytałem tutorial ze strony :http://www.patron.net.pl/artykuly/AVR_tutorial.htm i wykonanałem przykłady. Ten tutorial dotyczy programowania w języku C.

    I mam pare pytań co do języków programowania, a mianowicie:
    Czy każdy język stwarza te same możliwości programiście? Bo patrzyłem na przykłady z innych stron i tam tylko Bascom i assembler stwarza możliwości np. sterowania wyświetlaczem LCD. I czy programator mikrokontroler->LPT (bezpośrednie połączenie bez dodatkowych części) będzie użyteczny także dla kompilatorów języka Bascom? Czy też trzeba będzie zbudować nowy, specjalny dla tego języka? Jaki programator/kompilator języka Bascom ( w formie programu na komputer) będzie działał z tym programatorem ( dla przypomnienia: bezpośrednie połączenie uC->LPT )?
    Czy instnieje taki sam tutorial dotyczący języka Bascom?
    Który język jest bardziej intuicyjny ( przypomina tekst po angielsku)? Podobno bascom jest dobry dla poczatkujących.
    Jaką książkę kupić by nauczyła na przykładach (tak jak powyższy tutorial) programowania w języku C lub Bascom?

    A co się tyczy języka C:
    Powiedzmy, że podłączam 2 silniczki do pinów mikrokontrolera (każdy z osobna) i chce to co podłączyłem włączyć [ ustawiam piny jako wyjścia i a potem ustawiam na stan wysoki (przepuszczam prąd)]. Później chciałbym by tylko 1 silniczek był włączony. Jak te instrukcje napisać w języku C (czy się da) by nie były wykonywane jednocześnie, a wykonywanie jednej by następowało po drugiej? jaka instrukcja (jeżeli taka istnieje w języku C) określa czas wykonywania instrukcji np. podaj prąd na lewy silniczek przez 4 sek?

    Pozdrawiam
  • #2 3272822
    Konto nie istnieje
    Konto nie istnieje  
  • #3 3272852
    leoha
    Poziom 17  
    Posty: 173
    Pomógł: 18
    Ocena: 8
    Pocketer napisał:

    Czy każdy język stwarza te same możliwości programiście?

    Ciezko jednoznacznie odpowiedziec na pytanie. Jest tak ze w jezyku nizszego poziomu da sie osiagnac to samo co w jezyku wyzszego poziomu, odwrotnie niekoniecznie. Z tego by wynikalo ze asm stwarza najwieksze mozliwosci dla programisty, choc mi zawsze wystarczal c ze wstawkami asmowymi.
    Pocketer napisał:

    I czy programator mikrokontroler->LPT (bezpośrednie połączenie bez dodatkowych części) będzie użyteczny także dla kompilatorów języka Bascom? Czy też trzeba będzie zbudować nowy, specjalny dla tego języka? Jaki programator/kompilator języka Bascom ( w formie programu na komputer) będzie działał z tym programatorem ( dla przypomnienia: bezpośrednie połączenie uC->LPT )?

    programator nie ma nic wspolnego z jezykiem w jakim piszesz, programator i jezyk sa niezalezne od siebie, tym samym programatorem zaprogramujesz plik stworzony dowolnym kompilatorem.

    Pocketer napisał:

    Czy instnieje taki sam tutorial dotyczący języka Bascom?

    www.google.com

    Pocketer napisał:

    Który język jest bardziej intuicyjny ( przypomina tekst po angielsku)?

    zalezy od indywidaulnych preferencji piszacego i jego doswiadczenia rowniez. Dla mnie c jest najbardziej intuicyjny ale to kwestia przyzwyczajenia

    Pocketer napisał:

    Podobno bascom jest dobry dla poczatkujących.
    Jaką książkę kupić by nauczyła na przykładach (tak jak powyższy tutorial) programowania w języku C lub Bascom?

    bylo o tym juz kilka watkow poszukaj na elektrodzie. Co do jezyka bascom to wg mnie nie warto kupowac ksiazki, jest tak prosty ze sie go z "help'a" czy dokumentacji nauczysz.

    Pocketer napisał:

    A co się tyczy języka C:
    Powiedzmy, że podłączam 2 silniczki do pinów mikrokontrolera (każdy z osobna) i chce to co podłączyłem włączyć [ ustawiam piny jako wyjścia i a potem ustawiam na stan wysoki (przepuszczam prąd)]. Później chciałbym by tylko 1 silniczek był włączony. Jak te instrukcje napisać w języku C (czy się da) by nie były wykonywane jednocześnie, a wykonywanie jednej by następowało po drugiej? jaka instrukcja (jeżeli taka istnieje w języku C) określa czas wykonywania instrukcji np. podaj prąd na lewy silniczek przez 4 sek?

    instrukcje w c zawsze wykonywane sa jedna po drugiej, nigdy rownoczesnie, oczywiscie da sie to zrobic co napisales. Ale to zalezy co gdzie i jak podpiales. uC potrafi sterowac kazdym pinem (no moze prawie kazdym) pinem z osobna.
    Pocketer napisał:

    Pozdrawiam

    ja rowniez
  • #4 3273424
    Pocketer
    Poziom 10  
    Posty: 17
    Cytat:
    Mylisz podstawowe pojęcia (język programowania, kompilator i sposób programowania mikrokontrolera).

    Nie mylę. Np. WinAVR przecież kompiluje i programuje. To programator oraz kompilator w formie jednej aplikacji (no może pakiet aplikacji ;) ).

    Cytat:
    Wyobraź sobie, że chcesz coś wytłumaczyć np. Chińczykowi. Masz kilka możliwości: 1. nauczyć się chińskiego - można, ale po co? 2. Wziąć sobie tłumacza (np. Anglika), powiedzieć mu po angielsku co chcesz i niech on się męczy, żeby Chińczykowi wytłumaczyć. Możesz wziąć tłumacza - Francuza i mówić do niego po francusku.
    A teraz sobie zamień: Chińczyk -> mikrokontroler, tłumacz -> środowisko programistyczne, angielski -> C, francuski -> Bascom, chiński -> jezyk maszynowy procesora. Rozumiesz co mam na myśli?

    Nie wiem co masz na myśli. To chyba ja zostałem źle zrozumiany. W końcu "tłumacz" jest do tego by tłumaczyć na język maszynowy procesora to co chce "chińczykowi" przekazać. Poszukuje takiego języka byśmy się zrozumieli z "tłumaczem". A wtedy on przetłumaczy na chiński i prześle przetłumaczony list chińczykowi "pocztą" ( programatorem sprzętowym). Nie wiem czy poczta jest kompatybilna z tłumaczem? Tzn. czy tłumacz jest w stanie przesłać odpowiednio list do poczty? Tłumacz prześle mój list do przez LPT do poczty. Na poczcie chińczyk odbierze list. Rozumiemy się? ;)

    Cytat:
    PS. Żaden język nie ma komendy "podaj prąd na lewy silniczek przez 4 sek" Wink To musisz zrobić sam.

    znam komendy języka C. Chodziło mi raczej ustawienie wybranych pinów jako wyjść i ustawienie ich na stan wysoki, czyli w rezultacie podanie napięcia.

    Cytat:
    instrukcje w c zawsze wykonywane sa jedna po drugiej, nigdy rownoczesnie, oczywiscie da sie to zrobic co napisales. Ale to zalezy co gdzie i jak podpiales. uC potrafi sterowac kazdym pinem (no moze prawie kazdym) pinem z osobna.

    To znaczy, że jak napisze instrukcje jedną po drugiej to programator wykona je w takiej kolejności? Jak oddzielić instrukcje od siebie? Zwykłym ";"? A jeżeli chodzi o określanie czasu trwania wykonywania instrukcji ( w tym przypadku działania silnika)? Czy w języku C jest parametr taki jak czas operacji?

    Pozdrawiam
  • #5 3273628
    Konto nie istnieje
    Konto nie istnieje  
  • #6 3273665
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    kolego czy nie bądź niereformowalny ;) napisałeś:
    Cytat:
    Nie mylę. Np. WinAVR przecież kompiluje i programuje. To programator oraz kompilator w formie jednej aplikacji (no może pakiet aplikacji


    no przecież (sorry) ale to bzdura co piszesz - już ci jeden kolega tłumaczył - ale jeszcze raz: WinAVR to aplikacja dzięki, która posiada interfejs użytkownika na komputerze i dzięki której możemy pisać programy dla procesorków w językach Asembler jak również C. Podobnie jak pakiet BASCOM. I naucz się rozgraniczać te pojęcia - dzięki temu łatwiej przyjdzie ci później zrozumieć pewne inne zagadnienia.

    ... teraz kolejny krok: programator - to urządzenie pośredniczące pomiędzy taką aplikacją jak WinAVR lub Bascom a twoim układem mikroporocesorowym i dzięki któremu rózne aplikacje mogą wgrać do pamięci twojego uC program wynikowy, który napisałeś uprzednio w którejś z wymienionych aplikacji. To one właśnie po kompilacji na zewnątrz wypuszczają pliki HEX lub BIN. Jest to zapisany w odpowienim formacie kod binarny, który musi zostać wczytany do procesora ;) i teraz....

    .... taki kod wynikowy może być wczytany do twojego procka za pomocą różnych aplikacji jak PonyProg, WinAVR, Bascom i wiele innych. Z tym, że nie wszystkie one posiadają interfejs do pisania programów i kompilacji. Przykładem może być tu PonyProg, który potrafi tylko pobrać wytworzony przez inną aplikację kod binarny lub HEX i poprzez dowolnie wybrany dla danego uC PROGRAMATOR - wgrać to do niego... teraz troszkę bardziej jest to zrozumiałe? Zapewne zaraz powiesz - no tak ale WinAVR programuje - otóż NIE - on kompiluje program a następnie ponieważ jest to w zasadzie rozbudowany "kombajn" ma w sobie wbudowaną możliwość tego skompilowanego programu automatycznie poprzez jeden z wybranych dla niego PROGRAMATORÓW sprzętowych - może go wgrać do twojego procka ;)

    ok zakładam że po tym już nie będziesz mylił aplikacji-kompilatora ze sprzętowym PROGRAMATOREM i nie będziesz kolegom, którzy robią to już od dłuższego czasu zarzucał że się nie mylisz ;)

    teraz dalej... tak naprawdę każdy kompilator C, Bascom i inne tłumaczą języki wyższego rzędu na język najniższego rzędu jakim jest kod maszynowy.... a najbardziej zbliżonym do kodu maszynowego a w zasadzie tym samym jest asembler dla danego procesora tyle tylko że kompilator pozwala ci pisać (jeśli programujesz w asemblerze za pomocą odpowiednich mnemonik rozkazów - zjadliwych dla człowieka - tak żebyś nie musiał pisać poprostu liczb - choć to jest możliwe ale już najtrudniejsze ;) ... pomimo to na PC pisało się kiedyś króciutkie programy bezpośrednio w kodach ;)....

    .... i to własnie ten przetłumaczony na najniższego poziomu kod jest wgrywany do procka - teraz rozumiemy? więc już się dalej nie zagłębiaj w tych chińczyków itp ;)

    poza tym napisałeś:

    Cytat:
    programator wykona je w takiej kolejności


    więc tu też chyba ze względu na to o czym mówiłem powyżej nie możesz rozgraniczyć tego, że nie można tak powiedzieć, iż programator wykona instrukcje. To nie programator wykonuje tylko procesor. Natomiast tobie chodziło raczej o to czy kompilator skompiluje napisane przez ciebie instrukcje w odpowiedniej kolejności ? prawda ?

    ... ja akurat programuję tylko w asemblerze więc nie podpowiem czym oddziela się instrukcje w C ale koledzy inni zapewne pomogą - naucz się tylko zadawać pytania i nie zarzucać tym, którzy pomagają że nie wiedzą o czym mówią ;)....

    co do czasu instrukcji - to też nie ma takiego pojęcia jak..
    Cytat:
    określanie czasu trwania wykonywania instrukcji ( w tym przypadku działania silnika)


    zrobisz to tak, że - podasz instrukcję która uruchomi silnik, następnie podasz instrukcję (a raczej wywołasz procedurę) wprowadzającą pewne opóźnienie - tak długie jakie uznasz za stosowne - w tym czasie silnik będzie działał cały czas - a następnie znowu podasz instrukcję wyłączającą silnik ;)...

    tylko nie podłączaj silnika bezpośrednio do procka - szczególnie gdy nie wiesz np jaki prąd on pobiera bo zniszczysz procka. Są do tego układy sterujące scalone albo można sobie zrobić mostek typu H

    pozdrawiam - mając nadzieję, że coś niecoś teraz ci się rozjaśniło ;)
REKLAMA