Programowanie PIC – pierwsze problemy

Same procesorki PIC nie są najgorsze, mimo że nie wyróżniają się jakoś specjalnie od AVR. Dużo więcej problemów sprawia natomiast środowisko programistyczne. Zainstalowałem MPLAB X IDE v.1.85 wraz z kompilatorem C XC8 (v 1.20).
Ogólnie w porównaniu do AVR jest dużo gorzej. Kompilator w wersji darmowej nie pozwala wybrać optymalizacji, co oznacza że:
1) Nasz kod wynikowy będzie prawdopodobnie dużo za duży;
2) Nie wiemy, czy poprawnie zachowywać się będą funkcje typu “delay()”;

Kolejny problem: brak jednoznaczności. Wiele przykładowych kodów znalezionych w internecie nie zadziała. Brak “typowych” bibliotek jak inttypes.h, lub delay.h. Brzmi to może śmiesznie, ale uruchamiając pierwszy program typu “Hello World” migający diodą, brakuje takich funkcji.

Napotkałem dziwne problemy z ustawianiem bitów. Wydają się nie działać kody tego typu:

T2CON |= (1<<TMR2ON)|(1<<T2CKPS1);

, natomiast kod taki:

T2CON = 0x06;

już tak. O co chodzi?
Nie spodziewałem się, że będzie można wykonywać operacje na pojedynczych bitach. Tymczasem taki zapis jest poprawny:

TMR2ON =1;

Zauważyłem, że niektóre rejestry (dokładnie np. STRA) nie zerują się po resecie.

Nie mogę się też połapać, jak ustawiać w programie bity konfiguracyjne procesora. Można znaleźć trzy składnie.
Pierwsza:

#FUSES NOWDT

Druga:

#pragma config WDTEN  = OFF

I trzecia:

__config    _WDT_OFF

Której używać?

Jeśli macie sugestie, jak rozwiązać moje problemy, proszę piszcie w komentarzach.

Jedna myśl w temacie “Programowanie PIC – pierwsze problemy”

  1. 0. Problemy z programami wynikają z tego, że wiele programów w sieci było napisanych w starym środowisku MP LAB, na stary kompilator C.
    1. Operacje na bitach są zupełnie normalne dla chyba wszystkich rodzin PIC. Polecam zapoznać się z plikiem definicji dla choćby jednego uC i będziesz widział jak łatwo z tego korzystać.
    2. Delay… na co to komu? W normalnym programie nie ma żadnych takich funkcji.
    3. Configi w MPLAB X załatwia się dość łatwo.
    – otwórz dowolny szablon projektu
    – na samej górze pliku main.c powinna być informacja jak uruchomić narzędzie konfiguracyjne (Window -> Configuration Bits) czy jakoś tak 😉
    – w oknie wybierasz sobie opcje, które są dość dokładnie opisane
    – klikasz generuj kod
    – wygenerowany kod możesz zapisać w pliku i dołączyć do programu jako include’a (.h) lub ten samo kod możesz wkleić do pliku main przez Ctrl C/Ctrl V
    4. Owszem uC PIC wyróżniają się pod wieloma względami jeśli porównasz je z AVR. O ile rdzeń jest archaiczny i stos mikroskopijny, to niektóre peryferia są dużo lepsze niż w AVR. Nie mam doświadczenia z PIC 8-bit, ponieważ pracowałem tylko z 16-bitowymi, ale obwody analogowe (OpAmp), oszczędność energii, bramkowane liczniki (jak w ’51) czy bardzo elastyczne remapowanie funkcji na pinach to jest coś czego w AVR nie znajdziesz.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.