Step 3.1: Configure Analog Comparator (AC) Peripheral Library (PLIB)
Configure AC Peripheral
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.
Select Enable Run in Standby.
Enable Comparator 0 Settings and configure the Comparator 0 settings.
Enable Comparator Interrupt Enable.
Select Enable Single Shot Mode.
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).
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.
Set Interrupt Selection as Interrupt on comparator output rising. AC will generate interrupt only when we cover the light sensor.
Enable Event Input to start the conversion on a hardware event trigger (In this example, RTC timeout is event trigger).
Configure AC Pin
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.
The AC peripheral clock is by default set to GCLK0. However, to benefit from the SAM D21 clock tree, the AC peripheral clock is fed by GCLK1 to run at 1 kHz. Running a slower clock on the AC reduces the power consumption during Sleep mode.
This completes the configuration of the AC PLIB. The AC is configured to start the conversion on a hardware event trigger and generate an interrupt if the comparator value is higher than a defined Vscaler value.
Step 3.2: 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.
The EIC peripheral clock is by default set to GCLK0. However, to benefit from the SAM D21 clock tree, the EIC peripheral clock is fed by GCLK1 to run at 1 kHz. Running a slower clock on the EIC to overcome the switch debounce and electrical noise on the EIC pin and also reduces the power consumption during Sleep mode.
This completes the configuration of the EIC PLIB. The EIC is configured to produce an interrupt that will wake the device up from Sleep mode whenever the switch is pressed. This feature is used to measure the wake-up time from Sleep mode (Idle or Standby).
Step 3.3: Configure Event System (EVSYS) PLIB
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.
Make sure that the status of the event and user (Event Status and User Ready) is green. If it is red, verify that the Event Output and Event Input are enabled in the respective PLIB configuration (RTC and AC for this application example).
Table of Contents