Oto, co znalazłem w arkuszu danych PIC16F1947:
Odczyt rejestru PORTB odczytuje stan pinów, natomiast zapis do niego spowoduje zapisanie do zatrzasku PORT. Wszystkie operacje zapisu są operacjami odczytu-modyfikacji-zapisu. Dlatego zapis do portu oznacza, że piny portu są odczytywane, wartość ta jest modyfikowana, a następnie zapisywana w zatrzasku danych PORT (LATB).
Jestem programistą oprogramowania układowego, a moje doświadczenie to informatyka. Nadal mam problemy ze zrozumieniem elektroniki i logiki na poziomie sprzętowym. Mam tylko podstawową wiedzę.
Chcę więc zrozumieć, co się dzieje, gdy dane są zapisywane w celu zatrzaśnięcia na poziomie sprzętowym.
Dziękuję Ci.
źródło
Aby uniknąć problemów z odczytem, modyfikacją i zapisem, należy pisać na porcie jako całości, zamiast ustawiać lub resetować poszczególne bity w porcie. Problem z RMW może spowodować, że trochę nie zostanie ustawiony lub inny poziom wyjściowy będzie wysoki, szczególnie jeśli piny wyjściowe pobierają lub pochłaniają dużo prądu.
Zazwyczaj stosuje się „rejestr cieni”. Ustaw lub zresetuj w tym bity i wyślij je do portu, aby uniknąć problemów z RMW.
Problemu można uniknąć w przypadku PIC 18F dzięki zastosowaniu osobnego zatrzasku, w którym poszczególne bity można bezkarnie ustawiać i resetować.
źródło