Initialize alarm signal when ADC value is greater than 0xF0
This commit is contained in:
26
inc/afe_configuration.h
Normal file
26
inc/afe_configuration.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#ifndef _AFE_CONFIGURATION_
|
||||||
|
#define _AFE_CONFIGURATION_
|
||||||
|
|
||||||
|
#define ISINK0_CURRENT 4
|
||||||
|
#define ISINK1_CURRENT 0
|
||||||
|
#define AFE_R1 15
|
||||||
|
#define AFE_R2 15
|
||||||
|
#define AFE_R3 0
|
||||||
|
#define ISINK0_DELAY 2
|
||||||
|
#define ISINK1_DELAY 2
|
||||||
|
|
||||||
|
void opa0_calib();
|
||||||
|
void opa1_calib();
|
||||||
|
void opa_config();
|
||||||
|
void isink0_on();
|
||||||
|
void isink1_on();
|
||||||
|
void isink0_off();
|
||||||
|
void isink1_off();
|
||||||
|
void opa_on();
|
||||||
|
void opa_off();
|
||||||
|
void isink0_delay();
|
||||||
|
void isink1_delay();
|
||||||
|
void opa_delay(uint8_t delay);
|
||||||
|
void afe_init();
|
||||||
|
|
||||||
|
#endif
|
||||||
175
src/afe_cofiguration.c
Normal file
175
src/afe_cofiguration.c
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
#include "BA45F5250.h"
|
||||||
|
#include "stdint.h"
|
||||||
|
#include "build-in.h"
|
||||||
|
#include "afe_configuration.h"
|
||||||
|
#include "ad_converter.h"
|
||||||
|
#include "macro_define.h"
|
||||||
|
#include "system_function.h"
|
||||||
|
|
||||||
|
void opa0_calib()
|
||||||
|
{
|
||||||
|
uint8_t R_TMP0, R_TMP1;
|
||||||
|
R_TMP0 = 0x00;
|
||||||
|
R_TMP1 = 0x00;
|
||||||
|
_sda0vos = 0b11111111;
|
||||||
|
GCC_DELAY(2000);
|
||||||
|
while(_sda0o)
|
||||||
|
{
|
||||||
|
_sda0vos--;
|
||||||
|
GCC_DELAY(2000);
|
||||||
|
}
|
||||||
|
R_TMP0 = _sda0vos & 0b00111111;
|
||||||
|
_sda0vos = 0b11000000;
|
||||||
|
GCC_DELAY(2000);
|
||||||
|
while(!_sda0o)
|
||||||
|
{
|
||||||
|
_sda0vos++;
|
||||||
|
GCC_DELAY(2000);
|
||||||
|
}
|
||||||
|
R_TMP1 = _sda0vos & 0b00111111;
|
||||||
|
_sda0vos = (R_TMP0 + R_TMP1) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void opa1_calib()
|
||||||
|
{
|
||||||
|
uint8_t R_TMP0, R_TMP1;
|
||||||
|
R_TMP0 = 0x00;
|
||||||
|
R_TMP1 = 0x00;
|
||||||
|
_sda1vos = 0b11111111;
|
||||||
|
GCC_DELAY(2000);
|
||||||
|
while(_sda1o)
|
||||||
|
{
|
||||||
|
_sda1vos--;
|
||||||
|
GCC_DELAY(2000);
|
||||||
|
}
|
||||||
|
R_TMP0 = _sda1vos & 0b00111111;
|
||||||
|
_sda1vos = 0b11000000;
|
||||||
|
GCC_DELAY(2000);
|
||||||
|
while(!_sda1o)
|
||||||
|
{
|
||||||
|
_sda1vos++;
|
||||||
|
GCC_DELAY(2000);
|
||||||
|
}
|
||||||
|
R_TMP1 = _sda1vos & 0b00111111;
|
||||||
|
_sda1vos = (R_TMP0 + R_TMP1) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void opa_config()
|
||||||
|
{
|
||||||
|
_isgdata0 = ISINK0_CURRENT;
|
||||||
|
_isgdata1 = ISINK1_CURRENT;
|
||||||
|
_sdpgac0 = AFE_R1;
|
||||||
|
_sdpgac1 = (AFE_R3 << 6) + AFE_R2;
|
||||||
|
_sda0c = 0b01000011;
|
||||||
|
_sda1c = 0b01000011;
|
||||||
|
_sdsw = 0b00100110;
|
||||||
|
opa0_calib();
|
||||||
|
opa1_calib();
|
||||||
|
}
|
||||||
|
|
||||||
|
void isink0_on()
|
||||||
|
{
|
||||||
|
_isgen = 1;
|
||||||
|
_isgs0 = 1;
|
||||||
|
isink0_delay();
|
||||||
|
}
|
||||||
|
|
||||||
|
void isink1_on()
|
||||||
|
{
|
||||||
|
_isgen = 1;
|
||||||
|
_isgs1 = 1;
|
||||||
|
isink1_delay();
|
||||||
|
}
|
||||||
|
|
||||||
|
void isink0_off()
|
||||||
|
{
|
||||||
|
_isgen = 0;
|
||||||
|
_isgs0 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void isink1_off()
|
||||||
|
{
|
||||||
|
_isgen = 0;
|
||||||
|
_isgs1 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void opa_on()
|
||||||
|
{
|
||||||
|
_sds0 = 1;
|
||||||
|
_sda0en = 1;
|
||||||
|
opa_delay(2);
|
||||||
|
_sda1en = 1;
|
||||||
|
opa_delay(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void opa_off()
|
||||||
|
{
|
||||||
|
_sda0en = 0;
|
||||||
|
_sda1en = 0;
|
||||||
|
_sds0 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void isink0_delay()
|
||||||
|
{
|
||||||
|
uint8_t i;
|
||||||
|
for(i = 0; i < ISINK0_DELAY; i++)
|
||||||
|
{
|
||||||
|
#if _HIRCC_8M
|
||||||
|
GCC_DELAY(93);
|
||||||
|
#elif _HIRCC_4M
|
||||||
|
GCC_DELAY(43);
|
||||||
|
#else
|
||||||
|
GCC_DELAY(18);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void isink1_delay()
|
||||||
|
{
|
||||||
|
uint8_t i;
|
||||||
|
for(i = 0; i < ISINK1_DELAY; i++)
|
||||||
|
{
|
||||||
|
#if _HIRCC_8M
|
||||||
|
GCC_DELAY(93);
|
||||||
|
#elif _HIRCC_4M
|
||||||
|
GCC_DELAY(43);
|
||||||
|
#else
|
||||||
|
GCC_DELAY(18);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void opa_delay(uint8_t delay)
|
||||||
|
{
|
||||||
|
uint8_t i;
|
||||||
|
for(i = 0; i < delay; i++)
|
||||||
|
{
|
||||||
|
#if _HIRCC_8M
|
||||||
|
GCC_DELAY(193);
|
||||||
|
#elif _HIRCC_4M
|
||||||
|
GCC_DELAY(93);
|
||||||
|
#else
|
||||||
|
GCC_DELAY(43);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void afe_init()
|
||||||
|
{
|
||||||
|
opa_on();
|
||||||
|
isink0_on();
|
||||||
|
isink1_on();
|
||||||
|
while(read_adc() >= 0xf0)
|
||||||
|
{
|
||||||
|
GCC_CLRWDT();
|
||||||
|
_pb2 = 1;
|
||||||
|
_pton = 1;
|
||||||
|
delay(200);
|
||||||
|
_pb2 = 0;
|
||||||
|
_pton = 0;
|
||||||
|
delay(200);
|
||||||
|
}
|
||||||
|
isink0_off();
|
||||||
|
isink1_off();
|
||||||
|
opa_off();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user