Popularny post BlackJack Napisano Styczeń 3, 2012 Popularny post Udostępnij Napisano Styczeń 3, 2012 Mikrokontroler RISC rodziny PIC wykonany w technologi NMOS czyli PIC1650 powstał w odziele Microelectronics Division firmy General Instruments w 1982 roku. Oddział ten w 1987 został przekształcony w firmę Microchip i do dziś procesory te maja w nazwie PIC (od Programmable Interface Concroller). Jak widać PICi są dosyć leciwą rodziną bo mają 30lat. Ale spokojnie, przez te lata rozwijano ich konstrukcję i dzisiaj mamy dostępne układy 8,16 a nawet 32-bitowe, a firma ciągle kombinuje co tu jeszcze dodać do nich. W tym roku prawdopodobnie Microchip, zaserwuje nam kolejną rewolucję w 8-bitowacach, bo na półki sklepowe trafią nowe odmiany PICów z CLC (Configurable Logic Cell), czyli prostymi PLD na portach, co nieźle zamiesza nie tylko na rynku 8-bitowców. Procesory te mogą także okazać się niezłą propozycją dla weteranów, bo rdzeń 8-bitowych PICów, łudząco przypomina kultowy 6502, znany z C64, tutaj też mamy tylko jeden rejestr roboczy. Dla czego PIC ? Dla czego warto się zainteresować się tą rodziną mikrokontrolerów ? ➕ Pierwszym godnym zauważenia ich atutem jest cena, która jest bardzo atrakcyjna w porównaniu do AVRów, w niektórych przypadkach nawet niższa. Można także zdobyć darmowe sample. ➕ Drugi ważny argument to ogromny wybór MCU, o różnych możliwościach, od najprostszych 6 końcówkowych PIC10, przez PIC16 i 18, 16-bitowe PIC24 oraz DSPIC30 i 33, skończywszy na 32-bitowych PIC32 o wydajności rdzenia ok. 1,56MIPS/MHz. Obecnie do wyboru jest chyba dobrze ponad 200 rożnych układów i przybywa ich. ➕ Trzecim i chyba najważniejszym dla początkujących argumentem za jest fakt że PICa nie da się zablokować bitami konfiguracyjnymi tak jak AVRa, a standardowy programator jest tak uniwersalnym narzędziem że nawet jakby (w przypadku wyłączenia sobie programowania niskim napięciem), to można sobie nim odblokować procesor. Wiec największa wada AVRów, tutaj po prostu nie istnieje. ➕ Czwarty argument za, to fakt że niektóre PICi posiadają udogodnienia których ciężko byłoby szukać w AVRach, jak np. sprzętowy moduł do obsługi enkoderów, czy PSP które pozwala podpiąć większe PICi bezpośrednio pod 8-bitowa magistralę komputerową. Dodatkowo prawdopodobnie w tym roku w sklepach ujrzymy nowe procesory z modułami CLC „Configurable Logic Cell”, czyli prostym PLD na portach I/O które pozwoli na jeszcze większą swobodę projektowania. ➕ Piąty argument, to bardzo prosty asembler, bo najprostsze 8-bitowe PICi mają zaledwie 35 instrukcji, których łatwo się nauczyć Ale jak to bywa w życiu PICi nie są także pozbawione wad. ➖ Małe wsparcie w naszym języku. Literatura niby jest, ale skupia się na 2-3 oklepanych CPU i to w dodatku nie najnowszych ani też najciekawszych, i jest raczej pisana dla średnio zaawansowanych użytkowników, którzy już mieli jakiś styk mikrokontrolerami choćby AVR i C. ➖ Nie ma zasadniczo darmowego środowiska programowania poza asemblerem, a bezpłatne wersje kompilatorów C nie pozwalają włączyć innej optymalizacji kodu niż standardowa. O ile sam asembler pod kątem instrukcji do zapamiętania jest prosty, to specyficzna architektura pamięci RAM, nieco utrudnia początki. ➖ Noty katalogowe Microchipa mają bardzo nierówny poziom, i wymagają czytania od deski do deski, bo często istotne informacje o jednym module są porozrzucane po całym dokumencie, co często utrudnia początki. ➖ Starsze wersje 8-bitowych rdzeni mają nieco mniejszą wydajność przy tym samym taktowaniu od AVRów. Wynika to z tego ze cykl maszynowy, trwa 4 takty zegara, w nowszych procesorach system zegarowy jest bardziej rozbudowany i posiada PLL z powielaczem x4 lub x5 co niweluje tę wadę. ➖ 8-bitowe procesory nie posiadają instrukcji mnożenia i dzielenia, pewnym wyjątkiem są PICi18 które potrafią mnożyć, ale w innych przypadkach trzeba sobie pisać samemu procedury mnożenia i dzielenia, jeżeli piszemy w asemblerze. Jak widać balans wad i zalet kształtuje się tak pół na pół, ale jak zdecydujemy się na programowanie w C, odpada nam minus 5. Minus 4 właściwie w większości przypadków ma znaczenie czysto psychologiczne, tylko w zaawansowanych projektach może dać się w znaki, ale i tam zawsze można się przerzucić na mocniejsze 16-bitowe PIC24. Co do ➖ 2, to wystarcza wybierać MCU z większej pamięci programu FLASH i właściwie też po kłopocie. Ogólny przegląd mikroprocesorów PIC. Procesory 8-bitowe. PIC10Fxxxx - najmniejsze oferowane przez Microchip procesory w 6 końcówkowych obudowach SOT-23 lub PDIP8. Mają też najmniejsze możliwości., oraz najmniej modułów takich jak Timery. Ich główne przeznaczenie to bardzo proste aplikacje. PIC12Fxxxx - procesory tej rodziny były pierwszymi w 8 końcówkowej obudowie procesorami na świecie. Obecnie rodzina PIC12 jest bardziej rozbudowana i obejmuje także parę układów w obudowach 14 końcówkowych. Nowsze modele są znacznie lepiej wyposażone np. PIC12F1840 posiada sprzętowy moduł DSM (Data Signal Modulator), pozwalający sprzętowo modulować strumień danych w standardach OOK, FSK i PSK. PIC16Fxxxx - chyba najbardziej rozbudowana rodzina PICów, bo jest w niej ponad 140 układów, o różnych możliwościach i wielkości od 14 końcówkowych do 100. Można tutaj znaleźć procesory tradycyjne o niezbyt wygórowanych możliwościach jak i nowsze odsłony w technologi nazywanej przez Microchip XLP (eXtreme Low Power) które posiadają wiele rozbudowanych modułów sprzętowych. PIC18Fxxxx - to linia rozwojowa PICów16 w której rozbudowano rdzeń. Posiada 83 instrukcje, oraz sprzętową jednostkę mnożącą. Pamięć programu może wynosić nawet do 2MB. Są to najbardziej rozbudowane 8-bitowe CPU. Oferowane przez Microchipa. Na koniec chciałbym także wspomnieć może nie otyle rodzinie co kilku układach niestandardowych pod kodem PIC14000. Szczerze to nie wiem czy są dzisiaj jeszcze produkowane, ale warto wiedzieć że takie układy istniały, a różniły się tym od innych że miały szybki 16-bitowy przetwornik ADC. Procesory - 16bitowe Tutaj sytuacja jest nieco bardziej klarowna niż w przypadku 8-bitowych procesorów bo podział jest w miarę jednolity i różne rodziny nie przenikają się nawzajem jak to jest przy 8-bitowych MCU, co znacznie uprasza ich opisanie. Dosyć dobrze ten podział oddaje rysunek z strony Mikrochipa. PIC24Fxxxx - 16-bitowe procesory wykonane w technologi XLP. Ich wydajność sięga do 16MIPS. Posiadają do 96KB RAMu, zintegrowane układy USB-OTG, sterowniki graficzne, RTCC oraz kompletne peryferia do sterowania silnikami. PIC24H/Exxxx - to bardziej rozbudowane PICi24, o mocy obliczeniowej do 70MIPS, które wyposażono w szybsze przetworniki ADC, kontroler DMA i bardziej zaawansowane peryferia jak port CAN, czy wzmacniacze operacyjne dla obwodów kontrolno pomiarowych sterowników silników. mają także rozszerzony zakres temperatur pracy do 150°C. DSPIC30Fxxxx - są to właściwie bardziej rozbudowane PICi24, które wyposażono w 40 bitowy kooprocesor DSP i interfejs Audio. Ich moc obliczeniowa to do 30MIPSów. DSPIC33Fxxxx - bardziej rozbudowane DSPIC30 o mocy obliczeniowej do 70MIPS. Mają także bardziej rozbudowane peryferia podobnie jak PIC24H i rozszerzony zakres temperatury pracy. Procesory 32-bitowe PIC32 Na wstępie chciałbym poruszyć ważną kwestię w przypadku PIC32, otóż Microchip nie oparł ich o własny rdzeń, tylko kupił licencje na rdzeń M4K® firmy Mips Technologies i obudował peryferiami znanymi z PICów. Dla tego mimo iż w nazwie nadal noszą PIC, to nie jest to już klasyczny rdzeń PIC. To czego możemy się spodziewać po tych CPU, można właściwie wyczytać z rysunku wyżej, ale dla formalności. - 1,56DMIPS/MHz przy zegarze do 80MHz. - do 512KB pamięci programu - do 128KB RAMu - do 8 kanałów DMA - Full speed USB - 10/100Mb Ethernet - do 2 portów CAN 2.0 - do 6 USART, 5 I²C, 4 SPI, CTMU i I²S. No i co chyba jest ewenementem czyli najmniejszy procesor w obudowie PDIP28. Lecz są to procesory dla raczej zaawansowanych użytkowników. Podsumowanie Mam nadzieje że udało mi się trochę przybliżyć procesory PIC firmy Microchip. Artykuł co prawda jest dosyć ogólnikowy, ale gdybym chciał dokładne opisać wszystkie rodziny i wyjaśnić galinatjas wśród 8-bitowych PICów to napisałbym bym książkę. W następnej części artykułu przyjrzymy się PICkom 8- bitowym ponieważ od nich w sumie najlepiej zaczynać, od strony kosztów, potrzebnych do pracy narzędzi, pinologi, tego jak szukać właściwego dla siebie CPU w gąszczu setek układów, oraz spróbujemy znaleźć wśród PIC16F zamienniki dla popularnych AVRów czyli ATTiny2313 i ATMegi8. 5 Link do komentarza Share on other sites More sharing options...
Kubx Styczeń 4, 2012 Udostępnij Styczeń 4, 2012 Witam Cieszę się, że ktoś porusza temat PICów. Mikrokontrolery o takich samych jak nie większych możliwościach jak AVRki. Jest tylko jedna - według mnie - duża wada. Programator. O ile do AVR wystarczy prosty kabelek na LPT, który zawsze działa lub sprawdzone usbasp, to z picami nadal się męczę jeżeli chodzi o zaprogramowanie. Większość tanich programatorów opartych jest na port COM i napięcia panujące na nim. Potrzeba śmiesznego napięcia 12,7 v (bodajże) na linii MCLR, aby wprowadzić uC w stan programowania. Chciałem wykonać klona PICkita2, aby mieć spokój, gwarancję działania i coś, czego nie uświadczyłem u rodziny AVR - czyli debugger. Ale cały czas męczę się z zaprogramowaniem uc (ten, który jest w programatorze - podobna sytuacja jak w USBASP). Możesz polecić jakiś prosty, ale sprawdzony programator (lpt lub com)? Link do komentarza Share on other sites More sharing options...
TurlacZ Styczeń 4, 2012 Udostępnij Styczeń 4, 2012 Całkiem ciekawy opis, czekam na kolejne części. Łap piwo 😉 Link do komentarza Share on other sites More sharing options...
BlackJack Styczeń 4, 2012 Autor tematu Udostępnij Styczeń 4, 2012 Możesz polecić jakiś prosty, ale sprawdzony programator (lpt lub com)? Odpowiedz, na twoje pytanie po części znajdzie się w 2 części artykułu (na razie w edycji), gdzie zrobiłem taki mały przegląd rynku i cen. Przy czym oryginalny sam PIC kit2 to chyba niecałe 130zł. Co do problemów z programowaniem to sprawdź sobie czy twój procesor nie ma przypadkiem trybu LVP (Low Volotage Programing) wtedy nie trzeba tych upierdliwych 12V do programowania, ale trzeba poświecić jeden dodatkowy pin CPU. Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
GAndaLF Styczeń 4, 2012 Udostępnij Styczeń 4, 2012 jeżeli chodzi o amatorski programator piców to najlepszym wyborem jest chyba brenner: http://www.sprut.de/electronic/pic/projekte/brenner8mini/index.htm Posiada on tylko 2 wady. Po pierwsze cała dokumentacja jest po niemiecku, a po drugie na znajdujący się w nim procek trzeba jakoś wgrać wsad. Najlepiej chyba wykorzystać do tego jakiegoś kolegę który już ma programator. Link do komentarza Share on other sites More sharing options...
Grzesieq94 Styczeń 4, 2012 Udostępnij Styczeń 4, 2012 Ostatnio na http://www.hackaday.com albo http://www.dangerousprototypes.com widziałem programator PICów na Atmedze 🙂 Zaraz poszukam, jak znajdę to wrzucę... Nie wiem czy zaprogramujesz tym wszystkie PICi bo nie czytałem dokładnie tego artykułu, ale proszę: http://hackaday.com/2011/12/25/using-an-atmega8-to-program-pic24fj-chips/ może się komuś przyda... Link do komentarza Share on other sites More sharing options...
BlackJack Styczeń 4, 2012 Autor tematu Udostępnij Styczeń 4, 2012 Najprostszym jest chyba Si-prog na RS232, który pozwala zasilać się z zewnetrznego źródła. http://www.lancos.com/siprogsch.html. Współpracuje z PonyProg 2000. PS. Im bardziej przeglądam schematy alternatywnych programatorów/klonów tym więcej mam wątpliwości czy warto się w to bawić. Sam PICKKIT2 to koszt 118 zł + vat, zestaw z płytką demonstracyjną 139zł +vat. Ja osobiście po przygodach z programatorami dla AVR startując do PICów, powiedziałem sobie, lepiej odłożyć więcej i mieć porządny programator, niż bawić się sklecanie samemu programatora, co wątpię aby wyszło mnie taniej niż gotowy produkt. Link do komentarza Share on other sites More sharing options...
piotreks-89 Styczeń 4, 2012 Udostępnij Styczeń 4, 2012 BlackJack bardzo dobry artykuł, ale szczerze mówiąc liczyłem na coś o programowaniu PIC-ów 😉 Wiem, że będzie w następnych częściach, ale narobiłeś mi takiego apetytu 🤣 Mam SiProga i wcale nie trzeba zasilać go z zewnętrznego źródła. Mój zasila się sam z portu RS232. Co prawda kupiłem go, ale za 7zł na znanym portalu aukcyjnym 😉 Mankament jest jeden - układ docelowy trzeba zasilać już napięciem zewnętrznym - z programatorem jest tylko wspólna masa. Link do komentarza Share on other sites More sharing options...
OldSkull Styczeń 4, 2012 Udostępnij Styczeń 4, 2012 Chciałem wykonać klona PICkita2, aby mieć spokój, gwarancję działania i coś, czego nie uświadczyłem u rodziny AVR - czyli debugger. Hmmm? AVRStudio ma nie dość, że debuggowanie to jeszcze symulator (genialna rzecz). JTAG do AVRów można albo samemu tanim kosztem wykonać (ATmega16+rezystory+FT232+ew. bufor, w sumie koszt 30zł+płytka) albo kupić za około 90zł. Z tego co widzę, PICi i AVRy to jedyne mikrokontrolery o szerokim zakresie napięć zasilania. Miłe 🙂 Link do komentarza Share on other sites More sharing options...
Kubx Styczeń 4, 2012 Udostępnij Styczeń 4, 2012 Chciałem wykonać klona PICkita2, aby mieć spokój, gwarancję działania i coś, czego nie uświadczyłem u rodziny AVR - czyli debugger. Hmmm? AVRStudio ma nie dość, że debuggowanie to jeszcze symulator (genialna rzecz). JTAG do AVRów można albo samemu tanim kosztem wykonać (ATmega16+rezystory+FT232+ew. bufor, w sumie koszt 30zł+płytka) albo kupić za około 90zł. Z tego co widzę, PICi i AVRy to jedyne mikrokontrolery o szerokim zakresie napięć zasilania. Miłe 🙂 Tak, symulator jest świetny, sam ostatnio go używałem do projektu w asmie. Ale wracając do debbugera. Popularna ATMega8 nie zna takiego słowa, uc z serii Attiny mają DebugWire, ale ten nie jest udokumentowany, więc trzeba kupić drogi programator. Zostaje Atmega16/32 ze swoim JTAGiem - faktycznie, fajne rozwiązanie. Ale porównując to z PICami to wygląda marnie. Tam można debugować praktycznie każdy mikrokontroler i to dodatkowo przez ten sam interfejs (lista dla pickit2, pickit3 ma jeszcze większą: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en027813 ). Możesz polecić jakiś prosty, ale sprawdzony programator (lpt lub com)? Odpowiedz, na twoje pytanie po części znajdzie się w 2 części artykułu (na razie w edycji), gdzie zrobiłem taki mały przegląd rynku i cen. Przy czym oryginalny sam PIC kit2 to chyba niecałe 130zł. Co do problemów z programowaniem to sprawdź sobie czy twój procesor nie ma przypadkiem trybu LVP (Low Volotage Programing) wtedy nie trzeba tych upierdliwych 12V do programowania, ale trzeba poświecić jeden dodatkowy pin CPU. 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). Dla porównania USBaspa można zrobić kosztem <20zł. Tutaj myślę, że da się zmieścić w 50zł (a posiadając sampla jeszcze taniej). Ale muszę jakoś zaprogramować pic18f2550, który jest sercem tego układu. Nie wiem czy zaprogramujesz tym wszystkie PICi bo nie czytałem dokładnie tego artykułu, ale proszę: http://hackaday.com/2011/12/25/using-an-atmega8-to-program-pic24fj-chips/ może się komuś przyda... Dzięki! Znając życie, to takie kryzysowe rozwiązanie zadziała niebo lepiej, niż te kiczowate klony JDM 😉 Co prawda mam do zaprogramowania procek z rodziny 18f, ale może ruszy. W weekend spróbuje i zdam raport 🙂 Link do komentarza Share on other sites More sharing options...
OldSkull Styczeń 4, 2012 Udostępnij Styczeń 4, 2012 Nie będę się spierał o to co lepsze - PICit3 kosztuje tyle co AVRDragon (przynajmniej w Polsce, więc koszt jest zbliżony, chociaż rzeczywiście Atmel jest drogi - dość dziwne podejście, bo zyski z narzędzi są na pewno niewielkie w stosunku do zysków z produkcji, a potrafią zniechęcić ludzi do siebie, a potem Ci ludzie trafiają do firm i uczestniczą w wyborze sprzętu. Każdy układ ma w sobie coś ciekawego. Mają mniejszą wydajność w porównaniu do AVRów, jest ona ok. 4x mniejsza przy tym samym taktowaniu. Ale jak wygląda porównanie jeśli weźmiemy pod uwagę wydajność właśnie w szybkości wykonywania porównywalnego kodu? Noty katalogowe Microchipa mają bardzo nierówny poziom, i wymagają czytania od deski do deski, bo często istotne informacje o jednym module są porozrzucane po całym dokumencie, lub ich tam po prostu nie ma ? Np. opisu systemu przerwań w nocie PIC16F690. Do jakich innych not byś je porównał? Z własnego doświadczenia powiem, że Atmel ma świetne noty (chociaż AVR32 już są sporo gorsze niż starszych układów), podobnie NXP (przynajmniej dla LPC2000), natomiast STM ma bardzo słabe noty. Link do komentarza Share on other sites More sharing options...
Kubx Styczeń 4, 2012 Udostępnij Styczeń 4, 2012 Mają mniejszą wydajność w porównaniu do AVRów, jest ona ok. 4x mniejsza przy tym samym taktowaniu. Ale jak wygląda porównanie jeśli weźmiemy pod uwagę wydajność właśnie w szybkości wykonywania porównywalnego kodu? Chodzi o architekturę. Na 4 cykle zegara przypada jedna instrukcja. Dla AVRków na jeden cykl przypada jedna instrukcja. Czyli w teorii AVR są 4 razy szybsze. Ale to tylko teoria, bo nie każda instrukcja wykona się jeden cykl, bardziej zaawansowane zajmują nawet po 3 cykle (dla AVR). Nie wiem jak to wygląda w nowszych PICach. ➕ 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 nich zajmuje odmiana instrukcji BRANCH/JUMP (jak zwał tak zwał) takiej jak breq, brle, brsh (po kolei: Branch if equal, branch if less or equal, branch if same or higher), których nie trzeba się uczyć, a używamy po prostu tej której potrzebujemy. Drugą trzecią z nich zajmują instrukcje operacji na pamięci czyli odmiany instrukcji Load i Store. Różnią się wykorzystywanym rejestrem adresowym (przykładowo LD Rd, X i LD Rd, Y są zapisane jako 2 oddzielne instrukcje mimo, iż robią to samo). Pozostała część instrukcji to instrukcje operacji na rejestrach (arytmetyczne, logiczne), przenoszenia, operacje na bitach, porównywanie. 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). Link do komentarza Share on other sites More sharing options...
dondu Styczeń 5, 2012 Udostępnij Styczeń 5, 2012 Drobne uwagi: PORÓWNYWALNA WYDAJNOŚĆ PIC vs AVR Mają mniejszą wydajność w porównaniu do AVRów, jest ona ok. 4x mniejsza przy tym samym taktowaniu. Chodzi o architekturę. Na 4 cykle zegara przypada jedna instrukcja. Dla AVRków na jeden cykl przypada jedna instrukcja. Czyli w teorii AVR są 4 razy szybsze. AVRy nie są 4x szybsze od PICów, ponieważ większość PICów posiada wewnętrzne układy PLL pozwalające zwielokrotnić częstotliwość pracy 4x. Innymi słowy Atmega 16MHz i PIC 16MHz (16MHz x 4 PLL / 4 takty na rozkaz = 16MHz), pracują z taką samą prędkością 16MHz. Drobne różnice wynikać mogą z różnej realizacji poszczególnych rozkazów, ale to nie ma znaczenia dla 99,9% projektów. W zależności od typu jest to bardzo różnie rozwiązane, więc trzeba dobrze sprawdzić w datasheet. PICKIT 2 vs PICKIT 3 A propos PICKIT 3 - rok temu w Farnellu kupiłem go za 178zł. Nie kupowałem PICKIT 2 ponieważ Microchip oficjalnie oświadczył, nowe układy PIC będą wspierane już tylko przez PICKIT 3. PRZERWANIA Gdy wziąłem do ręki perwszy datasheet PICa mając przyzwyczajenia z datasheet i struktury AVRów, straciłem mnóstwo czasu na zrozumienie PICów i ich datasheetów. Ale gdy już poznałem sposób podejścia Microchipa do swoich mikrokontrolerów i pisania datasheetów, to takich problemów już nie mam: Noty katalogowe Microchipa mają bardzo nierówny poziom, i wymagają czytania od deski do deski, bo często istotne informacje o jednym module są porozrzucane po całym dokumencie, lub ich tam po prostu nie ma ? Np. opisu systemu przerwań w nocie PIC16F690. W datasheet PIC16F690 o którym piszesz, jest rozdział : 14.3 Interrupts Od siebie dodam: Istotną różnicą w przypadku przerwań, jest to, że nie mają tak zorganizowanych i rozbudowanych wektorów i priorytetów przerwań jak AVRy. We wspólnej funkcji przerwania trzeba sprawdzać, co wywołało przerwanie i natychmiast zgasić jego flagę. To wada i zaleta jednocześnie, ponieważ daje nam możliwość ustalania prawie dowolnych kolejności priorytetów: interrupt isr() { //*** RTCC ****************************** //przerwanie if(PIR3bits.RTCCIF){ PIR3bits.RTCCIF = 0; //zgaś flagę przerwania RTCC_interrupt(); } //*** Timer1 przepełnienie ****************************** if(PIR1bits.TMR1IF){ PIR1bits.TMR1IF = 0; //zgaś flagę przerwania jakas_funkcja(); } //*** Timer0 ****************************** //przerwanie od przepełnienia TIMER0 if(INTCONbits.TMR0IF){ INTCONbits.TMR0IF = 0; //zgaś flagę przerwania jakas_funkcja_2(); } //*** TimerOkres - CCP7 compare ****************************** if(PIR4bits.CCP7IF){ PIR4bits.CCP7IF = 0; //zgaś flagę przerwania MB_skanowanie(); } // ... i tak dalej } Link do komentarza Share on other sites More sharing options...
grabo Styczeń 5, 2012 Udostępnij Styczeń 5, 2012 Z tą wydajnością to jest różnie... Dla przykładu: PIC16F628A - 4 cykle zegara na instrukcję PIC16F1847 - 4 cykle zegara na instrukcję, pętla PLL dsPIC33FJ64MC204 - 1 cykl zegara na instrukcję, PLL, ale ma sprzętowy dzielnik Fosc/2, czyli częstotliwość dla CPU i peryferiów to połowa częstotliwości oscylatora Dodatkowo tak jak wspomniał dondu, można użyć PLL i uzyskać wyższe taktowanie niż dołączony oscylator. Nie można wrzucić wszystkich PICów do jednego worka, poszczególne rodziny znacznie różnią się od siebie! Mimo że najnowsze układy są obsługiwane tylko przez PICkit3, to jakoś bardziej przypadł mi do gustu PICkit2, głownie ze względu na dodatkowe oprogramowanie. Oprócz standardowej funkcjonalności jako programator i debugger, PICkit2 może służyć jako analizator logiczny i UART! Programowanie i odczyt pamięci EEPROM I2C też nie są dla niego problemem. Jest nawet solucja, dzięki której wykrywany jest jako AVRISP i można nim programować mikrokotrolery AVR http://pickit2.isgreat.org/ Link do komentarza Share on other sites More sharing options...
dondu Styczeń 5, 2012 Udostępnij Styczeń 5, 2012 O widzisz ... nawet nie wiedziałem, że są też jednotaktowce, co potwierdza to, na co razem zwracamy uwagę, czyli że trzeba czytać datasheet dokładnie przed decyzją o wykorzystaniu danego mikrokontrolera. Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »