Non mi sembra così oscuro...
L'operazione di set/rest bit su una porta legge il contenuto della porta in quel momento, cambia il bit che si vuole settare/rsettare e riscrive il contenuto tutto il contenuto della porta; lo stato del bit che su cui si opera è sempre quello giusto. La nota vuole semplicemente mettere in evidenza il fatto che viene letto ed aggiornato tutto il registro e che quindi il registro di uscita dei bit usati come ingresso potrebbe variare in funzione dello stato del pin in quel momento; questo non provoca nessun problema fino a quando il bit in questione rimane un ingresso, ma se si cambia la direzione del pin facendolo diventare una uscita senza aver prima impostato il valore voluto, il valore che assumerà sarà quello scritto nel suo registro di uscita e potrebbe non essere quello che ci aspettiamo.
Morale 1): prima di cambiare lo stato di una porta da in a out, assicurarsi di aver impostato i valori voluti.
Morale 2): non usare l'istruzione set/reset di un singolo bit sulle porte di uscita se è necessario cambiare la direzione della porta durante il programma: in questo caso conviene creare un registro 'copia' della porta, effettuare le operazioni singole su questo registro e quindi copiarlo sulla porta di uscita.
Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. |