Browse Source

Proper external crystal support

James Bowman 6 years ago
parent
commit
dbffdb2fbf
1 changed files with 7 additions and 5 deletions
  1. 7 5
      GD2.cpp

+ 7 - 5
GD2.cpp

@@ -520,9 +520,11 @@ void GDClass::begin(uint8_t options) {
   }
 #endif
 
+  byte external_crystal = 0;
+begin1:
   GDTR.begin1();
 
-#if 0
+#if 1
   Serial.println("ID REGISTER:");
   Serial.println(GDTR.rd(REG_ID), HEX);
 #endif
@@ -542,10 +544,10 @@ void GDClass::begin(uint8_t options) {
   cr.read(v8);
   if ((v8[1] == 0xff) && (v8[2] == 0x01)) {
     options &= ~(GD_TRIM | GD_CALIBRATE);
-    if (v8[3] & 2) {
-      GDTR.__end();
-      GDTR.hostcmd(0x44); // switch to external crystal
-      GDTR.resume();
+    if (!external_crystal && (v8[3] & 2)) {
+      GDTR.external_crystal();
+      external_crystal = 1;
+      goto begin1;
     }
     copyram(v8 + 4, 124);
     finish();