eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › PIC vs AVR
Ilość wypowiedzi w tym wątku: 238

  • 11. Data: 2014-04-04 10:34:56
    Temat: Re: PIC vs AVR
    Od: Michał Lankosz <m...@t...pl>

    W dniu 2014-04-04 00:07, jacek pozniak pisze:
    > Prawdę mówiąc skłania mnie ta sytuacja do przesiadki na AVR, który jak sie
    > wydaje jest bardziej przyjazny dla kompilatora (jest na niego gcc)

    Jeśli nie popatrzysz na ARM jak na armatę na wróble, to może o nich
    pomyśl. Piszę (teraz coraz mniej) na AVR w C jak i na ARM (STM32) więc
    mam jako takie porównanie.

    W mojej opinii na niekorzyść AVR (w stosunku do ARM) przemawia:
    - pitolenie się ze stałymi umieszczanymi we flash, cały zbiór funkcji
    operujący na stringach jest powielony tylko z powodu innego sposobu
    dostępu do pamięci programu
    (http://www.nongnu.org/avr-libc/user-manual/group__a
    vr__pgmspace.html)
    - pitolenie się z dostępem powyżej magicznej granicy 64k (RAMPZ), prosty
    wskaźnik do pamięci jest tylko 16-bit
    - debugowanie - jest niby jtag (którego raz mi się udało użyć), czy
    debugwire (takiego sprzętu już nie miałem); w moim przekonaniu te
    narzędzia u Atmela dobrze działają jak się ma oryginalne (drogie)
    sprzęty i tylko ich AtmelStudio. Ja mam tylko programator ISP+PDI+TPI.

    Trzeba mieć też na uwadze, że w przypadku AVRów nie jest też tak różowo
    z kompilacją. Wraz z wersją 5.x, czy 6 AS zmiany w toolchainie są na
    tyle duże, że wiele kodów już napisanych i działających trzeba
    poprawiać. Na pierwszy strzał idzie dodanie const do wszystkich stałych
    umieszczonych w pamięci programu (wreszcie uczy się "programistów"
    takich jak ja ;), bo inaczej kompilacja kończy się błędem. Jednak nie
    pamiętam przypadku, żeby kod kompilował się dobrze dla dwóch wersji
    kompilatora, a przy jednym z nich nie działał.

    Korzyści AVR to... głównie że istnieją malutkie procki, które mogą
    posłużyć do migania diodą, jako jakieś interfejsy między czujnikiem a
    magistralą i... wiele innych.
    Jednak stosowanie ATmega128 już jest kiepskim pomysłem, bo jest 5x
    droższa i z 15 razy mniej wydajna od prostego Cortex M0.

    Do ARMów jest obecnie kilka darmowych toolchainów GCC, tylko środowisko
    trzeba sobie skompletować. A! jest CooCox, co się go ściąga, klika w
    jakimś wizardzie i już - nie używam, ale wydaje się dość przyjazne.

    --
    Michał


  • 12. Data: 2014-04-04 10:48:27
    Temat: Re: PIC vs AVR
    Od: Sylwester Łazar <i...@a...pl>

    > Proszę o jakieś opinie.
    >
    > Pozdrawiam
    > jp
    Wydaje mi się, że praca z kompilatorem (C czy czymkolwiek w przyszości, co
    też nie będzie spójne),
    jest jak praca z drugim programistą.
    Toż przecież kompilator też napisał człowiek.

    Wygląda mi na to, że decydując się na C, zgadzasz się jak gdyby na pracę w
    grupie.
    I naturalnym będzie, że są różnice w wizji - jak to ma działać.

    Inny kompilator - inny programista.

    Zmieniając kompilator, to tak jakbyś zmieniał współpracownika.
    Nowy może być lepszy, ale te "docieranie".
    Dlatego bardzo rozsądne wydaje mi się to co robi MAREK:
    "nie zmieniam kompilatora używanego latami,
    przetestowanego na wszelkie możliwe sposoby i działającego prawidłowo
    (C18} nagle na inny (XC8)"
    Zna jego wady i zalety i pracuje mu się z nim skutecznie.

    Jeśli chodzi o Microchip, to sytuacja jest wydaje mi się jeszcze gorsza.
    np. z ostatnich dni.
    Chciałem sobie zrobić sortowanie napięć.
    Bąbelkowe - najprostrze, ale nie wypada, bo niemal prawie najgorsze z
    możliwych.
    No to quic sort.
    Fajnie. Biorę C32 i jest piękna funkcja qsort() w bibliotece. Ale ja mam
    18F.
    W C18 już jej nie ma.
    Lepiej jednak mi pasuje metoda zliczania.
    Myślę sobie - co za problem - kopiuję z Wikipedii i mam.
    Jednak coś mnie zatrzymało. Jak to będzie działać na 8-bitowym z rekordami
    danych, bo oprócz wartości napięć są i ich adresy?
    Musi być to strasznie czasochłonne i nadmiarowe zrobić na 8-bitówce.
    Więc zrobiłem w asm. Zaraz uruchomię.
    Nie zdecydowałem się w pierwszej kolejności w C i podpatrzeć, tylko
    sprawdzić od razu w ASM nie sugerując się.
    Jak to zrobię zapuszczę w C18 poniższy fragment z Wikipedii i porównam.
    W międzyczasie, jakby mi ktoś powiedział, czy widzi jakieś spowolnienia w
    tym kodzie, to byłbym wdzięczny.
    S.



    # variables:
    # input -- the array of items to be sorted; key(x) returns the key for
    item x
    # n -- the length of the input
    # k -- a number such that all keys are in the range 0..k-1
    # count -- an array of numbers, with indexes 0..k-1, initially all zero
    # output -- an array of items, with indexes 0..n-1
    # x -- an individual input item, used within the algorithm
    # total, oldCount, i -- numbers used within the algorithm

    # calculate the histogram of key frequencies:
    for x in input:
    count[key(x)] += 1

    # calculate the starting index for each key:
    total = 0
    for i in range(k): # i = 0, 1, ... k-1
    oldCount = count[i]
    count[i] = total
    total += oldCount

    # copy to output array, preserving order of inputs with equal keys:
    for x in input:
    output[count[key(x)]] = x
    count[key(x)] += 1

    return output


  • 13. Data: 2014-04-04 10:52:49
    Temat: Re: PIC vs AVR
    Od: Marek <f...@f...com>

    On Fri, 4 Apr 2014 10:00:32 +0200, Sylwester Łazar<i...@a...pl>
    wrote:
    > To jak sobie poradzić z ROMem?
    > Używać TBLRD, TBLWR, TBLADR, TABLAT, TBLPTRU:H:L?

    Przypominam, że rozmawiamy o kompilatorze C :-). Tymi rejestrami to
    ma zarządzać kompilator a nie programista.
    Przykład, użycie funkcji:
    strcpy(a,b);
    będzie prawidłowe, jeśli oba wskazniki a i b są typu char* i oba
    wskazują na bufory w ram.
    Nieprwawidłowe będzie użycie np. strcpy (a,"test"), ponieważ string
    "test" zostanie umieszczony przez kompilator w rom przez co będzie
    niezgodność drugiego argumentu, (który jest rom char* a nie char*), b
    musi być wskaznikiem na ram w przypadku tej funkcji.
    W takich przypadkach trzeba użyć dedykowanej funkcji
    strcpypgmram(a,"test") ;
    C18 dostarcza wszystkie funkcje, które zastępują klasyczne przy
    operacjach na stringach, gdy są mieszane argumenty (char* i rom
    char*) np: strstrrampgm, ststrpgnram itd.
    Porąbane, prawda? ;)
    Ale pomijajac tą upierdliwość (którą pozbyto się dopiero w XC8), C18
    jest bardzo dobrym kompilatorem dla arch. pic16 i nigdy mnie nie
    zawiódł a kompilowałem nim projekty, które sumarycznie przekroczyły
    steki tysięcy linii kodu. 100% problemów z nieprawidłowym dzialaniem
    kodu były związane z moimi błędami a nie błędem C18. Natomiast tego
    nie można powiedzieć no. o sdcc, ostatnio przeze mnie zgłoszony błąd
    dla pic14 był chyba w lutym, (mieli poprawić przy najbliższym wydaniu
    sdcc).

    --
    Marek


  • 14. Data: 2014-04-04 11:10:31
    Temat: Re: PIC vs AVR
    Od: Sylwester Łazar <i...@a...pl>


    Użytkownik Marek <f...@f...com> w wiadomości do grup dyskusyjnych
    napisał:a...@n...neostrada
    .pl...
    > On Fri, 4 Apr 2014 10:00:32 +0200, Sylwester Łazar<i...@a...pl>
    > wrote:
    > > To jak sobie poradzić z ROMem?
    > > Używać TBLRD, TBLWR, TBLADR, TABLAT, TBLPTRU:H:L?
    >
    > Przypominam, że rozmawiamy o kompilatorze C :-). Tymi rejestrami to
    > ma zarządzać kompilator a nie programista.
    No właśnie. Inaczej nie ma to sensu.

    > C18 dostarcza wszystkie funkcje, które zastępują klasyczne przy
    > operacjach na stringach, gdy są mieszane argumenty (char* i rom
    > char*) np: strstrrampgm, ststrpgnram itd.
    > Porąbane, prawda? ;)
    Fakt. Ale jak się wie, to już żaden problem.
    Przypuszczam tylko, że setki osób ma taki dylemat na początku i tylko
    szkoda czasu na nerwy i walenie w klawiaturę :-)

    > Ale pomijajac tą upierdliwość (którą pozbyto się dopiero w XC8), C18
    > jest bardzo dobrym kompilatorem dla arch. pic16 i nigdy mnie nie
    > zawiódł a kompilowałem nim projekty, które sumarycznie przekroczyły

    A jaki numer wersji C18 używasz?
    S.


  • 15. Data: 2014-04-04 11:22:58
    Temat: Re: PIC vs AVR
    Od: Michał Lankosz <m...@t...pl>

    W dniu 2014-04-04 11:10, Sylwester Łazar pisze:
    >
    > Użytkownik Marek <f...@f...com> w wiadomości do grup dyskusyjnych
    > napisał:a...@n...neostrada
    .pl...
    >> C18 dostarcza wszystkie funkcje, które zastępują klasyczne przy
    >> operacjach na stringach, gdy są mieszane argumenty (char* i rom
    >> char*) np: strstrrampgm, ststrpgnram itd.
    >> Porąbane, prawda? ;)
    > Fakt. Ale jak się wie, to już żaden problem.

    Przenieś teraz ten kod na(z) inny uC - AVR, albo na Cortex Mx. Pewnie
    Marek takie (mniej więcej) przesłanie kryje za słowem "porąbane".

    --
    Michał


  • 16. Data: 2014-04-04 11:46:23
    Temat: Re: PIC vs AVR
    Od: jacek pozniak <j...@f...pl>


    Marek wrote:

    > On Fri, 04 Apr 2014 09:08:26 +0200, jacek pozniak
    > <j...@f...pl> wrote:
    >> Coraz bardziej skłaniam się ku twierdzeniu, że architektura PIC16,
    >
    > Oznaczenie marketingowe produktu, które podałeś nie jest oznaczeniem
    > architektury (często mylnie podawane), architektura układów
    > oznaczonych PIC16 F* to pic14 (14 bitowa dlugość rozkazu) a PIC18 F*
    > to architektura pic16 (16 bitowy rozkaz).
    > Jeśli chodzi o układy arch. pic16 (oznaczone jako PIC18F*) to były
    > specjalnie projektowane pod kątem użycia kompilatora C, natomiast
    > pic14 nie. Oczywiście można złośliwie powiedzieć, że były
    > projektowane pod C18 (lub na odwrót), który taki strict ansi C nie
    > jest (trzeba się np. przyzwyczaić, że zmienna wskaźnikową do ram nie
    > można użyć do wskazywania rom itp).
    Do tego raczej się nie przyzwyczaję, że po rzutowaniu wskaźnika, kompilator
    nie zgłasza błędów a program po prostu nie działa bo nadal próbuje pobierać
    z innej przestrzeni adresowej. Prędzej zmienię architekturę/kompilator.

    > Jedynie ci Ci mogę polecic to używanie C18 dla arch. pic16. XC8 jest
    > zbyt świeży, aby stwierdzić teraz jego "długoterminową przydatność do
    > użycia".
    >
    Trochę nieprecyzyjnie się wyraziłem co do tego PIC18, ja kompiluję i zawsze
    kompilowałem kompilatorem wywodzącym się z HiTech, XC8 bardziej jest HiTech
    niż C18 (chyba).


  • 17. Data: 2014-04-04 11:58:34
    Temat: Re: PIC vs AVR
    Od: "tusk, donald tusk" <N...@g...pl>

    mogę o coś zapytać?
    jak dokładnie brzmi nazwa kompilatora C dla 18F?
    PICC? czy C18? MPLAB? trochę się pogubiłem...


  • 18. Data: 2014-04-04 12:01:15
    Temat: Re: PIC vs AVR
    Od: g...@s...invalid (Adam Wysocki)

    jacek pozniak <j...@f...pl> wrote:

    > Czy Koledzy programujący uC również coś takiego zauważyli?

    Z PIC-ami nie mam doświadczeń, ale od ok. 10 lat programuję AVR-y używając
    avr-gcc (różne wersje się przez ten czas przewinęły) i nigdy nic takiego
    się nie zdarzyło - co najwyżej były zmiany w API avr-libc (ISR, SIGNAL,
    avr/signal.h, avr/interrupt.h itd).

    --
    SELECT finger FROM hand WHERE id = 3;
    http://www.chmurka.net/


  • 19. Data: 2014-04-04 12:40:16
    Temat: Re: PIC vs AVR
    Od: Marek <f...@f...com>

    On Fri, 4 Apr 2014 11:10:31 +0200, Sylwester Łazar<i...@a...pl>
    wrote:
    > A jaki numer wersji C18 używasz?

    3.42

    --
    Marek


  • 20. Data: 2014-04-04 12:41:54
    Temat: Re: PIC vs AVR
    Od: Marek <f...@f...com>

    On Fri, 04 Apr 2014 11:46:23 +0200, jacek pozniak
    <j...@f...pl> wrote:
    > kompilowałem kompilatorem wywodzącym się z HiTech, XC8 bardziej
    jest HiTech

    A XC8 to nie jest właśnie wykupiony przez microchio HiTech?

    --
    Marek

strony : 1 . [ 2 ] . 3 ... 10 ... 20 ... 24


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: