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.