Skocz do zawartości

[Programowanie] Mikrokontrolery Microchip PIC. Część 1


BlackJack

Pomocna odpowiedź

Oj widzę rozgorzała gorąca dyskusja o PICkach..

Ale po kolei. Po wypowiedziach wyraźnie, widać że mamy do czynienia z zaawansowanymi użytkownikami, jak i nie, ale musimy pamiętać że tekst staram się pisać dla początkujących, więc, tak należy na to patrzeć. Z drugiej strony wasza tematyka uciekła głęboko w stronę 2 i 3 części artykułu, więc nie dziwne że tu pewnych kwestii nie ma. Jak tak dalej pójdzie to nie trzeba będzie ich wcale pisać 😉

Co do tej wydajności PICów, - ja przyjąłem że podaje najgorszy możliwy wynik, dla identycznej częstotliwości AVRa. Czyli w takim przypadku standardowy PIC bez PLL, bo ten właściwe uświadczymy tylko w nowszych rdzeniach jest ok 4x wolniej. Dla czego tak? Ano żeby nie nastawiać kogoś na super wydajność, której nie koniecznie musi doświadczyć na każdym CPU.

Co do tych przerwań w tej nocie katalogowej - ano faktycznie tu popełniłem mały błąd. wynikający ż tego ze jest to zrobione trochę nieczytelnie, lecz to zależy od noty kat. W mojej z PIC16F690 jest to rozdział 14-6, a nie 14-3.

Poprawiłem ten niefortunny wpis, który powstał trochę z mojego własnego rozgardiaszu i faktu że ja w sumie też jestem początkującym PICowcem. 😅

O programatorach cieżko mi tu podejmować jakaś większą dysputę, bo ja od samego poczatku nastawiłem siena PICKIT 2 i z niego korzystam.

Tak, właśnie klona PICkita2 chcę wykonać, schemat jest udostępniony przez producenta więc to nie problem. Dla mnie każda złotówka się liczy (a 100 zł to dla mnie mnóstwo pieniędzy).

Jeżeli się nie pogubiłem w gąszczu wypowiedzi, to chyba zbudowałeś, lub jesteś w fazie budowy kilku programatorów, bo nie spełniają one twoich oczekiwań. Teraz należało by zobaczyć ile cie to kosztowało sumarycznie, z wszystkimi kosztami, w tym ewentualnych przesyłek pocztą/kurierem jeżeli musiałeś coś kupować tą drogą. I teraz nie masz jak zaprogramować procesora do klona, więc albo ci zostaje dobry kumpel który ma jak, albo szukać kogoś kto ci taki zaprogramuje, znowu dodatkowe koszty. Z mojego doświadczenia wynika żę różnice w kosztach nie są aż takie wielkie, szczególnie jak ktoś mieszka na wsi i nie ma sklepu AVT, czy elektronicznego pod nosem.

BlackJack napisał/a:

Piąty argument, to bardzo prosty asembler, bo najprostsze 8-bitowe PICi mają zaledwie 35 instrukcji, których łatwo się nauczyć.

Nie rozumiem tego argumentu. Pisałem ostatnio dość duży projekt w całości w assemblerze AVR i ilość instrukcji jest plusem, a nie minusem. A poza tym ilość instrukcji wcale nie jest duża. Jedną trzecią z..................... Nauka? Bezsensu, nie jesteśmy w szkole, aby kuć na pamięć. Drukujemy sobie kartkę z instrukcjami z pdfa procesora i już możemy programować. 32 rejestry robocze, sprzętowe mnożenie, wsparcie dla liczb 16bitowych, ogólnie miła architektura (porównując AVR do x86, to ten drugi jest piekielnie niewygodny i skompilowany).

I tu znowu wszystko zależy kto to czyta, czy średnio zaawansowany elektronik czy taki który początkuje w ASM. Nie chodzi o to żeby wkuwać instrukcje, samo wydrukowanie tabelki to też nie problem, ale trzeba te tabelka rozumieć, a łatwiej zrozumieć 35 instrukcji i ich działanie, niż 100 z AVRa, mimo iż większość z nich jest bardzo podobna.

Z drugiej strony stwierdzenie że ASM AVR w porównaniu do X86 (mam tu na myśli 8086 bo tym się bawiłem) jest prostszy, nieco zaprzecza twojej wypowiedzi. Bo akurat x86 jest lajtowy jak się rozumie specyfikę tej architektury, i tu właśnie jest cały haczyk z ASM, trzeba rozumieć architekturę danego CPU. Co do braku operacji mnożenie i dzielnie, to akurat poznanie jak się to robi na piechotę jest praktycznie przydatnym doświadczeniem, i na pewno nikt kto to opanuje na tym nie straci.

Link do komentarza
Share on other sites

Zacznę od tego, że ja także czasami poprawiam swoje artykuły, dlatego nie traktuj moich drobnych uwaga, jako wytykanie błędu. Ot przeczytałem, zauważyłem to prostuję, tak jak mnie czasami prostują w komentarzach do artykułów. 🙂

