@Klebwax:
Da freut man sich natürlich über die positive Rückmeldung, vielen Dank:
Ich habe deine Idee mal umgesetzt:
Code:/* File: main.c Date: 11.05.2020 Author: Bernd Sirozynski Idee von Klebwax umgesetzt: */ // PIC10F322 Configuration Bit Settings // 'C' source line config statements // CONFIG #pragma config FOSC = INTOSC // Oscillator Selection bits (INTOSC oscillator: CLKIN function disabled) #pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset disabled) #pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled) #pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled) #pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD) #pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled) #pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming) #pragma config LPBOR = OFF // Brown-out Reset Selection bits (BOR disabled) #pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.) #pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include <xc.h> typedef unsigned short U16; /* 16 Bit ohne Vorzeichen */ typedef unsigned long U32; /* 32 Bit ohne Vorzeichen */ // LED 1 connected to pin RA0 #define LED1_ON LATA0=1 #define LED1_OFF LATA0=0 // LED 2 connected to pin RA1 #define LED2_ON LATA1=1 #define LED2_OFF LATA1=0 U32 value; // wird zur Berechnung benötigt 32 Bit Wert U16 mV_Value; // umgerechneter Wert in Millivolt void main(void) { TRISA = 0x00; /* all pins to output */ // internal fixed voltage reference // set first the FREN Bit before changing the gain bits // see errata sheet FVREN = 1; // Fixed Voltage Reference is enabled ADFVR1=1; // set 2,048 Volt Reference // init the ADC ADCON = (0x07 << 5) // conversion clock =FOSC/64 + (0x07 << 2) // select Fixed Voltage Reference + (0x01 << 0); // ADC enable nWPUEN = 0; // enable global pullups WPUA = 8; // pullup only on RA3/MCLR while (1) { GO_nDONE = 1; // start ADU conversion while (GO_nDONE) ; // wait until adu ready value = (U32)(2048) << 8; // constant 32 Bit = 524.288 value /= ADRES; // durch den ADU Wert teilen mV_Value = (U16)value; // Auswertung der LiPo Spannung if (mV_Value < 3000) // kleiner 3 Volt { LED1_OFF; LED2_OFF; } else if (mV_Value < 4200) // grosser 3 Volt aber kleiner 4,2 Volt { LED1_ON; LED2_OFF; } else // >= 4,2 Volt { LED1_ON; LED2_ON; } } // while } // main







Zitieren

Lesezeichen