- /*---------------------------------------------------------------------------------------------------------*/
- /* */
- /* SPDX-License-Identifier: Apache-2.0 */
- /* Copyright(c) 2024 Nuvoton Technology Corp. All rights reserved. */
- /* */
- /*---------------------------------------------------------------------------------------------------------*/
- #include "numicro_8051.h"
- #if defined __C51__
- double Bandgap_Voltage,VDD_Voltage;
- #elif defined __ICC8051__
- double Bandgap_Voltage,VDD_Voltage;
- #elif defined __SDCC__
- float Bandgap_Voltage,VDD_Voltage;
- #endif
- /******************************************************************************
- The main C function. Program execution starts
- here after stack initialization.
- ******************************************************************************/
- void main (void)
- {
- uint16_t ADC_BG_Result;
- MODIFY_HIRC(HIRC_24);
- Enable_UART0_VCOM_printf_24M_115200();
- printf ("\n\r Test start ...");
- /* ADC sampling timing setting for Bandgap*/
- ENABLE_ADC_BANDGAP;
- ADCCON1|=0x30; /* clock divider */
- ADCCON2|=0x0E; /* AQT time */
- /*start bandgap ADC */
- clr_ADCCON0_ADCF;
- set_ADCCON0_ADCS;
- while(ADCF == 0);
- /* ADC convert current Bandgap value */
- ADC_BG_Result = ADCRH<<4 ;
- ADC_BG_Result = ADC_BG_Result|(ADCRL&0x0F);
- DISABLE_ADC; /*Disable ADCEN each time after ADC trig */
- /* VDD Now READ_BANDGAP() VALUE */
- /* ------------------------------------- = ---------------------------------- */
- /* 3072mV(Storage value test condition) NOW ADC Bandgap convert reuslt */
- VDD_Voltage = ((float)READ_BANDGAP())/((float)ADC_BG_Result)*3072;
- /* Bandgap real voltage READ_BANDGAP() VALUE */
- /* ------------------------------------- = ---------------------------------- */
- /* 3072mV(Storage value test condition) 4096(12bit ADC) */
- Bandgap_Voltage = ((float)READ_BANDGAP())*3/4;
- /*printf result value */
- #if defined __SDCC__
- printf_fast_f ("\n\r BG Voltage = %f", Bandgap_Voltage);
- printf_tiny (" mV \r");
- printf_fast_f ("\n\r VDD voltage = %f", VDD_Voltage);
- printf_tiny (" mV \r");
- #else
- printf ("\n\r BG Voltage = %f", Bandgap_Voltage);
- printf (" mV \r");
- printf ("\n\r VDD voltage = %f", VDD_Voltage);
- printf (" mV \r");
- #endif
- while(1);
- }
|