eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Początek zabawy z bascomem
Ilość wypowiedzi w tym wątku: 40

  • 11. Data: 2011-02-08 21:44:53
    Temat: Re: Początek zabawy z bascomem
    Od: Adam Dybkowski <a...@4...pl>

    W dniu 2011-02-08 09:50 Adam napisał(a):

    > Chciałbym rozpocząć naukę programowania AVRów, na początek w Bascomie.

    Zła decyzja. Zacznij od C (avr-gcc).


    --
    Adam Dybkowski
    http://dybkowski.net/

    Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.


  • 12. Data: 2011-02-08 21:50:47
    Temat: Re: Początek zabawy z bascomem
    Od: Adam Dybkowski <a...@4...pl>

    W dniu 2011-02-08 21:27 janusz_kk1 napisał(a):

    >>> Oczywiście, na pewno walka z jakimś AVRGCC czy czymś takim zajmie
    >>> więcej czasu - ale ogólnie to się ogromnie opłaci.
    >>
    >> Ale co jest w C takiego trudnego? Przecież to jest intuicyjny język.
    > Jasneeee :)
    > Tak na szybko ci znalazłem:
    > c_size_mul = ((MMC_Data_16[9] & 0x03) * 2) + ((MMC_Data_16[10] >> 7) &
    > 0x01);

    Hmmm, a cóż w tej konstrukcji różni się od zapisu w BASICu (BASCOMie)?
    Chodzi o magiczne operatory & oraz >> czy może o dostęp do dziewiątego i
    dziesiątego elementu tablicy MMC_Data_16 (bo zapis z nawiasami
    kwadratowymi jest powszechny, nawet w BASICu)? W języku Pascal używanym
    często w szkołach do nauki podstaw programowania zapis byłby tylko
    bardziej rozwlekły ale nie odbiegał znacząco od wersji C:

    c_size_mul := (MMC_Data_16[9] and 3) * 2 + ((MMC_Data_16[10] shr 7) and 1);

    Nie widzę znaczącej różnicy i to samo zapisane w BASCOMie będzie też
    prawie identyczne. W jaki lepszy sposób BASICiem wyciągniesz dwa
    najmłodsze bity z jednego bajtu tablicy oraz najstarszy bit kolejnego
    bajtu i odpowiednio je poskładasz?

    --
    Adam Dybkowski
    http://dybkowski.net/

    Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.


  • 13. Data: 2011-02-08 22:52:15
    Temat: Re: Początek zabawy z bascomem
    Od: "Lelek@" <n...@n...pl>


    "janusz_kk1" <j...@o...pl> wrote in message
    news:op.vqlpstzr1cvm6g@jk-laptop...
    Dnia 08-02-2011 o 20:10:26 Lelek@ <n...@n...pl> napisał(a):


    > Tak na szybko ci znalazłem:
    > c_size_mul = ((MMC_Data_16[9] & 0x03) * 2) + ((MMC_Data_16[10] >> 7) &
    > 0x01);
    > powiesz mi zgłowy co się w jakiej kolejności robi?

    Ale to jest bardzo intuicyjny zapis. Zaczyna się od środka nawiasów. Jeżeli
    wiesz czego chcesz to to właśnie to zapisałeś.


  • 14. Data: 2011-02-08 23:01:37
    Temat: Re: Początek zabawy z bascomem
    Od: "Lelek@" <n...@n...pl>


    "Artur A." <n...@m...com> wrote in message
    news:iisd2r$6as$1@news.onet.pl...

    > Hehe, mi kiedyś krzywdę zrobiło numerowanie linii oraz goto w Basicu.
    > Przejście do procedur w Pascalu troszkę bolało.
    >
    > Adam, moim zdaniem nauka programowania AVR w C jest bardziej
    > przyszłościowa, ale na początek może Bascom też będzie ok (osobiście nie
    Ja bym radził zacząć pisać w assemblerze żeby zrozumieć później jak działają
    wskaźniki :-) Chociażby po to :-) I w ogóle co to jest ta pamięć i jakie są
    jej rodzaję i czemu raz trzeba do Z ładować adres o połowę mniejszy niż do
    ramu :-)


  • 15. Data: 2011-02-08 23:19:29
    Temat: Re: Początek zabawy z bascomem
    Od: "neuron" <n...@n...pl>


    >Jasneeee :)
    >Tak na szybko ci znalazłem:
    >c_size_mul = ((MMC_Data_16[9] & 0x03) * 2) + ((MMC_Data_16[10] >> 7) &
    >0x01);
    >powiesz mi zgłowy co się w jakiej kolejności robi?

    Czytanie cudzego kodu zawsze jest trudne. Gorzej jak sie nie daje odczytac
    wlasnego.
    Jako ze mam juz na karku ponad 4 dychy a zaczynalem programowac w asemblerze
    na starego poczciwego z80 ( i nie mialem zadnych problemow ze sterownikiem
    do programatora - mial on klawiature 16tkowa i trzeba bylo przepisac caly
    kod bajt po bajcie, zmiana w programie i 2kb znowu bajt po bajcie - to
    dopiero uczylo myslenia)
    to pozwole sobie zwrocic uwage na kilka spraw natury ogolnej.

    Komentarze - do takiego kodu jak powyzszy przydaje sie komentarz - dzis
    pamietasz - jutro nie. Mlodym wilkom komentarze wydaja sie zbedne ale radze
    wyrabiac sobie ten nawyk - bo to ma byc nawyk
    - kazdy kod ma byc skomentowany. Po pierwsze przyda sie na
    starosc(doslownie), po wtore przyda sie gdy przyjdzie pracowac zespolowo.

    Refaktoring. Tak to juz jest ze gdy walczy sie z danym zagadnieniem to sie
    czesto przerabia kod na wariata, dodaje jakies zmienne, proboje tak, a moze
    tak, a jak jeszce nie chce dzialc....
    Gdy wreszcie kod dziala tak jak tego oczekiwalismy wyglada jak pobojowisko.
    Refaktoring to w uproszczeniu przepisanie kodu tak aby robil to samo ale aby
    byl optymalny, czytelny i gotowy do zastoswania w przyszlosci - wiem, wiem
    ,nie chce sie jak o 4 nad ranem wkoncu uzyskalo sie efekt
    ale warto zrobic to natychmiast a nie dopiero jak zabraknie ROMu ;)

    Co do odwiecznej dyskusji o wyzszosci jednych swiat nad drugimi - c,pascal,
    basic - jeden .... - albo sie umie myslec jak maszyna albo nie. Kazdy kto
    chce nazwac sie programista powinien napisac choc jeden
    program w assemblerze. Jeden starczy - kiedys programowanie w assemblerze
    bylo trendy - dzis jest marnotrastwem czasu ale .... to uczy jak dziala
    procesor i uczy jak dziala kompilator - nie jest istotne jak cos zapiszemy w
    c lub bascomie - istotne jest czy aby na pewno kumamy co z tym zrobi
    procesor.

    W przypadku kolegi Adama bascom ma jedna zalete i jedna wade ktora jednak
    tez jest zaleta i radze z nich skorzytac. Juz po 2-3 tygodniach mozna
    zbudowac konkretne, dzilajace urzadzenia i to calkiem zlozone. To daje
    motywacje do dalszej zabawy - to zaleta. Wada jest to ze bardzo ale to
    bardzo ciezko uzyskac jakakolwiek wspolbieznosc - jesli nie chcemy aby nam
    wyswietlacz nie zdychal podczas odbioru RC5 to trzeba sie napocic. Ale to
    zaleta bo po pierwsze zmusza do myslenia a po wtore zmusza do zmiany
    narzedzi na cos bardziej elastycznego ( c nie jest lepsze od bascoma - jest
    ELASTYCZNIEJSZE) .Do swiadomej zmiany. I to jest zaleta tej wady ;)))

    wojtek
    www.neuron.com.pl
    CMMS Maszyna
    Golem OEE
    Hall2007



  • 16. Data: 2011-02-09 00:03:01
    Temat: Re: Początek zabawy z bascomem
    Od: "sundayman" <s...@p...onet.pl>

    Mam wrażenie, że wywołem niepotrzebną dyskusją nad wyższością Świąt
    Wielkanocnych nad Bożego Narodzenia...
    A nie o to mi szło. Rzecz jest w takiej sytuacji :
    Mamy kolegę, który jak sądzę jest ogólnie początkującym programistą (bo
    gdyby np. znał C, to pewnie nie pytał by o Bascoma).

    No i teraz tak - Bascom jest super. Naprawdę. Prostota i wygoda z jego
    stosowania jest powalająca.
    Tylko że w tym właśnie tkwi problem :)
    Jak już wspomniałem, jak trzeba szybko napisać prosty program, to nie ma
    lepszego narzędzia.
    Potrzebujesz odczytać coś po 1wire - nie ma sprawy - na wszystko jest gotowa
    komenda.
    Wystarczy poszukać w helpie - i gotowe.

    Tyle - że wcześniej czy później, okaże się , że trzeba wziąć inny procesor.
    I co wtedy ? Szukać innego basica ?
    No, na PIC to jeszcze się znajdzie. Ale na inne niekoniecznie.

    Jednym słowiem - ucząc się Bascoma - nauczysz się tylko tego, co pozwoli
    pisać proste programy tylko i wyłącznie na AVR.
    Ucząc się C - otwierasz sobie drogę do programowania wszystkiego -
    literalnie :)

    Trudność nie polega na składni. Tego można się łatwo nauczyć.
    Problem, to linkery, pliki naglówkowe i wszystkie te cudawianki, których nie
    ma w Bascomie - bo w nim nie ma niczego - piszesz x linijek i gotowe.
    Drugi problem, to że w Bascomie znajdziesz na wszystko gotowe polecenia - w
    C już niekoniecznie.
    Ale - gdybym dzisiaj stał przed takim wyborem - wybrałbym C.

    Też zaczynałem od assemblera Z80, potem 6502 - to już człowiek pisał po
    ciemku i zamkniętymi oczami.Ale dzisiaj myślę, że najlepiej umieć
    pisać w C. Wtedy napiszesz wszystko i na każdą platformę - czy to
    mikrokontroler duży czy mały, PC, Apple , Linux - wszystko.

    A pisanie w Bascomie to przy tym jest jak zabawka - chociaż bywa bardzo
    pożyteczna.


  • 17. Data: 2011-02-09 07:31:35
    Temat: Re: Początek zabawy z bascomem
    Od: "Adam" <a...@w...pl>

    >
    > Zła decyzja. Zacznij od C (avr-gcc).
    >

    Dziękuję Wam wszystkim za odpowiedzi. Co do C - warto się zastanowić, nie
    wykluczam rychłej przesiadki. 10 lat temu, na studiach, nauczono mnie trochę
    pascala. I naprawdę pasował mi ten język, był prosty i konkretny choć mało
    elastyczny. Z mikrokontrolerami jednak nie miałem nigdy do czynienia. Na
    razie moim celem jest wogóle uruchomienie jakiegokolwiek programu :)
    Jeśli chodzi o programator - znalazłem coś takiego jak avrdude. Po
    "wskazaniu" go w bascomie i wklepaniu w "Parameter" takiej linii:
    "avrdude" -p m16 -P com1 -c jtag1 -U flash:w:"{FILE}":a -U
    flash:v:"{FILE}":a
    można wgrać program do atmegi16.
    I tu pojawił się kolejny problem.... Wrzuciłem do procka coś takiego (z
    mikrokonrolery.net):

    Config Portb = &B11111111
    Config Portd = &B11111100

    Portb = &B11111111
    Portd = &B11111111
    Do
    If Pind.0 = 0 Then
    Portb.7 = 0
    End If
    If Pind.1 = 0 Then
    Portb.7 = 1
    End If
    Loop

    Prosty przerzutnik RS - 2 przyciski i dioda LED. Sam program działa dobrze,
    ale z tym portem B jest coś nie tak - dioda czasem sama zapala się i gaśnie
    w losowych momentach. Może ktoś podpowie o co chodzi? Jak ustawię inne porty
    jako wyjście to nie ma problemu. Tylko B i to na wszystkich pinach. Na pewno
    nie są to jakieś stany nieustalone na wejściach - są podciągnięte do + i
    mają b krótkie przewody. O co tu chodzi? Może to przez te "fusebity" na
    których się nie znam. Zresztą w bascomie nie znalazłem zakładki w której
    możne by je modyfikować.
    Moje pierwsze wrażenia - droga od postanowienia "nauczę się
    mikrokontrolerów" do uruchomienia PIERWSZEGO programu okazała się
    nadspodziewanie trudna. Wszystkie te programatory, programy pomocnicze
    (avrdude), ustawienia, fusebity, oscylator - całe to "know how"
    (przygotowanie procesora) to chyba najgorszy etap. Samo pisanie programu
    podejrzewam będzie już znacznie przyjemniejsze.

    Dziękuję, pozdrawiam
    Adam



  • 18. Data: 2011-02-09 09:03:09
    Temat: Re: Początek zabawy z bascomem
    Od: janusz_kk1 <j...@o...pl>

    Dnia 08-02-2011 o 22:50:47 Adam Dybkowski <a...@4...pl> napisał(a):

    > W dniu 2011-02-08 21:27 janusz_kk1 napisał(a):
    >
    >>>> Oczywiście, na pewno walka z jakimś AVRGCC czy czymś takim zajmie
    >>>> więcej czasu - ale ogólnie to się ogromnie opłaci.
    >>>
    >>> Ale co jest w C takiego trudnego? Przecież to jest intuicyjny język.
    >> Jasneeee :)
    >> Tak na szybko ci znalazłem:
    >> c_size_mul = ((MMC_Data_16[9] & 0x03) * 2) + ((MMC_Data_16[10] >> 7) &
    >> 0x01);
    >
    > Hmmm, a cóż w tej konstrukcji różni się od zapisu w BASICu (BASCOMie)?
    > Chodzi o magiczne operatory & oraz >> czy może o dostęp do dziewiątego i
    > dziesiątego elementu tablicy MMC_Data_16 (bo zapis z nawiasami
    > kwadratowymi jest powszechny, nawet w BASICu)? W języku Pascal używanym
    > często w szkołach do nauki podstaw programowania zapis byłby tylko
    > bardziej rozwlekły ale nie odbiegał znacząco od wersji C:
    >
    > c_size_mul := (MMC_Data_16[9] and 3) * 2 + ((MMC_Data_16[10] shr 7) and
    > 1);
    >
    > Nie widzę znaczącej różnicy i to samo zapisane w BASCOMie będzie też
    > prawie identyczne. W jaki lepszy sposób BASICiem wyciągniesz dwa
    > najmłodsze bity z jednego bajtu tablicy oraz najstarszy bit kolejnego
    > bajtu i odpowiednio je poskładasz?
    Bo akurat pod ręką nie miałem lepszego przykładu, a chciałem udowodnić że
    wykonwywanie
    kilku operacji w jednej linijce skutecznie ją zaciemnia, ten przykład
    oczywiście nie jest trudny. Właśnie nie mogę odnaleść tego kodu w którym
    była taka perełka.
    >


    --
    Pozdr
    JanuszK


  • 19. Data: 2011-02-09 09:05:50
    Temat: Re: Początek zabawy z bascomem
    Od: janusz_kk1 <j...@o...pl>

    Dnia 08-02-2011 o 22:41:36 Michoo <m...@v...pl> napisał(a):

    > W dniu 08.02.2011 22:25, janusz_kk1 pisze:
    >> Dnia 08-02-2011 o 21:53:16 Michoo <m...@v...pl> napisał(a):
    >>
    >>> W dniu 08.02.2011 21:27, janusz_kk1 pisze:
    >>>> Dnia 08-02-2011 o 20:10:26 Lelek@ <n...@n...pl> napisał(a):
    >>>>> Ale co jest w C takiego trudnego? Przecież to jest intuicyjny język.
    >>>> Jasneeee :)
    >>>> Tak na szybko ci znalazłem:
    >>>> c_size_mul = ((MMC_Data_16[9] & 0x03) * 2) + ((MMC_Data_16[10] >> 7) &
    >>>> 0x01);
    >>>> powiesz mi zgłowy co się w jakiej kolejności robi?
    >>> Co robi widać na pierwszy rzut oka. Kolejność jest nieistotna i może
    >>> się zmienić.
    >>
    >>>
    >>>> N o ile ci to zajęło?
    >>> Z 1.5 .. 2 sec?
    >> No to co najmniej o 1,5sek za długo, pomyśl teraz że takich linijek masz
    >> wiecej, tracisz dużo czasu na analizę, przy prostym kodzie analizujesz
    >> kilkakrotnie szybciej.
    > Składanie wartości binarnej leżącej w dziwnym miejscu nie jest "proste"
    > samo w sobie.
    >
    > Przy "prostym" kodzie zapisanym równie nieintuicyjnie byłoby gorzej -
    > trzeba by przeanalizować kilka linii, pojąć ich sens a potem pojąć sens
    > całości. No chyba, że dasz przykład takiego "prostego" kodu?
    >
    >>> Chociaż dłuższa analiza pozwala się oczywiście zastanawiać czy *2 nie
    >>> powinno być dla konsekwencji zapisane jako przesunięcie binarne
    >> Kompilator i tak to zoptymalizuje.
    > Ale tu chodzi o zapis a nie o optymalizację.
    > Kod zajmuje się złożeniem wartości z bitów leżących "na przełomie"
    > bajtu. Operuje na poziomie bitów więc | jest znacznie bardziej
    > intuicyjny niż +, który sugeruje operację matematyczną a nie logiczną.
    > Tak samo wartość ma być _przesunięta o jeden bit_ względem początkowej a
    > nie _dwa razy większa_.
    >
    > c_size_mul = ((MMC_Data_16[9] << 1) & 0b110) | (MMC_Data_16[10] >> 7) &
    > 0b001);
    Juz Adamowi odpowiedziałem, gdzieś ostatnio w kodzie znalazłem taką perełkę
    ale nie mogę jej znaleść, ten przykład co dałem był akurat prosty,
    ale skłądanie kilku operacji w jednej lini skutecznie ją zaciemnia.
    Ja sobie piszę komentarze co dana linia robi, ale z cudzym kodem jest
    problem bo trzeba sie zastanowić.


    --
    Pozdr
    JanuszK


  • 20. Data: 2011-02-09 09:32:39
    Temat: Re: Początek zabawy z bascomem
    Od: J.F. <j...@p...onet.pl>

    On Wed, 09 Feb 2011 10:03:09 +0100, janusz_kk1 wrote:
    >>> c_size_mul = ((MMC_Data_16[9] & 0x03) * 2) + ((MMC_Data_16[10] >> 7) &
    >>> 0x01);
    >>
    >Bo akurat pod ręką nie miałem lepszego przykładu, a chciałem udowodnić że
    >wykonwywanie
    >kilku operacji w jednej linijce skutecznie ją zaciemnia, ten przykład
    >oczywiście nie jest trudny. Właśnie nie mogę odnaleść tego kodu w którym
    >była taka perełka.

    Oczywiscie sa perelki zaciemnione doskonale, ale jak chcesz powyzsze
    rozbic na kilka linijek zeby bylo czytelne ? Chyba ze tak

    c_size_mul = ((MMC_Data_16[9] & 0x03) << 1)
    +((MMC_Data_16[10] >> 7) & 0x01);

    J.

strony : 1 . [ 2 ] . 3 . 4


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: