|
Tri-state gates, PORT pins and direction configuration |
||
How to make a wire bi-directional?
Tri-state gages were presented in L5.4.
Bidirectional microcontroller bus structure.
Fig. 1. The idea behind bidirectional busses. |
|
Data direction registers TRISx are correlated to PORTx: writing a '1' in the corresponding pin of the TRISx register, the PORTx pin bcomes an input; writing a '0' in the corresponding pin of the TRISx register, the PORTx pin is an output.
In init_system() we must fix port directions for all inputs and outputs in a given application. However, writing and reading TRISx bits is possible any time in software, meaning that we can change port pin direction when required by our application.
Fig. 2. The diagram used in CSD to represent RAM variables is also applicable to draw PORT and TRIS registers. It is very convenient to indicate bit number index as well to determine PORT bit positions. |
|
Fig. 3 is the electronic circuit from Microchip datasheet associated to a generic port pin. It is configurable as input or output depending on the value saved at TRIS register.
Fig. 3. Electronic circuit of a typical port pin where the
use of tri-state buffer gates allows pin reversibility. TRIS
register bits configures pin direction. |
Thus, as we usually do in our introductory CSD course, to fully undestand the circuit operation, it it possble as shown in Fig. 5, redraw this schematic as if we had to design it in P8 as an advanced digital system. PORT and TRIS pin information can be read and write organising the sequence of control signals (LD) to drive 1-bit data registers.
Fig. 4. Interpretation of the circuit in Fig.3 using our model for a synchronous 1-bit data register studied in our Data_Reg_nbit tutorial. |
|
Other materials of interest
- Microchip PIC18F4520 datasheet.