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/29 19:19] – [8.2. Project Requirements] Talesa Bleything | 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 18: | 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 28: | 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 59: | 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 110: | 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 127: | ||
| ==== 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 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 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 133: | 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 146: | 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 161: | Line 163: | ||
| ==== 8.2. Project Requirements ==== | ==== 8.2. Project Requirements ==== | ||
| - | Using the five push buttons and eight slide switches on-board the Basys MX3, program the PIC32 processor to implement the functionality of a simple integer calculator that displays the result of X • Y where the operator, | + | Using the five push buttons and eight slide switches on-board the Basys MX3, program the PIC32 processor to implement the functionality of a simple integer calculator that displays the result of X • Y where the operator, •, will be add, subtract, multiply, or divide. The button and switch operation assignments are given below. The most recently computed result is continuously displayed on the 7-segment LEDs such that if an operation push button is held depressed and the X or Y switches change position, the new value is immediately seen on the LED display. Only one push button is allowed to be pressed at a time. If multiple push buttons are simultaneously pressed, the result will not change. |
| **Table 8.2. Button operation.** | **Table 8.2. Button operation.** | ||
| Line 172: | 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. This requires commenting out line 41 in hardware.h. | + | Note 1: BTNU and BTNL can only be implemented when MPLAB is not in debug mode (see hardware.h |
| - | 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 190: | Line 192: | ||
| //Figure 8.2. 4-digit 7-segment display.// | //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 242: | 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 256: | 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.// | ||
| + | ---- | ||
| + | |||
| + | [[{}/ | ||
| + | [[{}/ | ||

