Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| learn:courses:microprocessor-io-lab-1b:start [2017/03/15 17:54] – [Listing 7.1. Bit-banging Instructions to Display the Number “5” on the Third Digit] Martha | learn:courses:microprocessor-io-lab-1b:start [2022/10/04 11:38] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Lab 1b: Microprocessor | + | ====== Lab 1b: Microprocessor |
| + | [[{}/ | ||
| + | [[{}/ | ||
| == Download This Document == | == Download This Document == | ||
| - | * {{ : | + | {{ : |
| ===== 1. Objectives ===== | ===== 1. Objectives ===== | ||
| Line 19: | Line 20: | ||
| - How to write a computer program using the [[http:// | - How to write a computer program using the [[http:// | ||
| - How to launch a [[http:// | - How to launch a [[http:// | ||
| - | - How to configure the PIC32 I/O pins for digital input and output (See [[https:// | + | - How to configure the PIC32 I/O pins for digital input and output (See [[/ |
| Line 29: | Line 30: | ||
| ===== 3. Equipment List ===== | ===== 3. Equipment List ===== | ||
| ==== 3.1. Hardware ==== | ==== 3.1. Hardware ==== | ||
| - | | + | |
| - | | + | |
| - | | + | |
| In addition, we suggest the following instruments: | In addition, we suggest the following instruments: | ||
| - | | + | |
| Line 60: | Line 61: | ||
| ===== 6. Problem Statement ===== | ===== 6. Problem Statement ===== | ||
| - | The objective of this lab is to program the PIC32 processor to implement the functionality of a simple integer calculator that displays the result of X (?) Y where the operator, | + | The objective of this lab is to program the PIC32 processor to implement the functionality of a simple integer calculator that displays the result of X • Y where the operator, |
| ---- | ---- | ||
| Line 111: | Line 112: | ||
| LATDCLR = BIT_7; // Segment F on | LATDCLR = BIT_7; // Segment F on | ||
| LATDCLR = BIT_13; // Segment G on | LATDCLR = BIT_13; // Segment G on | ||
| - | LATGSET = BIT_14; // Segment DP off | + | LATGSET = BIT_14; // Segment DP off |
| LATBSET = BIT_12; // Display 0 off | LATBSET = BIT_12; // Display 0 off | ||
| LATBSET = BIT_13; // Display 1 off | LATBSET = BIT_13; // Display 1 off | ||
| Line 125: | Line 126: | ||
| - | ==== 7.5. Persistence: | + | ==== 7.5. Persistence: |
| - | The display in Fig. 8.2 appears to have LED segments in three digits simultaneously displayed. As just discussed, the cathodes of all four of the seven segment LEDs are connected in parallel and the particular digit is selected by asserting the common anode pin high. In order to make the four-digit display appear that all four LED digits are simultaneously on, one should make sure each digit is displayed for a minimum of 1 millisecond. Listing 7.2 provides a simple software delay. Since this delay is dependent on the speed of execution, the “ms_cnt” will need to be changed depending on the speed of the core frequency. For the example shown in Listing 7.2, the ms_cnt value of 1000 is set to generate a one ms delay when the core frequency is set to 80 MHz. | + | The display in Fig. 8.2 appears to have LED segments in three digits simultaneously displayed. As just discussed, the cathodes of all four of the 7-segment LEDs are connected in parallel and the particular digit is selected by asserting the common anode pin high. In order to make the 4-digit display appear that all four LED digits are simultaneously on, one should make sure each digit is displayed for a minimum of 1 millisecond. Listing 7.2 provides a simple software delay. Since this delay is dependent on the speed of execution, the “ms_cnt” will need to be changed depending on the speed of the core frequency. For the example shown in Listing 7.2, the ms_cnt value of 10000 is set to generate a one ms delay when the core frequency is set to 80 MHz. |
| ---- | ---- | ||
| Line 134: | Line 135: | ||
| void sw_delay(int ms) | void sw_delay(int ms) | ||
| { | { | ||
| - | unsigned int ms_cnt; // 1 ms counter | + | unsigned int ms_cnt; |
| - | while(ms--) // ms loop counter | + | while(ms--) |
| { | { | ||
| - | ms_cnt = 10000; // Reset ms counter | + | ms_cnt = 10000; |
| - | while(--ms_cnt); | + | while(--ms_cnt); |
| } | } | ||
| } | } | ||
| Line 147: | Line 148: | ||
| ===== 8. Lab 1b ===== | ===== 8. Lab 1b ===== | ||
| ==== 8.1. Development Plan ==== | ==== 8.1. Development Plan ==== | ||
| - | Follow the system design plan presented in the Unit 1 description | + | Follow the system design plan presented in Unit 1 by completing the actions described in steps 1 through 5 of Table 8.1. After the planning activity has been completed, proceed to the design phase by setting up your development environment. Note that a test plan is included in the list of activities so that any test hardware and or software is included in the overall design. |
| **Table 8.1. Software based system work flow.** | **Table 8.1. Software based system work flow.** | ||
| Line 162: | Line 163: | ||
| ==== 8.2. Project Requirements ==== | ==== 8.2. Project Requirements ==== | ||
| - | Using the five push buttons and eight slide switches | + | Using the five push buttons and eight slide switches |
| **Table 8.2. Button operation.** | **Table 8.2. Button operation.** | ||
| Line 173: | Line 174: | ||
| | BTNL (1) | CLEAR RESULT: Result = 0 | | | BTNL (1) | CLEAR RESULT: Result = 0 | | ||
| - | Note 1. BTNU and BTNL can only be implemented when MPLAB is not in debug mode. | + | Note 1: BTNU and BTNL can only be implemented when MPLAB is not in debug mode (see hardware.h in Unit 1, Appendix C). |
| - | The eight slide switches shown in Fig. 8.1 are divided into two groups of four switches to generate values for X and Y by setting the switches in a binary fashion | + | The eight slide switches shown in Fig. 8.1 are divided into two groups of four switches to generate values for X and Y by setting the switches in a binary fashion. The X and Y values |
| $$X=(SW0 \cdot 2^0) + (SW1 \cdot 2^1)+(SW2 \cdot 2^2)+(SW3 \cdot 2^3) Eq.1$$ | $$X=(SW0 \cdot 2^0) + (SW1 \cdot 2^1)+(SW2 \cdot 2^2)+(SW3 \cdot 2^3) Eq.1$$ | ||
| Line 183: | Line 184: | ||
| Where SW0 through SW7 has a value of one if in the on (up) position, or zero if in the off (down) position. | Where SW0 through SW7 has a value of one if in the on (up) position, or zero if in the off (down) position. | ||
| - | {{ : | + | {{ : |
| //Figure 8.1. Partitioning of switches assigned to variables X and Y.// | //Figure 8.1. Partitioning of switches assigned to variables X and Y.// | ||
| The mathematical operation on variables X and Y produce a new result that is displayed on the four digit seven-segment display, as shown in Fig. 8.2, whenever one of the push buttons is pressed. The operations associated with the push buttons are shown in the green text in Fig. 8.3. (Note: BTNL and BTNU are not functional when MPLAB X is running in debug mode.) | The mathematical operation on variables X and Y produce a new result that is displayed on the four digit seven-segment display, as shown in Fig. 8.2, whenever one of the push buttons is pressed. The operations associated with the push buttons are shown in the green text in Fig. 8.3. (Note: BTNL and BTNU are not functional when MPLAB X is running in debug mode.) | ||
| - | {{ : | + | {{ : |
| - | //Figure 8.2. Four digit- | + | //Figure 8.2. 4-digit 7-segment display.// |
| - | {{ : | + | {{ : |
| //Figure 8.3. Operator assignments to push buttons.// | //Figure 8.3. Operator assignments to push buttons.// | ||
| Line 243: | Line 244: | ||
| - Consider the case when pin RF0 is programmed to be an input and the signal TRIG_1 is a digital output signal from an external device that is either 0 or 3.3V. What effect will pressing the BTNC button have on the processor RF0 pin when TRIG_1 is low and when it is high? | - Consider the case when pin RF0 is programmed to be an input and the signal TRIG_1 is a digital output signal from an external device that is either 0 or 3.3V. What effect will pressing the BTNC button have on the processor RF0 pin when TRIG_1 is low and when it is high? | ||
| - Consider the case when pin RF0 is programmed to be an output and the signal TRIG_1 is a digital input signal to an external device. What effect will pressing the BTNC button have on the TRIG_1 signal when the RF0 output is low and when it is high? | - Consider the case when pin RF0 is programmed to be an output and the signal TRIG_1 is a digital input signal to an external device. What effect will pressing the BTNC button have on the TRIG_1 signal when the RF0 output is low and when it is high? | ||
| - | - Measure the loop execution time by toggling Pmod connector JA pin 1 at the start of the loop execution using the instruction | + | - Measure the loop execution time by toggling Pmod connector JA pin 1 at the start of the loop execution using the instruction |
| - What is this time? | - What is this time? | ||
| - Is this time expected? | - Is this time expected? | ||
| Line 257: | Line 258: | ||
| ====== Appendix A: Schematic Drawings ====== | ====== Appendix A: Schematic Drawings ====== | ||
| - | {{ : | + | {{ : |
| //Figure A.1 Push button schematic diagram.// | //Figure A.1 Push button schematic diagram.// | ||
| - | {{ : | + | {{ : |
| //Figure A.2 Schematic diagram of Basys MX3 slide switches.// | //Figure A.2 Schematic diagram of Basys MX3 slide switches.// | ||
| - | {{ : | + | {{ : |
| //Figure A.3 Four digit seven segment display schematic.// | //Figure A.3 Four digit seven segment display schematic.// | ||
| + | ---- | ||
| + | |||
| + | [[{}/ | ||
| + | [[{}/ | ||