Nie mogę się jednak zgodzić, ze stwierdzeniem, że są PIC są standardowo wolniejsze 4x od AVR dlatego, że PLL to właśnie standard w większości PICów. Stwierdzeniem już na początku cyklu artykułów, że AVR są wolniejsze od PIC 4x, czytający odnosi mylne wrażenie, że PICe to ślimaki 🙂

A tutaj tylko chodzi o to, że PICe mają bardziej rozbudowane systemy zegarowe, które umożliwiają bardzo duże kombinacje i w dodatku w czasie pracy, a nie tylko przez fusebity (to ważne i o tym warto wspomnieć w jednym z punktów).

Oczywiście rozumie, że opiszesz szczegółowo w dalszych częściach, ale ta pierwsza powinna pokazać właściwe informacje w punktach, ogólnie dla wszystkich rodzin, a nie tylko tych które PLL nie mają. Poza tym oferta Microchipa jest tak szeroka i zróżnicowana, że nie można ich bezpośrednio porównać z AVR bez patrzenia na to, że oprócz ATmega, są jeszcze ATtiny.

Dlatego uważam, że ten punkt powinieneś wykreślić, a zamiast niego napisać o możliwości zmiany zegara programowo, a nie fusebitami.

--------------

Ja korzystałem z datasheet który jest aktualnie na stronie tego mikrokontrolera: http://ww1.microchip.com/downloads/en/DeviceDoc/41262E.pdf

i tam jest to rozdział 14.3 Interrupts jak podałem wcześniej.

Link do komentarza
Share on other sites

Znaczy się fajnie że są takie uwagi, ja też nie jestem Alfą i Omegą, i nie biorę tego do siebie, przynajmniej da się dopracować artykuł.

Zmieniłem, ten wpis o taktowaniu, jest niby dalej w minusach, ale to dla tego ze stare rdzenie są nadal popularne i często stosowane, i tam faktycznie wydajność będzie nieco niższa.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Tak, właśnie klona PICkita2 chcę wykonać, schemat jest udostępniony przez producenta więc to nie problem. Dla mnie każda złotówka się liczy (a 100 zł to dla mnie mnóstwo pieniędzy).

Jeżeli się nie pogubiłem w gąszczu wypowiedzi, to chyba zbudowałeś, lub jesteś w fazie budowy kilku programatorów, bo nie spełniają one twoich oczekiwań. Teraz należało by zobaczyć ile cie to kosztowało sumarycznie, z wszystkimi kosztami, w tym ewentualnych przesyłek pocztą/kurierem jeżeli musiałeś coś kupować tą drogą. I teraz nie masz jak zaprogramować procesora do klona, więc albo ci zostaje dobry kumpel który ma jak, albo szukać kogoś kto ci taki zaprogramuje, znowu dodatkowe koszty. Z mojego doświadczenia wynika żę różnice w kosztach nie są aż takie wielkie, szczególnie jak ktoś mieszka na wsi i nie ma sklepu AVT, czy elektronicznego pod nosem.

Części jak tranzystory, rezystory, kondensatory mam na miejscu, więc ich nie kupuje. Po prostu próbowałem kilka schematów na COM, a te nie zadziałały. Wszystko robię na płytce stykowej, więc nic się nie marnuje.

Do dyskusji o wydajności - pisałem o starych rdzeniach 16f czy tam 18f. Nowsze oczywiście mają PLL i wyciągają po kilkadziesiąt MIPSów bijąc AVR na głowę, ale początkujący raczej nie zaczynają od nich.

Z drugiej strony stwierdzenie że ASM AVR w porównaniu do X86 (mam tu na myśli 8086 bo tym się bawiłem) jest prostszy, nieco zaprzecza twojej wypowiedzi. Bo akurat x86 jest lajtowy jak się rozumie specyfikę tej architektury, i tu właśnie jest cały haczyk z ASM, trzeba rozumieć architekturę danego CPU.

