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

[PIC10F200] Kilka pytan.

03 Lip 2009 14:35 2289 1
  • Poziom 15  
    1. Dlaczego licznik programu ma szyne 9-10 bitow. Wystarczy mu 9 bitow do adresowania 512bajtow Flasha.

    The PIC10F200/204 devices have a 9-bit Program
    Counter (PC) capable of addressing a 512 x 12
    program memory space.
    Only the first 256 x 12 (0000h-00FFh) for the
    PIC10F200/204 are physically implemented (see
    Figure 4-1).
    -------
    The PIC10F202/206 devices have a 10-bit Program
    Counter (PC) capable of addressing a 1024 x 12
    program memory space.
    Only the first 512 x 12 (0000h-01FFh) for the
    PIC10F202/206 are physically implemented (see
    Figure 4-2).

    1 bit w obu przypadkach jest marnowany, dlaczego?



    [PIC10F200] Kilka pytan.

    2. Jak konkretnie dziala Instruction Reg i dlaczego 12 bitowa szyna rozdziela sie na 8(dane do alu) + 5 bitow (dane do adress mux).
    Rozkacz movlw b'00000000' sklada sie z:
    - 8 bitow danej liczbowej
    - 4 bitow rozkazu......

    Wiec powinno byc to rozdzielone na 8 + 4.
    A moze chodzi o to ze jak manipulujemy calymi bajtami to 5 bit jest potrzebny zeby zaadresowac ram?
    [PIC10F200] Kilka pytan.

    3. Dlaczego indirect adressing ma szyne od 5-7 bitow? (to co wychodzi z FSR register)

    4. Addr MUX - co tu jest dana wejsciowa a co jest adresem w tym multiplekserze?

    5. Jezeli mam 2 poziomy stosu to moge wywolac subroutine i w tym subroutine wywolac jeszcze jedno subroutine - tak jakby kolejny level, tak?
    6. Czy jak 3 raz wywalam subroutine to co sie stanie? Przeciez nie ma 3 miejsca w stosie.
    7. Czy w subroutine i zapelnionym stosie moge zaczac uzywac adresowana posredniego?
    8. Czy dane ze stosu moge odczytac? chyba nie jako ze nie maja adresu.......
    [PIC10F200] Kilka pytan.

    9.
    GPWUF: GPIO Reset bit
    1 = Reset due to wake-up from Sleep on pin change
    0 = After power-up or other Reset

    Czyli uC ustawi ten bit jesli reset byl spowodowany spaniem albo zboczem na pinie, i wyzerowany jesli dopiero co wlaczono uC lub nastapil inny reset. O, to po co ten pin ma mozliwosc byc zapisanym?

    10.
    CWUF: Comparator Wake-up on Change Flag bit(1)
    1 = Reset due to wake-up from Sleep on comparator change
    0 = After power-up or other Reset conditions.
    *This bit is used on the PIC10F204/206. For code compatibility do not use this bit on the PIC10F200/202.

    Tzn, ze mam status, cwuf wogole nie uzywac na 200/202 czy mam tam nie zapisywac danych?
    [PIC10F200] Kilka pytan.

    11. If TRIS bit is set to ‘0’, the wake-up on
    change and pull-up functions are disabled
    for that pin (i.e., note that TRIS overrides
    Option control of GPPU and GPWU).

    Czyli jezeli wszystkie Piny sa wyjsciami, to nie moge budzic procka zmiana na pinie ani go slabo podciagac. To jest zrozumiale. Ale czy wpisanie w tris samych 0 spowoduje ustawienie gpwu gppu na jedynki automatycznie? A co jesli wpisze tam 0 potem w tresci programu?
    [PIC10F200] Kilka pytan.

    12. OSCCAL - Erasing the device will also erase the preprogrammed
    internal calibration value for
    the internal oscillator. The calibration
    value must be read prior to erasing the
    part so it can be reprogrammed correctly
    later.

    Tzn jak mam to czytac? Programatorem czy moge w programie? Czy moge traktowac ten rejest jako rejestr ogolny (general purpose?) W koncu jest RW wiec readable writable.

    13. Program counter - nie rozumiem nic.
    [PIC10F200] Kilka pytan.

    Kilka cm wyzej napisalam ze PC jest o jeden bit za dlugi w kazdym przypadku, wobec tego 1 bit brakujacy z CALL nie powinien robic zadnej roznicy w adresowaniu.

    Dlaczego Call sie rozni od GOTO?

    14. The W register will be loaded with the literal
    value specified in the instruction. This
    is particularly useful for the implementation
    of the data look-up tables within the
    program memory.

    Nie rozumiem.
    To mam recznie robic tak:
    Movlw b'cos tam'
    movwf 0x20
    movlw b'cos tam2'
    movwf 0x21
    movlw b'cos tam3'
    movwf 0x22

    i to co jest w pamieci 0x20-0x22 to jest look up table zrobione przy pomocy W.

    Ok, a co to ma wspolnego ze stosem?

    15. There are no Status bits to indicate stack
    overflows or stack underflow conditions.

    Stack underflow?
    Jak to mozliwe?
    Jak wykonam return from subroutine i w stosie nie ma zadnego adresu? To jest underrun?

    16. Jaki to jest stos? FIFO? FILO?

    17. [PIC10F200] Kilka pytan.

    PIC10F200/202/204/206 – Do not use
    banking. FSR <7:5> are unimplemented
    and read as ‘1’s.

    A niby jak mam uzywac stronicowania jak w status nie ma nawet bitu RP0? A moze o czyms nie wiem? Moze tutaj da sie robic stronicowanie na jednym banaku pamieci?
  • Serwerowe OpowieściSerwerowe Opowieści
  • Poziom 27  
    AnnaWesolaLat23 napisał:
    1. Dlaczego licznik programu ma szyne 9-10 bitow. Wystarczy mu 9 bitow do adresowania 512bajtow Flasha.


    1 bit w obu przypadkach jest marnowany, dlaczego?

    Spytaj twórców. Prawdopodobnie tzw. "core" tych procesorów jest wspólne dla układów z większą liczba pamięci.

    2. Jak konkretnie dziala Instruction Reg i dlaczego 12 bitowa szyna rozdziela sie na 8(dane do alu) + 5 bitow (dane do adress mux).
    Rozkacz movlw b'00000000' sklada sie z:
    - 8 bitow danej liczbowej
    - 4 bitow rozkazu......

    Wiec powinno byc to rozdzielone na 8 + 4.
    A moze chodzi o to ze jak manipulujemy calymi bajtami to 5 bit jest potrzebny zeby zaadresowac ram?

    Nie rozumiem pytania.

    3. Dlaczego indirect adressing ma szyne od 5-7 bitow? (to co wychodzi z FSR register)

    Nie rozumiem pytania. Ale domyślam się, ze chodzi o bity <7:5> rejestru FSR, które służą do wskazania banku rejestrów, do którego się odwołujemy.

    4. Addr MUX - co tu jest dana wejsciowa a co jest adresem w tym multiplekserze?

    Jakiś schemat ?

    5. Jezeli mam 2 poziomy stosu to moge wywolac subroutine i w tym subroutine wywolac jeszcze jedno subroutine - tak jakby kolejny level, tak?

    Tak.
    6. Czy jak 3 raz wywalam subroutine to co sie stanie? Przeciez nie ma 3 miejsca w stosie.

    Nic. Zgubisz jeden adres powrotny. Program wróci "w maliny".

    7. Czy w subroutine i zapelnionym stosie moge zaczac uzywac adresowana posredniego?

    A co ma jedno do drugiego ?

    8. Czy dane ze stosu moge odczytac? chyba nie jako ze nie maja adresu.......

    Nie mozna. Jest to stos hardware'owy i nie ma do niego dostępu z poziomu instrukcji procesora.


    9.
    GPWUF: GPIO Reset bit
    1 = Reset due to wake-up from Sleep on pin change
    0 = After power-up or other Reset

    Czyli uC ustawi ten bit jesli reset byl spowodowany spaniem albo zboczem na pinie, i wyzerowany jesli dopiero co wlaczono uC lub nastapil inny reset. O, to po co ten pin ma mozliwosc byc zapisanym?

    Tego akurat nie wiem. Musiałbym sprawdzić w manualu tego konkretnego procesora.

    10.
    CWUF: Comparator Wake-up on Change Flag bit(1)
    1 = Reset due to wake-up from Sleep on comparator change
    0 = After power-up or other Reset conditions.
    *This bit is used on the PIC10F204/206. For code compatibility do not use this bit on the PIC10F200/202.

    Tzn, ze mam status, cwuf wogole nie uzywac na 200/202 czy mam tam nie zapisywac danych?

    A masz komparator w F200/F202 ?

    11. If TRIS bit is set to ‘0’, the wake-up on
    change and pull-up functions are disabled
    for that pin (i.e., note that TRIS overrides
    Option control of GPPU and GPWU).

    Czyli jezeli wszystkie Piny sa wyjsciami, to nie moge budzic procka zmiana na pinie ani go slabo podciagac. To jest zrozumiale. Ale czy wpisanie w tris samych 0 spowoduje ustawienie gpwu gppu na jedynki automatycznie? A co jesli wpisze tam 0 potem w tresci programu?

    Tak bym to rozumiał. Jeśli masz ustawione "pull-up" i "wake-up", to isntrukcja TRIS z zerami na odpowiednich bitach wyłaczy te opcje na tych bitach. Natomiast nie liczyłbym na to, ze wpisanie samych zer przestawi bity sterujące tymi stanami.

    12. OSCCAL - Erasing the device will also erase the preprogrammed
    internal calibration value for
    the internal oscillator. The calibration
    value must be read prior to erasing the
    part so it can be reprogrammed correctly
    later.

    Tzn jak mam to czytac? Programatorem czy moge w programie? Czy moge traktowac ten rejest jako rejestr ogolny (general purpose?) W koncu jest RW wiec readable writable.

    Poczytaj o OSCCAL.

    13. Program counter - nie rozumiem nic.

    Kilka cm wyzej napisalam ze PC jest o jeden bit za dlugi w kazdym przypadku, wobec tego 1 bit brakujacy z CALL nie powinien robic zadnej roznicy w adresowaniu.

    Dlaczego Call sie rozni od GOTO?

    Spytaj twórców.

    14. The W register will be loaded with the literal
    value specified in the instruction. This
    is particularly useful for the implementation
    of the data look-up tables within the
    program memory.

    Nie rozumiem.
    To mam recznie robic tak:
    Movlw b'cos tam'
    movwf 0x20
    movlw b'cos tam2'
    movwf 0x21
    movlw b'cos tam3'
    movwf 0x22

    i to co jest w pamieci 0x20-0x22 to jest look up table zrobione przy pomocy W.

    Ok, a co to ma wspolnego ze stosem?

    Przemyśl, jak w tym procesorze pobrać dane z tablicy w pamięci programu. Podpowiem, że kluczem jest: retlw.


    15. There are no Status bits to indicate stack
    overflows or stack underflow conditions.

    Stack underflow?
    Jak to mozliwe?
    Jak wykonam return from subroutine i w stosie nie ma zadnego adresu? To jest underrun?

    To tylko taka terminologia. Jak wykonasz powrót z podprogramu (a nie wykonałeś instrukcji CALL), to po prostu ze stosu pobierzesz zły adres powrotu. I tyle.

    16. Jaki to jest stos? FIFO? FILO?

    Domyślam się, ze chodzi o terminologię, ale nie dokońca rozumiem.

    17.
    PIC10F200/202/204/206 – Do not use
    banking. FSR <7:5> are unimplemented
    and read as ‘1’s.

    A niby jak mam uzywac stronicowania jak w status nie ma nawet bitu RP0? A moze o czyms nie wiem? Moze tutaj da sie robic stronicowanie na jednym banaku pamieci?

    A ile masz banków ?



    Pozdrawiam
    Mariusz