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.

Hiteh-C i Pic24Fxxx Pytanie

mad81 04 Lip 2009 14:00 773 1
  • #1 04 Lip 2009 14:00
    mad81
    Poziom 11  

    Witam
    Od dość dawna pracuję na oprogramowaniu Hiteh-C lecz do tej pory tylko dla mikrokontrolerów z serii 16fxxx.

    W wersji dla 16Fxxx, aby ustawić jedynkę na porcie wystarczyło dać RB1 = 1; i nie zmieniało to stanu innych portów, lecz w PIC24fxxx zeruje cały port i ustawia tylko ten bit.

    Patrzyłem na budowę portu, spróbowałem innego podejścia, zamiast RB1 dałem LATB1 = 1; w efekcie prędkość reakcji jest 2x szybsza i nie zmienia stanu innych portów tylko czy nie jest to błędem ?

    Jeśli robię błąd to w jaki sposób to prawidłowo zrobić ?

    Pozdrawiam

    0 1
  • #2 05 Lip 2009 11:22
    K_o_n_r_a_d
    Poziom 23  

    Nie znam kompilatora Hiteh-C, ale...
    Polecenia modyfikujące bity rejestrów wykonywane są w sposób - odczyt, modyfikacja, zapis. Teraz patrząc na budowę portu widzimy, że odczyt rejestru PORTx daje nam aktualny stan portu (wymuszony przez port lub zewnętrznie) a odczyt rejestru LATx daje nam to co ustawiliśmy w tym rejestrze. Zapis rejestru PORTx i LATx niczym się nie różni.
    W PIC16 nie było rejestru LAT (w razie potrzeby można go stworzyć używając dodatkowej zmiennej).
    Wpisując całe słowo do rejestru nie ma znaczenia czy wpiszemy do PORTx czy LATx, ale modyfikując 1 bit lub kilka bitów za pomocą operacji matematycznych lub logicznych ma znaczenie.

    Chcąc np. migać diodą używany rejestru LATx.

    1