Nie wiem jak można x86 nazwać prostym 🙂 Architektura ma dobre kilkanaście lat i ciągnie ze sobą wszystkie swoje wady. Przykładowo dla avr, aby pisać w asmie to ustawiamy wektory przerwań (wystarczy sam reset), ustawienie adresu stosu - i już. A w x86? Gdyby ktoś chciał pisać wszystko od początku... powodzenia. Bios, konfiguracja sprzętu. No dobra, wracając nawet do samego procesora, to mamy dziwny, przestarzały tryb rzeczywisty, którego się wogóle nie używa (nie wmawiajcie mi, że używacie DOSa na desktopie 🙂 + kilka innych trybów (teraz jest to rzeczywisty, chroniony, "long mode", "unreal mode"), skomplikowany sposób zarządzania pamięcią i sprzętem (ISA, PCI, USB, PCI-e, AGP, etc etc, samemu nie jesteśmy w stanie tego oprogramować), stronicowanie, segmentacja (która też nie jest wykorzystywana), różne inne rzeczy, które istnieją, a się ich nie używa, bo robi się inaczej (jak TSS, do wielowątkowości), mnóstwo rozszerzeń jak SSE (którego jest już kilka wydać) i innych tego typu. Ogarnięcie tego wszystkiego jest nie możliwe. Podręczniki Intela mają po kilka tysięcy stron rozbite na tomy. Programowanie w konkretnym systemie jak Windows w assemblerze też nie ma za bardzo sensu, bo i tak cały czas odwołujemy się do zewnętrznych bibliotek i syscalli.

Nie chcę wywołać żadnej wojny 🙂

Czekam na kolejne części tutoriala o PICach.

Link do komentarza
Share on other sites

Do dyskusji o wydajności - pisałem o starych rdzeniach 16f czy tam 18f. Nowsze oczywiście mają PLL i wyciągają po kilkadziesiąt MIPSów bijąc AVR na głowę, ale początkujący raczej nie zaczynają od nich.

18f mają PLL.

Link do komentarza
Share on other sites

Do dyskusji o wydajności - pisałem o starych rdzeniach 16f czy tam 18f. Nowsze oczywiście mają PLL i wyciągają po kilkadziesiąt MIPSów bijąc AVR na głowę, ale początkujący raczej nie zaczynają od nich.

18f mają PLL.

Przepraszam, mój błąd, nie doczytałem. Chodziło mi bardziej o porówanie starszych piców z nowszymi 16bitowymi czy dspicami.

Link do komentarza
Share on other sites

Ale dyskusja się rozpętała...

Kompletnie nie znam się na PICach a z tego artykułu widzę, że dobór właściwego AVRka do określonego zadania wygląda na o wiele prostszy niż wybór PICa.

Nie mówię tutaj o wyborze typu: ATtiny2313 bo w miarę najprostszy lub ATmega8 bo najpopularniejsza,
tylko o trochę bardziej zaawansowanym wyborze procka.

Może wystraszyło mnie to, że PICów nie znam a AVRków używam prawie codziennie.

Jedno sprostowanie do pierwszego komentarza:

i coś, czego nie uświadczyłem u rodziny AVR - czyli debugger.

AVRstudio ma zarówno symulator - uważam, że mało praktyczny

ale tą samą funkcjonalnością, mając programator z dW lub JTAG, można odpalić debugowanie sprzętowe

co już jest na prawdę świetnym rozwiązaniem.

Najprostszy programator umożliwiający taką zabawę to dragon (koszt ok 240zł)

więc narzędzia są, nie należą do najtańszych, ale i tak jak na twór Atmela to jest tanio (oryginalny USB ISP mkII kosztuje prawie 200zł więc dodanie tych ok 50 zł kategorycznie zmienia komfort pracy)

Z tym, że dragon współpracuje TYLKO I WYŁĄCZNIE z układami zasilanymi napięciem 5V!

Pozdrawiam

Zuk

Link do komentarza
Share on other sites

Przepraszam, mój błąd, nie doczytałem. Chodziło mi bardziej o porówanie starszych piców z nowszymi 16bitowymi czy dspicami.

PICe są tak różne i jest ich tak wiele, że trudno znać je wszystkie na pamięć 🙂

Kompletnie nie znam się na PICach a z tego artykułu widzę, że dobór właściwego AVRka do określonego zadania wygląda na o wiele prostszy niż wybór PICa.

Tak, wysiłek z doborem PIC jest większy. Ale wynagradza to cena mikrokontrolera oraz jego parametry, co łącznie pozwala osiągnąć cel za najmniejsze możliwe pieniądze i na to zwrócił uwagę BlackJack już w pierwszym punkcie zalet.

Ale jeżeli nie ma parcia na najniższą cenę, to dobór PIC jest równie łatwy jak AVR.

Link do komentarza
Share on other sites

co do programowania to polecam brenner8p Do którego należy najpierw użyć ART2003, bądź pod com - jdm 2. Oba z opisami na mojej stronie www w publikacjach > programatory 😉

Link do komentarza
Share on other sites

Nie rozumiem dlaczego napisałeś że 32-bitowe procesory microchip sa raczej dla zaawansowanych. Moim zdaniem wręcz przeciwnie. Są to jedyne procesory tej firmy które wspiera kompilator C++. Są to też jedyne procesory 32 bitowe na rynku które są w obudowie DIP, co ułatwia ich prototypowanie na płytkach.

Główna zaletą tych procesorów jest stabilne, świetne środowisko IDE MPLAB X, którego prawdopodobnie nie możesz używać z programatorem który masz (PICKit2). Co wiecej microchip udostępnia mnóstwo darmowych bibliotek. To są rzeczy które każdy programista doceni, a na które często elektronicy nie zwracają uwagę. Nie zniechęcałbym nikogo przed uzywaniem PICKit3.

Procesory 32-bitowe jak i te 16-bitowe microchipa są idealne dla hobbystów. Jedyny minus na który trzeba szczególnie zwrócić uwagę to kompilator który nie tylko nie optymalizuje (nie ma żadnej "standardowej" optymalizacji, jak to opisałeś), ale nawet jakbys poczytał posty na angielskojęzycznych forach to deoptymalizuje.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.