blob: ed45eb5aacb893ae7caeb4de0b7d30b82417b5d2 [file] [log] [blame]
/*****************************************************************************
* Copyright 2014 Microchip Technology Inc. and its subsidiaries.
* You may use this software and any derivatives exclusively with
* Microchip products.
* THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".
* NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
* INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
* AND FITNESS FOR A PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP
* PRODUCTS, COMBINATION WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION.
* IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
* INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
* WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
* BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.
* TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
* CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF
* FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
* MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE
* OF THESE TERMS.
*****************************************************************************/
/** @file mec14xx_bbled.h
*MEC14xx Blinking Breathing LED definitions
*/
/** @defgroup MEC14xx Peripherals LED
*/
#ifndef _MEC14XX_BBLED_H
#define _MEC14XX_BBLED_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define LED_NUM_BLOCKS (3)
#define LED_INSTANCE_OFFSET (0x100UL)
//
// LED Configuration Register
//
#define LED_CFG_CNTL_MASK (0x0003u)
#define LED_CFG_CNTL_LO (0x0000u)
#define LED_CFG_CNTL_BREATH (0x0001u)
#define LED_CFG_CNTL_BLINK (0x0002u)
#define LED_CFG_CNTL_HI (0x0003u)
#define LED_CFG_CLK_SRC_MCLK (0x0002u)
#define LED_CFG_CLK_SRC_32K (0x0000u)
#define LED_CFG_SYNC (0x0008u)
#define LED_CFG_PWM_COUNT_WIDTH_MASK (0x0030u)
#define LED_CFG_COUNT_WIDTH_8 (0x0000u)
#define LED_CFG_COUNT_WIDTH_7 (0x0010u)
#define LED_CFG_COUNT_WIDTH_6 (0x0020u)
#define LED_CFG_EN_UPDATE (0x0040u)
#define LED_CFG_RESET (0x0080u)
#define LED_CFG_WDT_PRELOAD_MASK (0xFF00u)
#define LED_CFG_WDT_PRELOAD_POR (0x1400u)
#define LED_CFG_SYMMETRY_EN (0x10000u)
//
// LED Limit Register
//
#define LED_LIMIT_MIN_BITPOS (0u)
#define LED_LIMIT_MIN_MASK (0xFFu)
#define LED_LIMIT_MAX_BITPOS (8u)
#define LED_LIMIT_MAX_MASK (0xFF00u)
//
// LED Delay Register
//
#define LED_DELAY_LOW_MASK (0x0000FFFu)
#define LED_DELAY_HIGH_MASK (0x0FFF000u)
#define LED_DELAY_HIGH_BITPOS (12u)
//
// LED Step Size Register
//
#define LED_STEP_FIELD_WIDTH (4u)
#define LED_STEP0_MASK (0x0000000Fu)
#define LED_STEP1_MASK (0x000000F0u)
#define LED_STEP2_MASK (0x00000F00u)
#define LED_STEP3_MASK (0x0000F000u)
#define LED_STEP4_MASK (0x000F0000u)
#define LED_STEP5_MASK (0x00F00000u)
#define LED_STEP6_MASK (0x0F000000u)
#define LED_STEP7_MASK (0xF0000000u)
//
// LED Update Register
//
#define LED_UPDATE_FIELD_WIDTH (4u)
#define LED_UPDATE0_MASK (0x0000000Fu)
#define LED_UPDATE1_MASK (0x000000F0u)
#define LED_UPDATE2_MASK (0x00000F00u)
#define LED_UPDATE3_MASK (0x0000F000u)
#define LED_UPDATE4_MASK (0x000F0000u)
#define LED_UPDATE5_MASK (0x00F00000u)
#define LED_UPDATE6_MASK (0x0F000000u)
#define LED_UPDATE7_MASK (0xF0000000u)
#define BLINK_0P5_HZ_DUTY_CYCLE (0x010ul)
#define BLINK_0P5_HZ_PRESCALE (0x0FFul)
#define BLINK_1_HZ_DUTY_CYCLE (0x020ul)
#define BLINK_1_HZ_PRESCALE (0x07Ful)
/*****************************************************************************
* BBLED API
*****************************************************************************/
#define LED0_ID (0x00u)
#define LED1_ID (0x01u)
#define LED2_ID (0x02u)
#define LED_ID_MAX (0x03u)
#define BLINK_0P5_HZ_DUTY_CYCLE (0x010ul)
#define BLINK_0P5_HZ_PRESCALE (0x0FFul)
#define BLINK_1_HZ_DUTY_CYCLE (0x020ul)
#define BLINK_1_HZ_PRESCALE (0x07Ful)
uint8_t led_get_gpio_num(uint8_t led_id);
void led_init(uint8_t led_id);
void led_sleep_en(uint8_t led_id, uint8_t sleep_en);
void led_reset(uint8_t led_id);
void led_mode_blink(uint8_t led_id,
uint8_t duty_cycle,
uint16_t prescale);
void led_out_high(uint8_t led_id);
void led_out_low(uint8_t led_id);
void led_out_toggle(uint8_t led_id);
#ifdef __cplusplus
}
#endif
#endif // #ifndef _MEC14XX_BBLED_H
/* end hw_led.h */
/** @}
*/