E' un quarzo SMD questo ?
Chiedo perche' ho un problema "inspiegabile" con un atmega16 che oscilla con quel componente li' : ambiente c, ottimizzazione disattivata, semplice programma che genera una base tempi ( 5mS alto, 5 mS basso) in interrupt routine TMR0 testato con AVR studio 4.
Eccolo di seguito :
__interrupt void int_timer (void){
//per tempi precisi
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
SFIOR=SFIOR | 1; //azzero prescaler per ri-sincronizzare
TCNT0=178; //ricarico timer per 1 interruzione ogni 5 mS con quarzo 4 MHz !
if(PIND&4){PORTD_Bit2=0;}else{PORTD_Bit2=1;}
} //end interrupt TMR0 routine
Con AVR studio 4 in simulazione ottengo un toggle del PORTD Bit2 ogni 5 mS spaccati, nella realtà per ottenere un fronte ascendente ogni 10 mS ho dovuto aggiungere degli wait states per rallentare il programma dello 0.6%. In pratica, usandolo come cronometro, "guadagnava" circa 2.9 secondi ogni 8 minuti. Un'esagerazione...
Ciao, Pier.