Tutorials - PIC

 

PIC12F510 e 16F506


Altre funzioni

Chi ha prestato attenzione avrà notato che nella trattazione del TIMER0, il registro OPTION  risulta avere due bit non dedicati al timer.
Questi due bit riguardano una funzione accessoria, che è chiamata Wake-up from Sleep on Pin Change, ovvero, letteralmente, sveglia dal sonno per un cambio dei pin. Cosa sono questi pull-up, cosa è sleep?

Senza entrare in altri dettagli, dobbiamo dire che i PIC Baseline non hanno una gestione a interrupt. Questo è sostituito con una diversa considerazione, riguardante il basso consumo che ci si aspetta da questi componenti.
In sostanza, l' impiego previsto, nel caso di rilevamento di eventi, è il seguente:

  • il PIC viene posto in sleep, condizione a bassissimo consumo. In queste condizioni il generatore del clock è spento e l' energia richiesta è minima L' entrata in modalità sleep si ottiene con una specifica istruzione.
  • un evento (cambio del livello di tensione su un pin, overflow del WDT, reset esterno) "svegliano" il processore dal sonno
  • una analisi dei flag dello STATUS consente di discriminare la causa del reset ed agire di conseguenza

Per facilitare l' utilizzatore, il microcontroller contiene dei pull-up (detti weak pull-up) programmabili dal registro OPTION:

OPTION

bit

7 6 5 4 3 2 1 0

nome

!GPWU

!GPPU

T0CS

T0SE

PSA

PS2

PS1

PSO

funzione

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

default

1 1 1 1 1 1 1 1
  • bit 7  !GPWU : Enable Wake-up on Pin Change bit (GP0, GP1, GP3)
                 1 = disabilitato (default)
                 0 = abilitato

  • bit 6  !GPPU : Enable Weak Pull-ups bit (GP0, GP1, GP3)
                 1 = disabilitato (default)
                 0 = abilitato

Il bit 7 a 1 disabilita la funzione (default al POR), mentre programmandolo a 0 si abilita il wake-up per i pin GP0/1/3 se sono configurati come ingressi digitali. Se i pin sono configurati come uscite o come altra funzione l' azione sul bit 7 non ha effetto. GP2 è escluso da questa funzione.

Il bit 6 abilita o meno i pull-up integrati, che possono sostituire resistenze di pull-up esterne con risparmio di spazio e costo.

Il meccanismo del wake-up è semplice: la lettura dello stato degli I/O prima dello sleep fotografa la loro situazione. Se durante lo sleep un livello cambia, la condizione di sonno è interrotta e si riprende da un reset.

In PIC16F506 i due bit trattati sono riferiti al PORTB, che fa le veci di GPIO. Il nome dei due bit viene modificato in !RBPWU e !RBPU , pur mantenendo le stesse funzioni.


Sleep

La condizione di sleep, a cui si accede con l' esecuzione dell' istruzione sleep, più che una periferica, è una modalità di funzionamento che consente di portare il processore in uno stato di "ibernazione", a bassissimo consumo, dal quale si esce a seguito di alcune condizioni programmate (comparatore, variazione pin, WDT, MCLR, ecc).
Il clock primario viene sospeso. L' uscita da sleep genera un reset. 

Per la trattazione di questa modalità si rimanda a quanto indicato dal foglio dati


WDT

Il Watchdog è un sistema di sicurezza implementato in tutti i PIC. Si tratta di un contatore, dotato di un pre divisore programmabile, in questi PIC condiviso con Timer0, che incrementa seguendo il clock interno generato da un oscillatore RC proprio. Questo fa si che WDT sia in funzione anche durante lo sleep.
Se si lascia esaurire il conteggio, all' overflow il modulo WDT genera un reset.
La sua funzione è analoga al "pulsante di uomo morto" che si utilizza come sicurezza in alcune apparecchiature : se l' utente non lo preme ad una certa cadenza, l' apparecchiatura si blocca.
Altrettanto WDT è inteso principalmente come sicurezza da verificare periodicamente; la mancanza di questa azione blocca il programma in corso.
La cancellazione periodica del contatore si ottiene con l' istruzione clrwdt.

Maggiori informazioni sul WDT le trovate qui.


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 06/05/13.