da
WALTERmwp » 13 ago 2014, 23:51
emacar ha scritto:L'ho testato adesso, il registro CCPR4L aumenta fino a 255, per cui volendo sfruttare tutti i 10 bit bisogna occuparsi di incrementare anche CCP4CON<5:4> appositamente.
... si, in realtà li usi inteso il fatto che comunque il valore preso in carico per la comparazione è sempre riferito ai 10 bits con i due meno significativi, in questo caso qui trattato, sempre a zero (l'ho precisato, nel caso qualche altro utente dovesse leggere, gli si eviterebbe di poter equivocare).
L'incremento ti risulta da 0 a 255 e lo vedi come tale perché visualizzando il contenuto del registro non può che essere rappresentato per quello che è, cioè una variabile a 8 bits (sono esclusi dalla interpretazione gli altri due di CCP4CON).
Questo però pone una questione, e non è speculativa, ovvero: in un loop (quello in "c", del tuo codice) si incrementa una variabile (la "duty_cycle", tipo "int") che, pur superando il valore limite di un registro (a 8 bits), viene assegnata allo stesso.
Saluti
W - U.H.F.