| 
 Il clockFino ad ora abbiamo citato un
  clock, ma non abbiamo ancora specificato da dove deriva. In questi piccoli PIC, dove le
  dimensioni sono determinanti,  il generatore del clock è integrato nel
  componente. Questo vuol dire che non è necessario alcun componente esterno,
  come quarzi, condensatori, ecc. Il modulo oscillatore interno consente di generare un clock a
   4 MHz,
  corrispondenti ad un ciclo di istruzione di 1us.   
    
    
      
        | FOSC | FOSC/4 | Ciclo
          istruzione |  
        | 4 MHz | 1 MHz | 1 us |   La precisione del generatore interno, che è RC, è sufficientemente elevata
  per moltissimi casi;: essa viene determinata dal costruttore e il valore
  generato può essere aggiustato agendo su un opportuno registro. Questo registro prende il nome di OSCCAL.
  
 Questa è la sua struttura: 
    
      
        | OSCCAL | bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |  
      | nome | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | FOSC4 |  
    | 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 | 0 |  
    
      bit
      7:1 CAL6:0
      valore di calibrazione0111111 = frequenza massima
 ...
 0000001
 0000000 = valore centrale
 1111111
 ...
 1000000 = frequenza minima
    bit 0   FOSC4 
    abilita l' uscita del clock sul pin GP21
    = GP2 è FOSC4
 0 = GP2 è I/O digitale
 OSCCAL
      
 è analogo a quello dei PIC10F220/222 e il bit 0
  permette di avere l' uscita del clock sul pin GP2.Dato che il default di questo pin è 0, GP2 non assume questa funzione fino a
  che il programma non porta il bit a 1.
 Però, quando questo succede, la funzione di uscita del clock è prioritaria
  su qualsiasi altra assegnazione.
 Questa funzione è utile per derivare dal PIC il clock per altri circuiti
  esterni o per verifica della frequenza generata dall' oscillatore interno.
 I primi sette bit del registro si applicano come fattore correttivo della
  frequenza generata dal clock interno.
  Rispetto ad un valore ideale centrale di 0000000, variando questi bit si
  potrà ottenere una frequenza maggiore o minore, in range non ben definito, ma
  che si può supporre di un 10% circa rispetto al valore nominale.
   Se osserviamo ancora i default, possiamo vedere che al reset viene
  applicato un valore binario di 11111110  al registro OSCCAL
  
  . Questo non è detto sia il valore di calibrazione ideale.    Microchip calibra in fabbrica ogni chip per avere la frequenza di clock
  più precisa possibile ed ha realizzato un sistema per fa si che l' utente
  possa effettuare questa calibrazione, se lo ritiene necessario. Il meccanismo
  è singolare: 
    il valore di calibrazione di fabbrica è salvato nell' ultima cella
      della memoria programma, che è in tecnologia flash, quindi scrivibile e
      cancellabile, pur potendo mantenere i dati per lungo tempo (>100 anni).questo valore è nel formato di una istruzione movlw
      valoreil vettore di reset, ovvero il punto da cui comincia la scansione delle
      istruzioni è spostato dall' indirizzo 00 a quello di questa cella. Ne risulta che al reset il processore inizia con l' istruzione  e il
  Program Counter (PC) avanza portandosi a 00 dove l' utente piazza le sue
  istruzioni. Quindi, volendo calibrare l' oscillatore con il valore
  "ufficiale", la prima istruzione al reset sarà una scrittura di OSCCAL
  con il contenuto di W, che è il valore di calibrazione.ovviamente, se non interessa la precisione dell' oscillatore, questa fase
  iniziale può essere evitata.
 Il valore di calibrazione in uscita dalla fabbrica è scritto in una
  locazione di Flash, quindi sovra scrivibile o cancellabile. 
    
      
        |    Nel programmare il
          componente occorre
        avere cura di NON cancellare la calibrazione dell' oscillatore impostata
        dalla fabbrica. Se il dispositivo di programmazione non permette una esclusione di
        questa locazione, occorre leggerla e salvarne il valore PRIMA di avviare
        la programmazione e riscriverla durante la programmazione.
 |  I tools di programmazione di Microchip (Pickit, ICD, RealIce) dispongono
  dell' opzione di non cancellazione del valore di calibrazione di fabbrica. La scelta della frequenza dell' oscillatore viene effettuata in una diversa
  sezione della programmazione del chip: la "configurazione". 
 |