Timer 1: non incrementa
sto smanettando con un timer, precisamente una finta bomba in pieno stile ''cavo blu o cavo rosso''
il PIC e un 16f887 .utilizzo un quarzo da 32768 Hz che e solo per timer 1 mentre il resto del programma lavora con l oscillatore interno settato a 8 MHz
ho fatto varie prove e ho notato che se uso il timer con l' oscillatore interno il timer funziona (naturalmente e troppo veloce) mentre invece se setto il il tutto per utilizzare il timer esterno non funziona e il tempo sul display resta fermo posto le parti di codice interessate
mentre qui come e settato ora (settato per oscillatore esterno)
premetto che il circuito e su breadbord e che i condensatori a massa non sono quelli giusti ho provato con 100nf e con 15 pf e anche senza e magari questa la causa ?
il PIC e un 16f887 .utilizzo un quarzo da 32768 Hz che e solo per timer 1 mentre il resto del programma lavora con l oscillatore interno settato a 8 MHz
ho fatto varie prove e ho notato che se uso il timer con l' oscillatore interno il timer funziona (naturalmente e troppo veloce) mentre invece se setto il il tutto per utilizzare il timer esterno non funziona e il tempo sul display resta fermo posto le parti di codice interessate
- Codice: Seleziona tutto
//*****************************************************
// sx = secondi dx= minuti hx= ore
//*****************************************************
void interrupt ISR(void)
{
if(TMR1IF) // interrupt su overflow timer1: è passato un secondo
{
TMR1H=0x80; // ricarico il timer dal valore 0x8000, non vado a scomodare anche TMR1L che già si trova a zero
sx--;
RD0=1; //bip ogni secondo
__delay_ms (50);
RD0=0;
if (sx==-1)
{
sx=59;
dx--;
}
if (dx==-1)
{
dx=59;
hx--;
}
TMR1IF=0; // azzero il flag di interrupt
}
}
mentre qui come e settato ora (settato per oscillatore esterno)
- Codice: Seleziona tutto
CM2CON1=0b00000000;
INTCON=0b11000000;
T1CON=0b00000111;
PIR1=0b00000001;
PIE1=0b00000001;
premetto che il circuito e su breadbord e che i condensatori a massa non sono quelli giusti ho provato con 100nf e con 15 pf e anche senza e magari questa la causa ?