Low Power Application on SAM D21 Using Harmony v3 Peripheral Libraries: Step 3
Configure Analog Comparator (AC) Peripheral Library (PLIB)
Configure AC Peripheral
Under the Available Components tab, expand Peripherals > AC.
Select and double-click on AC to add the AC module to the project graph.
Select the AC Peripheral Library and configure it to compare the light sensor input with reference to the VDD Scaler voltage. The AC is also configured to generate an interrupt (and thereby wake the CPU) when the AC comparator output is rising.
- When the light sensor is not covered (light is falling on the sensor), the phototransistor is turned on. The AC input is ~0 V and there is no change in AC output.
- When the light sensor is covered (light is not falling on the sensor), the phototransistor is turned off. The AC input is ~3.3 V and rises on AC output.
- The AC analog input will be compared with the VDD Scaler voltage (Analog input/Light Sensor output as positive input and VDD Scaler as negative input).
- When the light sensor is covered (AC Input > VDD Scaler), an AC Comparator Interrupt is generated. This interrupt is used to bring the CPU out of Idle/Standby Sleep mode when you cover the light sensor with your hand.
a. Select Enable Run in Standby.
b. Enable Comparator 0 Settings and configure the Comparator 0 settings.
c. Enable Comparator Interrupt Enable.
d. Select Enable Single Shot Mode.
e. Verify Positive Input Mux Selection is set as I/O Pin 0 (externally, the light sensor analog output (Ext1 pin 3) is connected to AIN0 pin (Ext1 pin 17) of AC).
f. Configure Negative Input Mux selection as VDD scaler. Set the scaling factor for VDD as 15. Based on the V scale calculation, the Vscale value is (3.3 / 4)V, i.e. 0.825V.
g. Set Output Edge Type as The output of COMPn is not routed to the COMPn I/O port, as we don't need comparator output on the pin.
h. Set Interrupt Selection as Interrupt on comparator output rising. AC will generate an interrupt only when we cover the light sensor.
i. Enable Event Input to start the conversion on a hardware event trigger (In this example, RTC timeout is the event trigger).
Configure AC Pin
In the MPLAB® Harmony Configurator (MHC), select the Pin Settings tab and then scroll down to PORT pin PA04 in the Pin ID column and configure this pin as AC_AIN0.
Configure AC Clock for Low-Power
In MHC, select the Clock Easy View tab and configure the AC Clock by clicking on the Peripheral Clock Configuration button to open the Peripheral Clock Configuration tab.
Configure External Interrupt Controller (EIC) PLIB for Switch Button
In this step, we configure the switch button per the following USER_BUTTON design on the SAM D21 Xplained Pro Evaluation Kit.
Configure EIC Pin
In MHC, select the Pin Settings tab and then scroll down to 32 in the Pin Number column.
Configure the PORT pin PA15 as an external interrupt pin for switch functionality. The internal pull-up is enabled to avoid false edge detection as there is no external pull-up on the SAM D21 Xplained Pro Evaluation Kit.
Configure EIC Peripheral
Select the Project Graph tab.
Under the Available Components tab, expand Peripherals > EIC.
Select and double-click on EIC to add the EIC module to the project.
Configure the EIC peripheral to generate an interrupt every time the user presses the switch SW0, and enable filter functionality to avoid electrical noise on the switch pin.
In MHC, select the Clock Easy View tab and configure the EIC Clock by clicking the Peripheral Clock Configuration button to open the Peripheral Clock Configuration tab.
Configure Event System (EVSYS) PLIB
The EVSYS is added by default to the project graph. Launch the Event System Configuration window by clicking on Tools > Event System Configuration.
Once open, you will see the following window on your screen:
Configure the EVSYS channel 0 on the Event System Manager window:
- Set the Real-Time Clock Compare 0 (RTC_CMP_0) event as the event generator. The event is configured to appear asynchronously and to run in Standby mode with the on-demand feature enabled
- Set the AC Start of Conversion (AC_SOC_0) as the event user.