t-beam 1.0 power up working

This commit is contained in:
Hansi, dl9rdz 2019-10-05 17:16:04 +02:00
parent 04f35f6753
commit e57df45e5d
1 changed files with 62 additions and 34 deletions

View File

@ -29,6 +29,7 @@ static MainState mainState = ST_WIFISCAN; // ST_WIFISCAN;
AsyncWebServer server(80); AsyncWebServer server(80);
AXP20X_Class axp; AXP20X_Class axp;
#define PMU_IRQ 35
String updateHost = "rdzsonde.mooo.com"; String updateHost = "rdzsonde.mooo.com";
@ -885,7 +886,7 @@ void gpsTask(void *parameter) {
bool b = nmea.getAltitude(alt); bool b = nmea.getAltitude(alt);
bool valid = nmea.isValid(); bool valid = nmea.isValid();
uint8_t hdop = nmea.getHDOP(); uint8_t hdop = nmea.getHDOP();
//Serial.printf("\nDecode: valid: %d N %ld E %ld alt %ld (%d) dop:%d", valid?1:0, lat, lon, alt, b, hdop); Serial.printf("\nDecode: valid: %d N %ld E %ld alt %ld (%d) dop:%d", valid ? 1 : 0, lat, lon, alt, b, hdop);
} }
} }
delay(50); delay(50);
@ -1057,42 +1058,45 @@ bool axp192_found = false;
void scanI2Cdevice(void) void scanI2Cdevice(void)
{ {
byte err, addr; byte err, addr;
int nDevices = 0; int nDevices = 0;
for (addr = 1; addr < 127; addr++) { for (addr = 1; addr < 127; addr++) {
Wire.beginTransmission(addr); Wire.beginTransmission(addr);
err = Wire.endTransmission(); err = Wire.endTransmission();
if (err == 0) { if (err == 0) {
Serial.print("I2C device found at address 0x"); Serial.print("I2C device found at address 0x");
if (addr < 16) if (addr < 16)
Serial.print("0"); Serial.print("0");
Serial.print(addr, HEX); Serial.print(addr, HEX);
Serial.println(" !"); Serial.println(" !");
nDevices++; nDevices++;
if (addr == SSD1306_ADDRESS) { if (addr == SSD1306_ADDRESS) {
ssd1306_found = true; ssd1306_found = true;
Serial.println("ssd1306 display found"); Serial.println("ssd1306 display found");
} }
if (addr == AXP192_SLAVE_ADDRESS) { if (addr == AXP192_SLAVE_ADDRESS) {
axp192_found = true; axp192_found = true;
Serial.println("axp192 PMU found"); Serial.println("axp192 PMU found");
} }
} else if (err == 4) { } else if (err == 4) {
Serial.print("Unknow error at address 0x"); Serial.print("Unknow error at address 0x");
if (addr < 16) if (addr < 16)
Serial.print("0"); Serial.print("0");
Serial.println(addr, HEX); Serial.println(addr, HEX);
}
} }
if (nDevices == 0) }
Serial.println("No I2C devices found\n"); if (nDevices == 0)
else Serial.println("No I2C devices found\n");
Serial.println("done\n"); else
Serial.println("done\n");
} }
extern int initlevels[40]; extern int initlevels[40];
extern DispInfo *layouts; extern DispInfo *layouts;
bool pmu_irq = false;
void setup() void setup()
{ {
char buf[12]; char buf[12];
@ -1103,6 +1107,7 @@ void setup()
Serial.printf("%d:%d ", i, v); Serial.printf("%d:%d ", i, v);
} }
Serial.println(""); Serial.println("");
delay(2000);
for (int i = 0; i < 39; i++) { for (int i = 0; i < 39; i++) {
Serial.printf("%d:%d ", i, initlevels[i]); Serial.printf("%d:%d ", i, initlevels[i]);
@ -1123,12 +1128,21 @@ void setup()
// FOr T-Beam 1.0 // FOr T-Beam 1.0
Wire.begin(21, 22); Wire.begin(21, 22);
scanI2Cdevice(); // Make sure the whole thing powers up!?!?!?!?!?
U8X8 *u8x8 = new U8X8_SSD1306_128X64_NONAME_HW_I2C(0, 22, 21);
u8x8->initDisplay();
delay(500);
scanI2Cdevice();
if (!axp.begin(Wire, AXP192_SLAVE_ADDRESS)) { if (!axp.begin(Wire, AXP192_SLAVE_ADDRESS)) {
Serial.println("AXP192 Begin PASS"); Serial.println("AXP192 Begin PASS");
} else { } else {
Serial.println("AXP192 Begin FAIL"); Serial.println("AXP192 Begin FAIL");
while (1) {
Serial.println("...");
delay(2000);
}
} }
axp.setPowerOutPut(AXP192_LDO2, AXP202_ON); axp.setPowerOutPut(AXP192_LDO2, AXP202_ON);
axp.setPowerOutPut(AXP192_LDO3, AXP202_ON); axp.setPowerOutPut(AXP192_LDO3, AXP202_ON);
@ -1136,7 +1150,20 @@ void setup()
axp.setPowerOutPut(AXP192_EXTEN, AXP202_ON); axp.setPowerOutPut(AXP192_EXTEN, AXP202_ON);
axp.setPowerOutPut(AXP192_DCDC1, AXP202_ON); axp.setPowerOutPut(AXP192_DCDC1, AXP202_ON);
axp.setDCDC1Voltage(3300); axp.setDCDC1Voltage(3300);
pinMode(PMU_IRQ, INPUT_PULLUP);
attachInterrupt(PMU_IRQ, [] {
pmu_irq = true;
}, FALLING);
axp.adc1Enable(AXP202_BATT_CUR_ADC1, 1);
axp.enableIRQ(AXP202_VBUS_REMOVED_IRQ | AXP202_VBUS_CONNECT_IRQ | AXP202_BATT_REMOVED_IRQ | AXP202_BATT_CONNECT_IRQ, 1);
axp.clearIRQ();
delay(500);
scanI2Cdevice();
LORA_LED = sonde.config.led_pout; LORA_LED = sonde.config.led_pout;
pinMode(LORA_LED, OUTPUT); pinMode(LORA_LED, OUTPUT);
@ -1156,9 +1183,10 @@ void setup()
disp.init(); disp.init();
delay(100); delay(100);
Serial.println("Showing welcome display");
disp.rdis->welcome(); disp.rdis->welcome();
delay(3000); delay(3000);
Serial.println("Clearing display");
sonde.clearDisplay(); sonde.clearDisplay();
setupWifiList(); setupWifiList();