continuo ad aere un problema su un pic16F876 a 20MHz... ho montato il circuito light dimmer su una piastra millefori con quarzo
20.000MHz e dei condensatori da 33pF (quindi secondo specifice), il tutto ora è saldato. All'ingresso RB0 ho un ck di 100Hz (10ms) ganerato dalla rete ed il TMR0 genera un ck di 10kHz e quindi 0.1ms. Quindi ad ogni impulso di RB0 conteggio gli impulsi di TMR0 (cOut), che dovrebbero essere 100 o 99, e poi trasmetto il tutto su RS232 per verificare su pc il valore di cOutCount. Ma in questo caso il byte cOutCount=0x5C cioè 92 impulsi mentre dovrebbero essere 100. PERCHE'?Potete aiutarmi per favore!?!?!?
Questo è un pezzo di codice:
option_reg = 10000001b; // prescailer = TMR0 , rate = 4:1 tmr0 = 0x83;
void interrupt( void ) {
//RB0//////////////////////////////////////////////////////////// if ( ( intcon & INTF_MASK ) != 0 ) { //int RB0 clock esterno 100Hz 10ms clear_bit( intcon, INTF ); clear_bit( intcon, T0IF ); tmr0 = 0x83; cOutCount=cOut; cOut=0; }
//TMR0//////////////////////////////////////////////////////////// if ( ( intcon & T0IF_MASK ) != 0 ) { clear_bit( intcon, T0IF ); tmr0 = 0x83; //base 100us cOut++; }
}