Citazione:
Originalmente inviato da faustog_2 Il registro TFR1 è il timer 1 appunto da 16 bit ICF1 è il bit del registro in causa
il seguente controllo sapresti commentarmelo?
if (TIFR1 & (1<<ICF1)) {
leggendo il datasheet mi sono accorto che è corredato di esempi in assembler.. meglio dei datasheet dei Pic.. il problema che in questi gg ho poco tempo libero.. cci vuole tempo per leggere con attenzione .. mi viene facile capire perchè faccio riferimento al lavoro fatto con i Pic.. molte cose coincidono cambiano solo i nomi dei registri.. mi sono accorto che ci sono istruzioni in assembler che sommano e sottraggono su registri a 16 bit si distinquono perchè finiscono queste istruzioni con la W ..fantastico.. poi scopro cose che per farle con i Pic devi sudare! anche i PWM hanno prescaler da 1023 ! |
ICF1 è una costante numerica che rappresenta il valore posizionale del BIT ICF1,
1<<ICF1 esegue un left shift di 1 di ICF1 posizioni, a quel punto viene fatto un & con il registro del timer e se il risultato è vero (!=0) viene eseguito il codice.
PS: Consiglio, lascia perdere l'assembler con gli AVR usa il C e un buon compilatore (AVR-GCC 4.7.0) il codice risultante è meglio di quello che puoi fare tu....