kopia lustrzana https://github.com/dl9rdz/rdz_ttgo_sonde
don't charge the battery using the battery :)
rodzic
af32d576d6
commit
cf612659e1
|
@ -1924,17 +1924,46 @@ void setup()
|
|||
// Display backlight on M5 Core2
|
||||
axp.setPowerOutPut(AXP192_DCDC3, AXP202_ON);
|
||||
axp.setDCDC3Voltage(3300);
|
||||
// SetBusPowerMode(0):
|
||||
// #define AXP192_GPIO0_CTL (0x90)
|
||||
// #define AXP192_GPIO0_VOL (0x91)
|
||||
// #define AXP202_LDO234_DC23_CTL (0x12)
|
||||
|
||||
// The axp class lacks a functino to set GPIO0 VDO to 3.3V (as is done by original M5Stack software)
|
||||
// so do this manually (default value 2.8V did not have the expected effect :))
|
||||
// data = Read8bit(0x91);
|
||||
// write1Byte(0x91, (data & 0X0F) | 0XF0);
|
||||
uint8_t reg;
|
||||
Wire.beginTransmission((uint8_t)AXP192_SLAVE_ADDRESS);
|
||||
Wire.write(AXP192_GPIO0_VOL);
|
||||
Wire.endTransmission();
|
||||
Wire.requestFrom(AXP192_SLAVE_ADDRESS, 1);
|
||||
reg = Wire.read();
|
||||
reg = (reg&0x0F) | 0xF0;
|
||||
Wire.beginTransmission((uint8_t)AXP192_SLAVE_ADDRESS);
|
||||
Wire.write(AXP192_GPIO0_VOL);
|
||||
Wire.write(reg);
|
||||
Wire.endTransmission();
|
||||
// data = Read8bit(0x90);
|
||||
// Write1Byte(0x90, (data & 0XF8) | 0X02)
|
||||
axp.setGPIOMode(AXP_GPIO_0, AXP_IO_LDO_MODE); // disable AXP supply from VBUS
|
||||
pmu_irq = 2; // IRQ pin is not connected on Core2
|
||||
// data = Read8bit(0x12); //read reg 0x12
|
||||
// Write1Byte(0x12, data | 0x40); // enable 3,3V => 5V booster
|
||||
// this is done below anyway: axp.setPowerOutPut(AXP192_EXTEN, AXP202_ON);
|
||||
|
||||
axp.adc1Enable(AXP202_ACIN_VOL_ADC1, 1);
|
||||
axp.adc1Enable(AXP202_ACIN_CUR_ADC1, 1);
|
||||
} else {
|
||||
// GPS on T-Beam, buzzer on M5 Core2
|
||||
axp.setPowerOutPut(AXP192_LDO3, AXP202_ON);
|
||||
axp.adc1Enable(AXP202_VBUS_VOL_ADC1, 1);
|
||||
axp.adc1Enable(AXP202_VBUS_CUR_ADC1, 1);
|
||||
}
|
||||
axp.setPowerOutPut(AXP192_DCDC2, AXP202_ON);
|
||||
axp.setPowerOutPut(AXP192_EXTEN, AXP202_ON);
|
||||
axp.setPowerOutPut(AXP192_DCDC1, AXP202_ON);
|
||||
axp.setDCDC1Voltage(3300);
|
||||
axp.adc1Enable(AXP202_VBUS_VOL_ADC1, 1);
|
||||
axp.adc1Enable(AXP202_VBUS_CUR_ADC1, 1);
|
||||
axp.adc1Enable(AXP202_BATT_CUR_ADC1, 1);
|
||||
if (sonde.config.button2_axp ) {
|
||||
if (pmu_irq != 2) {
|
||||
|
|
|
@ -1693,11 +1693,19 @@ void Display::drawBatt(DispEntry *de) {
|
|||
snprintf(buf, 30, "%.2f%s", val, de->extra+1);
|
||||
break;
|
||||
case 'U':
|
||||
val = axp.getVbusVoltage();
|
||||
if(sonde.config.type == TYPE_M5_CORE2) {
|
||||
val = axp.getAcinVoltage();
|
||||
} else {
|
||||
val = axp.getVbusVoltage();
|
||||
}
|
||||
snprintf(buf, 30, "%.2f%s", val/1000, de->extra+1);
|
||||
break;
|
||||
case 'I':
|
||||
val = axp.getVbusCurrent();
|
||||
if(sonde.config.type == TYPE_M5_CORE2) {
|
||||
val = axp.getAcinCurrent();
|
||||
} else {
|
||||
val = axp.getVbusCurrent();
|
||||
}
|
||||
snprintf(buf, 30, "%.2f%s", val, de->extra+1);
|
||||
break;
|
||||
case 'T':
|
||||
|
|
|
@ -85,6 +85,15 @@ static EPHEM_t *te;
|
|||
#define fread(buffer, siz, els, file) (file.read((uint8_t *)buffer, (siz)*(els))/siz)
|
||||
#define fgetc(file) (char)file.read()
|
||||
|
||||
int readDbl(File *fp, double *dbl) {
|
||||
uint8_t buf[20];
|
||||
int l = fp->read(buf, 19);
|
||||
if(l!=19) return -1;
|
||||
if (buf[15] == 'D') buf[15] = 'E';
|
||||
buf[19] = 0;
|
||||
sscanf((char *)buf, "%lf", dbl);
|
||||
return 0;
|
||||
}
|
||||
|
||||
EPHEM_t *read_RNXpephs(const char *file) {
|
||||
int l, i;
|
||||
|
@ -137,56 +146,84 @@ EPHEM_t *read_RNXpephs(const char *file) {
|
|||
strncpy(ephem.epoch+2, str, 15);
|
||||
ephem.epoch[16] = '\0';
|
||||
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.af0 = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.af1 = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.af2 = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.af0 = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.af1 = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.af2 = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.af0 = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.af1 = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.af2 = dbl;
|
||||
while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; }
|
||||
|
||||
l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.iode = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.crs = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.delta_n = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.M0 = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; //ephem.iode = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.crs = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.delta_n = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.M0 = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.iode = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.crs = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.delta_n = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.M0 = dbl;
|
||||
while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; }
|
||||
|
||||
l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cuc = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.e = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cus = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.sqrta = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.cuc = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.e = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.cus = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.sqrta = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cuc = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.e = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cus = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.sqrta = dbl;
|
||||
while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; }
|
||||
|
||||
l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.toe = dbl;
|
||||
ephem.toc = ephem.toe;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cic = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.Omega0 = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cis = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.toe = dbl; ephem.toc = ephem.toe;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.cic = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.Omega0 = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.cis = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.toe = dbl;
|
||||
// ephem.toc = ephem.toe;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cic = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.Omega0 = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.cis = dbl;
|
||||
while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; }
|
||||
|
||||
l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.i0 = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.crc = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.w = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.OmegaDot = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.i0 = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.crc = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.w = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.OmegaDot = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.i0 = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.crc = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.w = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.OmegaDot = dbl;
|
||||
while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; }
|
||||
|
||||
l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.idot = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.codeL2 = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.gpsweek = (int)dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.iodc = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.idot = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; //ephem.codeL2 = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.gpsweek = (int)dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; //ephem.iodc = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.idot = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.codeL2 = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.gpsweek = (int)dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.iodc = dbl;
|
||||
while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; }
|
||||
|
||||
l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.sva = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.health = (uint8_t)(dbl+0.1);
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.tgd = dbl;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.iodc = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; //ephem.sva = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.health = (uint8_t)(dbl+0.1);
|
||||
if(readDbl(&fp, &dbl)<0) break; ephem.tgd = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; //ephem.iodc = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.sva = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.health = (uint8_t)(dbl+0.1);
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); ephem.tgd = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.iodc = dbl;
|
||||
while ((c=fgetc(fp)) != '\n') { if (c == EOF) break; }
|
||||
|
||||
l = fread(buf, 3, 1, fp); if (l != 1) break; buf[ 3] = 0;
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.ttom = dbl;
|
||||
if(readDbl(&fp, &dbl)<0) break; //ephem.ttom = dbl;
|
||||
//l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.ttom = dbl;
|
||||
String l = fp.readStringUntil('\n');
|
||||
/* // die letzten beiden Felder (spare) sind manchmal leer (statt 0.00); manchmal fehlt sogar das drittletzte Feld
|
||||
l = fread(buf, 19, 1, fp); if (l != 1) break; if (buf[15] == 'D') buf[15] = 'E'; buf[19] = 0; sscanf(buf, "%lf", &dbl); //ephem.fit = dbl;
|
||||
|
|
Ładowanie…
Reference in New Issue