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

16F690 - [MPLAB X][XC8] Rejestry, składnia - problemy na starcie

olelek 15 Sie 2013 13:59 2082 4
  • #1 15 Sie 2013 13:59
    olelek
    Poziom 24  

    Od wczoraj próbuję programować PIC-ie, po jakimś tam doświadczeniu z AVR. Wszystko w C. Mam kilka problemów po przesiadce:
    1. Zapis typu:

    Kod: c
    Zaloguj się, aby zobaczyć kod
    nie działa, natomiast taki:
    Kod: c
    Zaloguj się, aby zobaczyć kod
    tak. Dlaczego?

    2. Przy zabawie z PWM taktowanym poprzez Timer2, gdy ustawiłem bit STRA, nawet po resecie i przeprogramowaniu procesora był nadal ustawiony.

    3. Jak w kodzie programu zdefiniować konfigurację procesora? Chodzi o ustawienia typu "Oscillator Selection bits", "Watchdog Timer Enable bit".

    4. Jak realizować opóźnienia takie jak w AVR daje delay.h? Czy macie jakieś biblioteki? Może źle szukam?

    5. Brakuje mi także biblioteki inttypes.h

    6. Jak wygląda prawidłowy sposób podłączenia resetu? I czy będę mógł nadal programować PICa, gdy ustawię go jako zwykły pin I/O (a dokładniej tylko I)?

    Po tych pytaniach jedna rada dla zaczynających w tym temacie: jeśli masz wrażenie, że procek się restartuje, albo nie wykonuje całości programu, sprawdź czy wyłączyłeś Watchdoga.

    EDIT:
    AD3. Już wiem. Należy korzystać ze składni
    Kod: c
    Zaloguj się, aby zobaczyć kod
    do wygenerowania automatycznie w MPLAB (Window->PIC Memory Views->Configuration Bits). Wybieramy opcje i generujemy kod źródłowy. W moim przypadku:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    AD6. Zaryzykowałem, ustawiłem RESET jako zwykły pin i dalej działa, oraz da się programować. Fajniej niż w AVR.

    0 4
  • Pomocny post
    #2 16 Sie 2013 09:07
    solarstone
    Poziom 11  

    Ad 1:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    fragment pliku pic16f690.h w katalogu ...\xc8\v1.12\include
    polecam przejrzeć cały plik

    reasumując ustawiasz po prostu T2CONbits.TMR2ON = 1 lub TMR2ON = 1

    Ad 2:
    Widzę w dokumentacji procesora, że jest to domyślna wartość tego bitu

    Ad 4:
    przeczytaj 3.5.10 How Can I Implement a Delay in My Code? w dokumentacji kompilatora

    0
  • Pomocny post
    #3 16 Sie 2013 13:49
    94075
    Użytkownik usunął konto  
  • #4 18 Sie 2013 01:29
    olelek
    Poziom 24  

    Dziękuję za pomoc.
    Czyli rejestry są w postaci struktur... szkoda, bo kod nie będzie podobny do tego z AVR. Jakoś przeboleję. Dziękuję za wskazówki, gdzie szukać informacji. Funkcja __delay_ms() już działa (choć edytor podświetla jako błąd).
    Do dzisiaj udało mi się uruchomić chyba wszystkie "zabawki" na pokładzie PIC16F690, czyli UART, ADC, EEPROM, PWM.

    0
  • #5 18 Sie 2013 12:09
    94075
    Użytkownik usunął konto