Tutorials - PIC

 

PIC 10F200/202/204/206


Lo STATUS

Dobbiamo aggiungere qualche cenno alla posizione importante nei registri speciali che è occupata dalla STATUS. Si tratta di un registro che contiene una serie di flag indicatori delle condizioni di lavoro e di esecuzione delle istruzioni. Questi indicatori (in inglese flag, bandiere) sono indispensabili per la programmazione.

Nei piccoli Baseline i bit dello STATUS non sono solo flag, ma anche bit di controllo. Questa situazione in cui, in uno stesso registro si mescolano indicatori e comandi, è comune nei PIC.

Il registro di STATUS è costituito così:

STATUS

bit

7 6 5 4 3 2 1 0

nome

GPWUF

CWUF

-

!T0

!PD

Z

DC

C

funzione

R/W R/W R/W R/W R/W R/W R/W R/W

default

0 0 1 1 1 x x x
  • bit 7  GPWUF : Reset da variazione su GPIO
                 1 = reset-wakeup prodotto da variazione su GPIO
                 0 = dopo POR o altri reset

  • bit 6  CWUF  : Reset da variazione su uscita comparatore
                  solo per 10F204/206
                 1 = reset-wakeup prodotto da variazione su comparatore
                 0 = dopo POR o altri reset

  • bit 5   -    : non usato

  • bit 4  !TO   : Timeout
                 1 = dopo POR o CLRWDT o SLEEP
                 0 = reset da WDT timeout

  • bit 3  !PD   : Power down
                 1 =
    dopo POR o CLRWDT
                 0 = SLEEP

  • bit 2  Z     : Flag Zero
                 1 = il risultato dell' operazione è 0
                 0 = il risultato dell' operazione è diverso da 0

  • bit 1  DC    : Digital Carry
                 ADDWF
                 1 = carry dal quarto bit
                 SUBWF
                 1 = borrow dal quarto 

  • bit 0  C     : Carry
                 ADDWF
                 1 = carry 
                 SUBWF
                 1 = borrow

In dettaglio:

Bit Nome Funzione
7 GPWUF Questo flag a 1 indica che si è prodotto un reset a causa di una variazione su un GPIO (se è stata impostata questa funzione).
In 16F505 si chiama RBWUF in quanto la funzione di wakeup dipende dai pin di PORTB
5  CWUF Questo bit è attivo solo 10F204/206;  indica che si è prodotto un reset a causa di una variazione sull' uscita del compratore ( se è stata impostata questa funzione).
4 !TO Questo flag a 0 indica che c'è stato un reset da timeout del WDT
3 !PD Questo flag a 0 indica una uscita da sleep
2 Z Questo flag indica che il risultato di una operazione è 0.
verificare che il flag sia a 1 equivale a verificare che il risultato dell' operazione aritmetica o ogica è zero.
1 DC Questo flag indica un carry (o borrow) sul quarto bit. E' utile nelle operazioni di conversione e calcolo su BCD
0 C Questo flag è il carry per le somme (e borrow per le sottrazioni). Verificare il valore di C equivale a verificare se l' operazione ha reso un resto.
Inoltre il Carry entra a far parte delle istruzioni di rotazione.

La funzione dello STATUS è legata, quindi, a due elementi differenti:

  1. flag indicatori del risultato di una istruzione (bit 2:0).
    La funzione è legata agli opcodes: alcuni opcodes, nella loro esecuzione, non modificano questi flag, ma, in generale, la loro azione si estende su tutte le operazioni aritmetiche (somma, sottrazione, incremento, decremento) e logiche (AND, OR, XOR, rotazione, ecc.).
    Consultando la lista degli opcodes disponibili si rilevano anche le informazioni relative ai flag che sono interessati. 
     
  2. flag indicatori della causa del reset (bit1, 4 e 3)
    Analizzando lo stato di questi flag è possibile determinare quale è la causa del reset e intraprendere le azioni adeguate..

In merito al punto 2, va ricordato che i Baseline sono privi della gestione di interrupt. La filosofia applicativa nel riconoscere un evento prevede la messa in stato di sleep ed il risveglio con un reset a seguito di una determinata causa (MCLR, WDT overflow, variazione di livello sui pin, variazione sul comparatore, per i modelli che ne sono dotati, ecc). Quindi l' analisi dello STATUS ha anche questa funzione.

Per quanto riguarda i flag indicatori al punto 1, si può ancora precisare che qui manca un flag N (negativo) presente in altre versioni di STATUS, ad esempio nei Midrange.


 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 30/04/13.