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

[PIC]Popularność mikrokontrolerów PIC

marcin w 08 Gru 2018 21:56 249 9
  • #1 08 Gru 2018 21:56
    marcin w
    Poziom 22  

    Cześć wszystkim.

    Tak mnie naleciała myśl na temat popularności mikrokontrolerów PIC, ostatnio microchip wprowadził trochę nowości i rozwiązań, między innymi PPS czy CLC które ułatwiają projektowanie i późniejsze programowanie aplikacji. Pomimo tego u nas PIC-e są cały czas zepchnięte na margines i niewielu developerów i amatorów decyduje się je użyć, wciąż główną rolę w świecie mikrokontrolerów 8-bitowych odgrywają mikrokontrolery AVR.

    Dlaczego (przynajmniej u nas) jest taka niechęć do mikrokontroleów PIC ?

    Prośba o potraktowanie tematu jako dyskusji.

    0 9
  • CControls
  • #2 08 Gru 2018 22:22
    Freddie Chopin
    Specjalista - Mikrokontrolery

    marcin w napisał:
    Dlaczego (przynajmniej u nas) jest taka niechęć do mikrokontroleów PIC ?

    Wypowiem się na podstawi moich dawnych doświadczeń z PIC24 i dsPIC33, które - z tego co czytam - są generalnie dalej aktualne. Przeglądasz stronkę Microchipa i myślisz sobie "łał!". Przeglądasz datasheet czy dokumentację i teraz już jest wielkie "ŁAŁ!", wszystko fajnie i w ogóle. A potem otwierasz erratę i czar pryska...

    0
  • #3 08 Gru 2018 22:46
    excray
    Poziom 39  

    Jak 10 lat temu kończyłem swoją przygodę z '51 to na celownik wziąłem PIC i AVR jako następców. Na procesory wtedy patrzyłem pod kątem programowania w asemblerze. Przeczytałem noty katalogowe 2 najbardziej popularnych przedstawicieli i wnioski moje były takie:
    AVR- świetna, bogata lista rozkazów na dodatek większość realizowana w jednym takcie, bardzo czytelna architektura, szybki - cykl maszynowy = cykl zegarowy, bogate peryferia, dużo RAM, FLASH, świetnie napisane noty katalogowe, łatwe darmowe środowisko, tani programator, tańsze niż PICe
    PIC - jakiś porąbany system banków rejestrów - musisz przełączać się między bankami chcąc uzyskać dostęp do poszczególnych rejestrów, totalnie nieprzyjazny użytkownikowi asembler, ramu jak na lekarstwo, wolny - cykl maszynowy = cykl zegarowy/4, datasheety pisane IMO niechlujnie, jakieś problemy też miałem ze środowiskiem i programatorem.

    0
  • CControls
  • #4 08 Gru 2018 23:22
    LChucki
    Poziom 17  

    Dla PIC pełna wersja kompilatora C jest płatna. Wersja bezpłatna specjalnie "psuje kod". Dla AVR środowisko i kompilator są bezpłatne.

    0
  • #5 09 Gru 2018 00:12
    stmx
    Poziom 16  

    Dodam od siebie jedną rzecz.

    ARM-y - praktycznie wszystkie możliwe zastosowania i wersje. Jak potrzebuję BT to biorę NRFa i sobie piszę. Jak coś innego to biorę procesor czy uC innej firmy. Ale samo programowanie jest to samo - bo to ciągle ten sam core.

    Sama wygoda.

    PIC-e tracą popularność nawet w USA.

    0
  • #6 09 Gru 2018 00:35
    LChucki
    Poziom 17  

    stmx napisał:
    Ale samo programowanie jest to samo - bo to ciągle ten sam core.

    Układy peryferyjne też te same?

    0
  • #7 09 Gru 2018 01:52
    stmx
    Poziom 16  

    LChucki napisał:
    Układy peryferyjne też te same?
    umiesz czytać że zrozumieniem? Peryferia różne, ale core ten sam. Nie trzeba zmieniać narzędzi ani uczyć się nowego procesora. Wystarczy zapoznać się z peryferiami

    0
  • #8 09 Gru 2018 03:50
    marcin w
    Poziom 22  

    excray napisał:
    Jak 10 lat temu kończyłem swoją przygodę z '51 to na celownik wziąłem PIC i AVR jako następców. Na procesory wtedy patrzyłem pod kątem programowania w asemblerze. Przeczytałem noty katalogowe 2 najbardziej popularnych przedstawicieli i wnioski moje były takie:
    AVR- świetna, bogata lista rozkazów na dodatek większość realizowana w jednym takcie, bardzo czytelna architektura, szybki - cykl maszynowy = cykl zegarowy, bogate peryferia, dużo RAM, FLASH, świetnie napisane noty katalogowe, łatwe darmowe środowisko, tani programator, tańsze niż PICe
    PIC - jakiś porąbany system banków rejestrów - musisz przełączać się między bankami chcąc uzyskać dostęp do poszczególnych rejestrów, totalnie nieprzyjazny użytkownikowi asembler, ramu jak na lekarstwo, wolny - cykl maszynowy = cykl zegarowy/4, datasheety pisane IMO niechlujnie, jakieś problemy też miałem ze środowiskiem i programatorem.

    Pisząc w C nikogo nie interesują takie aspekty jak przełączanie się między bankami. Te starsze PICe faktycznie były pozbawione dzisiejszych udogodnień a także miały bardzo mało pamięci. Ta wada nie dotyczy nowych PICów. Cykl maszynowy to 4 takty zegara ale PICe częściowo nadrabiają go szybszym zegarem.
    LChucki napisał:
    Dla PIC pełna wersja kompilatora C jest płatna. Wersja bezpłatna specjalnie "psuje kod". Dla AVR środowisko i kompilator są bezpłatne.

    Możesz coś więcej rozwinąć ? Wersja free nie umożliwia włączenia optymalizacji kodu.

    0
  • #9 09 Gru 2018 04:33
    Marek_Skalski
    Moderator Projektowanie

    Od czasu wprowadzenia PPS i CLC minęło prawie 10 lat. Trochę dużo jak na "ostatnio" i "nowość".

    marcin w napisał:
    Pisząc w C nikogo nie interesują takie aspekty jak przełączanie się między bankami.

    Nie potrafię się zgodzić z Tobą, ponieważ analiza kodu wynikowego pokazuje zaskakująco dużo zbędnych instrukcji przełączających banki, aby umożliwić dostęp do danego rejestru. W przypadku optymalizacji O0 czy O1, te instrukcje są wykonywane przed każdym dostępem do rejestru, co dramatycznie obniża wydajność rdzenia.
    marcin w napisał:
    Cykl maszynowy to 4 takty zegara ale PICe częściowo nadrabiają go szybszym zegarem.

    Najszybsze z nich pracują z zegarem 64 MHz, czyli realnie wykonują 16 milionów instrukcji na sekundę. Niby dużo, ale dzięki przełączaniu banków ich wydajność spada znacząco przy intensywnym korzystaniu z peryferiów.
    Kolejna wada 8-bitowych PICów to sprzętowy stos, o szalonej wielkości 31 pozycji dla 21-bitowego wskaźnika adresu powrotu. Podobno dane też można ładować na stos, ale jest to maksymalnie utrudnione i standardowe operacje, np. przekazanie argumentów funkcji przez stos jest dramatycznie niewygodne i zabija wydajność.
    marcin w napisał:
    Dlaczego (przynajmniej u nas) jest taka niechęć do mikrokontroleów PIC ?

    Są mało atrakcyjne, ponieważ są chyba pod każdym względem gorsze od AVR i Cortex-M. Narzędzia są droższe, darmowe kompilatory zostały wykastrowane i generują puchnący kod. Polityka MCP jest dość dziwna - zamiast usuwać błędy raportowane w erratach (przez użytkowników), to wprowadzają kolejny model z tymi samymi błędami, czasem dodają nowe jako bonus. Na przykład pamięć programu o trwałości 1 tysiąc cykli zapisu zamiast deklarowanej trwałości 10 tysięcy cykli. Czasami trafi się układ peryferyjny, który jest, ale nie działa. Workaround: None.
    Ja dziękuję za takie podejście. Z mojej perspektywy produkty Microchip nie mają żadnych atutów wobec konkurencji, a mają trochę (istotnych) wad.

    Inna sprawa, że jak ktoś raz spróbował pracy z jednostką 32-bitową, to bardzo niechętnie wraca do 8-bitów. Chyba tylko wtedy, gdy trzeba zrobić pchełkę na powierzchni kilku milimetrów kwadratowych, lub zmieścić się w koszcie na poziomie kilku centów za cały układ. Ale takie rzeczy to tylko w milionowej produkcji, inaczej nigdy nie zwróci się koszt opracowania układu.

    1
  • #10 09 Gru 2018 08:56
    stmx
    Poziom 16  

    Marek_Skalski napisał:
    Chyba tylko wtedy, gdy trzeba zrobić pchełkę na powierzchni kilku milimetrów kwadratowych, lub zmieścić się w koszcie na poziomie kilku centów
    Jak już coś robimy masowo to 32 bitowce są dostępne w obudowach odpowiednio matych. Jedynym argumentem pozostaje cena. Ale wtedy i tak można jedynie produkować w Chinach (bo nikt tak nie zrobi tanio jak oni) a oni mają swoje dziwne 8051 pochodne procesory o niewiarygodnie niskich cenach - i wtedy lepiej zastosować coś takiego.

    W UK praktycznie PICe juz nie istnieja w nowych projektach, a znalezienie programistów chcących się nimi bawić graniczy chyba z cudem (widzę np. w UK ogłoszenie odnawiane od pół roku z coraz wyższymi stawkami).

    0