diff --git a/Documentation/images/20180119_125224.jpg b/Documentation/images/20180119_125224.jpg
new file mode 100644
index 0000000..c5e61ec
Binary files /dev/null and b/Documentation/images/20180119_125224.jpg differ
diff --git a/Documentation/images/ETXPolarHome1.jpg b/Documentation/images/ETXPolarHome1.jpg
new file mode 100644
index 0000000..70a2b05
Binary files /dev/null and b/Documentation/images/ETXPolarHome1.jpg differ
diff --git a/Documentation/images/ETXPolarHome2.jpg b/Documentation/images/ETXPolarHome2.jpg
new file mode 100644
index 0000000..b1c0d5c
Binary files /dev/null and b/Documentation/images/ETXPolarHome2.jpg differ
diff --git a/Documentation/images/HBX2EQG_bb.png b/Documentation/images/HBX2EQG_bb.png
deleted file mode 100644
index 3607b06..0000000
Binary files a/Documentation/images/HBX2EQG_bb.png and /dev/null differ
diff --git a/Documentation/images/IMG_20171126_090711.jpg b/Documentation/images/IMG_20171126_090711.jpg
new file mode 100644
index 0000000..0e04f35
Binary files /dev/null and b/Documentation/images/IMG_20171126_090711.jpg differ
diff --git a/Documentation/images/PCB_EQG2HBXv10_20181002100912.pdf b/Documentation/images/PCB_EQG2HBXv10_20181002100912.pdf
deleted file mode 100644
index 58abf5e..0000000
Binary files a/Documentation/images/PCB_EQG2HBXv10_20181002100912.pdf and /dev/null differ
diff --git a/Documentation/images/Schematic_EQG2HBX_EQG2HBXv10_20181002101013.pdf b/Documentation/images/Schematic_EQG2HBX_EQG2HBXv10_20181002101013.pdf
deleted file mode 100644
index 0a0b0e1..0000000
Binary files a/Documentation/images/Schematic_EQG2HBX_EQG2HBXv10_20181002101013.pdf and /dev/null differ
diff --git a/Documentation/images/EQG2HBXESP32_bb.png b/Hardware/EQG2HBXESP32_bb.png
similarity index 100%
rename from Documentation/images/EQG2HBXESP32_bb.png
rename to Hardware/EQG2HBXESP32_bb.png
diff --git a/Documentation/images/EQG2HBXESP32_schem.png b/Hardware/EQG2HBXESP32_schem.png
similarity index 100%
rename from Documentation/images/EQG2HBXESP32_schem.png
rename to Hardware/EQG2HBXESP32_schem.png
diff --git a/Hardware/HBX2EQG_bb.png b/Hardware/HBX2EQG_bb.png
index b7a73d8..3607b06 100644
Binary files a/Hardware/HBX2EQG_bb.png and b/Hardware/HBX2EQG_bb.png differ
diff --git a/Software/EQG2HBX-ESP32/.vs/EQG2HBXE32/v15/.suo b/Software/EQG2HBX-ESP32/.vs/EQG2HBXE32/v15/.suo
index d885ba4..64fd363 100644
Binary files a/Software/EQG2HBX-ESP32/.vs/EQG2HBXE32/v15/.suo and b/Software/EQG2HBX-ESP32/.vs/EQG2HBXE32/v15/.suo differ
diff --git a/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.bin b/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.bin
index 49a6f6c..9c18548 100644
Binary files a/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.bin and b/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.bin differ
diff --git a/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.cpp.o b/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.cpp.o
index ed3fc0c..389c4c7 100644
Binary files a/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.cpp.o and b/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.cpp.o differ
diff --git a/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.elf b/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.elf
index 32bacc1..5d6eaf8 100644
Binary files a/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.elf and b/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.elf differ
diff --git a/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.ino.bin b/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.ino.bin
index 49a6f6c..9c18548 100644
Binary files a/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.ino.bin and b/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.ino.bin differ
diff --git a/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.ino.elf b/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.ino.elf
index 32bacc1..5d6eaf8 100644
Binary files a/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.ino.elf and b/Software/EQG2HBX-ESP32/ARM/Release/EQG2HBXE32.ino.elf differ
diff --git a/Software/EQG2HBX-ESP32/ARM/Release/ESPAsyncWebServer-master/SPIFFSEditor.cpp.o b/Software/EQG2HBX-ESP32/ARM/Release/ESPAsyncWebServer-master/SPIFFSEditor.cpp.o
index ff1dbc3..6eabfb1 100644
Binary files a/Software/EQG2HBX-ESP32/ARM/Release/ESPAsyncWebServer-master/SPIFFSEditor.cpp.o and b/Software/EQG2HBX-ESP32/ARM/Release/ESPAsyncWebServer-master/SPIFFSEditor.cpp.o differ
diff --git a/Software/EQG2HBX-ESP32/ARM/Release/board.buildinfo b/Software/EQG2HBX-ESP32/ARM/Release/board.buildinfo
index 74fedd7..c184d81 100644
--- a/Software/EQG2HBX-ESP32/ARM/Release/board.buildinfo
+++ b/Software/EQG2HBX-ESP32/ARM/Release/board.buildinfo
@@ -232,10 +232,35 @@ vm.runtime.compiler.allow_library_debugging=false
serial.port.file=COM11
serial.port=COM11
serial.port.num=11
-extra.time.local=1551271724
-extra.time.utc=1551235724
+extra.time.local=1552836570
+extra.time.utc=1552800570
extra.time.dst=36000
extra.time.zone=-36000
+serial.port.caption=COM11 - Silicon Labs CP210x USB to UART Bridge
+serial.Caption=Silicon Labs CP210x USB to UART Bridge (COM11)
+serial.ClassGuid={4d36e978-e325-11ce-bfc1-08002be10318}
+serial.CompatibleID.value0=USB\Class_FF
+serial.ConfigManagerErrorCode=0
+serial.ConfigManagerUserConfig=False
+serial.CreationClassName=Win32_PnPEntity
+serial.Description=Silicon Labs CP210x USB to UART Bridge
+serial.DeviceID=USB\VID_10C4&PID_EA60\0001
+serial.HardwareID.value0=USB\VID_10C4&PID_EA60
+serial.Manufacturer=Silicon Labs
+serial.Name=Silicon Labs CP210x USB to UART Bridge (COM11)
+serial.PNPClass=Ports
+serial.PNPDeviceID=USB\VID_10C4&PID_EA60\0001
+serial.Present=True
+serial.Service=silabser
+serial.Status=OK
+serial.SystemCreationClassName=Win32_ComputerSystem
+serial.SystemName=JOHNWIN10PRO
+serial.vid=0x10C4
+serial.pid=0xEA60
+serial.vidpid=10C4EA60
+serial.vid_pid=0x10C4_0xEA60
+serial.iserial=0001
+serial.port.iserial=0001
build.project_name=EQG2HBXE32.ino
build.project_path=C:\Users\John\Documents\GitHub\EQMOD-ETX\Software\EQG2HBX-ESP32
sketch_path=C:\Users\John\Documents\GitHub\EQMOD-ETX\Software\EQG2HBX-ESP32
@@ -251,97 +276,97 @@ vm.build.verbose_build_properties=false
vm.build.export_binary=false
build.source.path=C:\Users\John\Documents\GitHub\EQMOD-ETX\Software\EQG2HBX-ESP32\EQG2HBXE32.ino
PreProcessor.HeaderCount=1
-PreProcessor.PrototypeCount=76
+PreProcessor.PrototypeCount=79
vm.last.preproc.file.0.file=EQG2HBXE32.ino
vm.last.preproc.file.0.offset=1
-vm.last.preproc.file.0.length=8952
-vm.last.preproc.file.0.linecount=278
+vm.last.preproc.file.0.length=8964
+vm.last.preproc.file.0.linecount=280
vm.last.preproc.file.0.linestart=0
-vm.last.preproc.file.0.lineend=278
+vm.last.preproc.file.0.lineend=280
vm.last.preproc.file.0.prefix_lines=0
vm.last.preproc.file.1.file=EQG2HBX.h
vm.last.preproc.file.1.offset=0
-vm.last.preproc.file.1.length=8888
-vm.last.preproc.file.1.linecount=192
-vm.last.preproc.file.1.linestart=278
-vm.last.preproc.file.1.lineend=470
+vm.last.preproc.file.1.length=9129
+vm.last.preproc.file.1.linecount=203
+vm.last.preproc.file.1.linestart=280
+vm.last.preproc.file.1.lineend=483
vm.last.preproc.file.1.prefix_lines=0
vm.last.preproc.file.2.file=EQGProtocol.h
vm.last.preproc.file.2.offset=0
-vm.last.preproc.file.2.length=9819
+vm.last.preproc.file.2.length=9817
vm.last.preproc.file.2.linecount=288
-vm.last.preproc.file.2.linestart=470
-vm.last.preproc.file.2.lineend=758
+vm.last.preproc.file.2.linestart=483
+vm.last.preproc.file.2.lineend=771
vm.last.preproc.file.2.prefix_lines=0
vm.last.preproc.file.3.file=EQGProtocol.ino
-vm.last.preproc.file.3.offset=279
-vm.last.preproc.file.3.length=39743
-vm.last.preproc.file.3.linecount=969
-vm.last.preproc.file.3.linestart=758
-vm.last.preproc.file.3.lineend=1727
+vm.last.preproc.file.3.offset=281
+vm.last.preproc.file.3.length=40883
+vm.last.preproc.file.3.linecount=990
+vm.last.preproc.file.3.linestart=771
+vm.last.preproc.file.3.lineend=1761
vm.last.preproc.file.3.prefix_lines=0
vm.last.preproc.file.4.file=ETXProtocol.h
vm.last.preproc.file.4.offset=0
-vm.last.preproc.file.4.length=3259
-vm.last.preproc.file.4.linecount=83
-vm.last.preproc.file.4.linestart=1727
-vm.last.preproc.file.4.lineend=1810
+vm.last.preproc.file.4.length=3473
+vm.last.preproc.file.4.linecount=91
+vm.last.preproc.file.4.linestart=1761
+vm.last.preproc.file.4.lineend=1852
vm.last.preproc.file.4.prefix_lines=0
vm.last.preproc.file.5.file=ETXProtocol.ino
-vm.last.preproc.file.5.offset=1248
-vm.last.preproc.file.5.length=32301
-vm.last.preproc.file.5.linecount=723
-vm.last.preproc.file.5.linestart=1810
-vm.last.preproc.file.5.lineend=2533
+vm.last.preproc.file.5.offset=1271
+vm.last.preproc.file.5.length=37121
+vm.last.preproc.file.5.linecount=840
+vm.last.preproc.file.5.linestart=1852
+vm.last.preproc.file.5.lineend=2692
vm.last.preproc.file.5.prefix_lines=0
vm.last.preproc.file.6.file=HBXComms.h
vm.last.preproc.file.6.offset=0
vm.last.preproc.file.6.length=1597
vm.last.preproc.file.6.linecount=52
-vm.last.preproc.file.6.linestart=2533
-vm.last.preproc.file.6.lineend=2585
+vm.last.preproc.file.6.linestart=2692
+vm.last.preproc.file.6.lineend=2744
vm.last.preproc.file.6.prefix_lines=0
vm.last.preproc.file.7.file=HBXComms.ino
-vm.last.preproc.file.7.offset=1971
+vm.last.preproc.file.7.offset=2111
vm.last.preproc.file.7.length=9104
vm.last.preproc.file.7.linecount=335
-vm.last.preproc.file.7.linestart=2585
-vm.last.preproc.file.7.lineend=2920
+vm.last.preproc.file.7.linestart=2744
+vm.last.preproc.file.7.lineend=3079
vm.last.preproc.file.7.prefix_lines=0
vm.last.preproc.file.8.file=HBXFileSystem.h
vm.last.preproc.file.8.offset=0
vm.last.preproc.file.8.length=262
vm.last.preproc.file.8.linecount=13
-vm.last.preproc.file.8.linestart=2920
-vm.last.preproc.file.8.lineend=2933
+vm.last.preproc.file.8.linestart=3079
+vm.last.preproc.file.8.lineend=3092
vm.last.preproc.file.8.prefix_lines=0
vm.last.preproc.file.9.file=HBXFileSystem.ino
-vm.last.preproc.file.9.offset=2306
+vm.last.preproc.file.9.offset=2446
vm.last.preproc.file.9.length=2332
vm.last.preproc.file.9.linecount=101
-vm.last.preproc.file.9.linestart=2933
-vm.last.preproc.file.9.lineend=3034
+vm.last.preproc.file.9.linestart=3092
+vm.last.preproc.file.9.lineend=3193
vm.last.preproc.file.9.prefix_lines=0
vm.last.preproc.file.10.file=HBXWiFiServer.h
vm.last.preproc.file.10.offset=0
vm.last.preproc.file.10.length=3074
vm.last.preproc.file.10.linecount=117
-vm.last.preproc.file.10.linestart=3034
-vm.last.preproc.file.10.lineend=3151
+vm.last.preproc.file.10.linestart=3193
+vm.last.preproc.file.10.lineend=3310
vm.last.preproc.file.10.prefix_lines=0
vm.last.preproc.file.11.file=HBXWiFiServer.ino
-vm.last.preproc.file.11.offset=2407
-vm.last.preproc.file.11.length=16146
+vm.last.preproc.file.11.offset=2547
+vm.last.preproc.file.11.length=16150
vm.last.preproc.file.11.linecount=488
-vm.last.preproc.file.11.linestart=3151
-vm.last.preproc.file.11.lineend=3639
+vm.last.preproc.file.11.linestart=3310
+vm.last.preproc.file.11.lineend=3798
vm.last.preproc.file.11.prefix_lines=0
vm.last.preproc.file.12.file=Hardware.h
vm.last.preproc.file.12.offset=0
vm.last.preproc.file.12.length=1406
vm.last.preproc.file.12.linecount=49
-vm.last.preproc.file.12.linestart=3639
-vm.last.preproc.file.12.lineend=3688
+vm.last.preproc.file.12.linestart=3798
+vm.last.preproc.file.12.lineend=3847
vm.last.preproc.file.12.prefix_lines=0
vm.sketch_source_path=C:\Users\Anne\AppData\Local\Temp\VMBuilds\EQG2HBXE32\espressif_esp32doit-devkit-v1\Release
vm.build_use_temp=1
diff --git a/Software/EQG2HBX-ESP32/EQG2HBX.h b/Software/EQG2HBX-ESP32/EQG2HBX.h
index 6ff8afb..36918bd 100644
--- a/Software/EQG2HBX-ESP32/EQG2HBX.h
+++ b/Software/EQG2HBX-ESP32/EQG2HBX.h
@@ -96,6 +96,7 @@ typedef struct {
unsigned char HBXBitCount; // #bits left to process
unsigned char Command; // Current command
+ unsigned char Flip; // Axis flipped - Alt for negative, Az probably never
unsigned char HBXData; // Data byte from HBX Bus
unsigned char HBXP1; // HBX status/data - MSB
unsigned char HBXP2; // HBX status/data - LSB
@@ -108,11 +109,12 @@ typedef struct {
char HBXSnapPort; // Snap port
char LEDValue; // Polar LED brightness
char ETXSpeedCommand; // Current ETX Speed command
- long Speed; // Move speed
+ long EQGSpeed; // Move speed
+ long ETXSpeed; // Move speed
long TargetSpeed; // Target Move speed
char SpeedState; // Slowdown/speedup state
long Position; // Current position
- long Target; // Current target delta
+ long Target; // Current target
long Increment; // Change in position for motor speed calcs
long SlowDown; // Point to change to lower speed
long Offset; // Current adjustment
@@ -134,11 +136,13 @@ typedef struct {
// SOLARRATE = (SOLARSECS/SIDEREALSECS) * SIDEREALRATE
// LUNARRATE = (SOLARSECS/SIDEREALSECS) * SIDEREALRATE
// DEGREERATE1 = 240 * SIDEREALRATE
+// BASERATE = (b * arcsec360) / a
unsigned long SIDEREALRATE; // Constants
unsigned long SOLARRATE;
unsigned long LUNARRATE;
- unsigned long DEGREERATE1;
+ unsigned long BASERATE;
+ unsigned long DEGREERATE1;
// PEC = a-VALUE / WormTeeth;
unsigned long PEC; // PEC period (period of worm tooth)
@@ -163,6 +167,13 @@ unsigned char protocol = 0; // Default protocol (UDP)
unsigned char station = 0; // Default station (AP)
char scope[16] = "ETX60";
+char * axis_name[3] =
+{
+ "Bad",
+ "Az ",
+ "Alt"
+};
+
axis_values ratio[16][2] = // 16 scopes, Az, Alt
{
{{36, 91.1458333, 1, 94, "ETX60"}, {36, 157.5, 1, 58, "ETX60"}}, // ETX60/70/80
diff --git a/Software/EQG2HBX-ESP32/EQG2HBXE32.ino b/Software/EQG2HBX-ESP32/EQG2HBXE32.ino
index 816a6d1..67cf299 100644
--- a/Software/EQG2HBX-ESP32/EQG2HBXE32.ino
+++ b/Software/EQG2HBX-ESP32/EQG2HBXE32.ino
@@ -131,13 +131,12 @@ void setup()
protocol = (preferences.getUChar("STATION", 0));
}
dbgSerial.print("Station: ");
- dbgSerial.print(station);
- dbgSerial.print(", ");
+ dbgSerial.println(station);
preferences.end();
AzInitialise(telescope);
AltInitialise(telescope);
- PrintRatioValues(telescope);
+ //PrintRatioValues(telescope);
PrintHbxValues(AzMotor);
PrintHbxValues(AltMotor);
@@ -239,6 +238,9 @@ void loop()
if (StateSelect) CheckETXState(AzMotor);
else CheckETXState(AltMotor);
}
+
+//jma CheckAltFlipReqd();
+
if ((micros() - StatusTimer) > (STATUSDELAY * 1000)) { // ~50mS
if (StatusSelect) StatusSelect = false;
else StatusSelect = true;
diff --git a/Software/EQG2HBX-ESP32/EQG2HBXE32.vcxproj b/Software/EQG2HBX-ESP32/EQG2HBXE32.vcxproj
index 6873a43..d51c987 100644
--- a/Software/EQG2HBX-ESP32/EQG2HBXE32.vcxproj
+++ b/Software/EQG2HBX-ESP32/EQG2HBXE32.vcxproj
@@ -218,7 +218,7 @@
-
+
\ No newline at end of file
diff --git a/Software/EQG2HBX-ESP32/EQGProtocol.h b/Software/EQG2HBX-ESP32/EQGProtocol.h
index b38e30a..f44ea8a 100644
--- a/Software/EQG2HBX-ESP32/EQGProtocol.h
+++ b/Software/EQG2HBX-ESP32/EQGProtocol.h
@@ -211,7 +211,7 @@ enum SkywatcherSetFeatureCmd
#define AAZEQ6 0x00B008 // WiFi, !:J3, PolarLED ; AZ/EQ
// Motor firmware versions
-#define VEQ6 0x000204 // Pretend EQ6 V 2.04 yyyy.mm.dd
+#define VEQ6 0x000402 // Pretend EQ6 V 2.04 yyyy.mm.dd
#define VHEQ5 0x010204 // Pretend HEQ5 V 2.04 yyyy.mm.dd
#define VEQ5 0x020207 // Pretend EQ5 V 2.07 yyyy.mm.dd
#define VEQ3 0x030207 // Pretend EQ3 V 2.07 yyyy.mm.dd
@@ -223,19 +223,19 @@ enum SkywatcherSetFeatureCmd
#define EQGASSETS AEQ6
-// :I := ( :b * 1296000 / :a ) / Speed ( where Speed is in arcsec/sec )
+// :I := ( :b * (360*60*60) / :a ) / Speed ( where Speed is in arcsec/sec )
// If :I is greater than about 10, then the slew will need to use :G = LoSpeed mode
// If :I is less than 10, then the slew will need :G = HiRate, and :I := I * :g
// a-AxxValue (Ticks/rev) := AxxVanes * 4 * AxxGbxRatio * ( Axx Transfer ) * AxxWormTeeth
-// b-AxxValue := 6460.09 * AxxRatio * a-AxxValue * 15.041069 / 1,296,000
+// b-AxxValue := 6460.09 * AxxRatio * a-AxxValue * 15.041069 / (360*60*60)
-// Speed = g*(b*129600/a)/I
+// Speed = g*(b*(360*60*60)/a)/I
// ==============================
-// IVALUE = (axis[EQGMOTOR].bVALUE * 1296000) / axis[EQGMOTOR].STEPSPER360)
+// IVALUE = (axis[EQGMOTOR].bVALUE * (360*60*60)) / axis[EQGMOTOR].STEPSPER360)
#define EQG_gVALUE 0x000010
-#define EQGMAXIMUMSPEED 12 // 0x0C
+#define EQGMAXIMUMSPEED 12
// EQG 'G' Command - SET move parameters
#define DIRECTION 0x00000001 // Increasing(0) Decreasing(1)
diff --git a/Software/EQG2HBX-ESP32/EQGProtocol.ino b/Software/EQG2HBX-ESP32/EQGProtocol.ino
index ee32a68..bedf12a 100644
--- a/Software/EQG2HBX-ESP32/EQGProtocol.ino
+++ b/Software/EQG2HBX-ESP32/EQGProtocol.ino
@@ -228,9 +228,9 @@ In HiSpeed mode, you must issue a stop, resend :G, reset :I then restart.
// ===============================
void EQGState(void) {
while ((EQGRxiPtr != EQGRxoPtr) && (EQGDone == 0)) {
- if (dbgFlag == 1) {
-// if (EQGRxBuffer[EQGRxoPtr] == 'j')
-// dbgFlag = 0;
+/* if (dbgFlag == 1) {
+ if (EQGRxBuffer[EQGRxoPtr] == 'j')
+ dbgFlag = 0;
}
if (EQGRxBuffer[EQGRxoPtr] == ':') {
dbgSerial.println("");
@@ -240,7 +240,7 @@ void EQGState(void) {
if (dbgFlag) {
dbgSerial.write(EQGRxBuffer[EQGRxoPtr]);
}
-
+*/
EQGRxChar = EQGRxBuffer[EQGRxoPtr++]; // Get a character
if ((EQGRxState < EQG_WAITFORCR) && (EQGRxChar < ' ')) {
EQGRxState = EQG_INTERPRET; // Terminate on non-alpha
@@ -497,12 +497,12 @@ void EQGState(void) {
}
void EQGError(unsigned char errorbyte) {
- EQGTx('!') ; // Failure - Bad Parameters
+ EQGTx('!') ; // Failure - Bad Parameters
EQGTx(errorbyte);
EQGTx(CR);
- EQGDone = 0; // Process errors
+ EQGDone = 0; // Process errors
EQGRxState = EQG_CMNDSTART;
- EQGRxCount = 0; // Count for # parameters
+ EQGRxCount = 0; // Count for # parameters
EQGErrorValue = 0;
}
@@ -562,12 +562,12 @@ void EQGAction(void) {
EQGTxHex6(axis[EQGMOTOR].Position);
break;
- case 'm': // GET Point at which to change from fast to slow
+ case 'm': // GET Point at which to change from fast to slow
EQGTxHex6(axis[EQGMOTOR].SlowDown);
break;
- case 'q': // GET mount capabilities
- EQGTxHex6(EQGASSETS); // Say EQ and AZ
+ case 'q': // GET mount capabilities
+ EQGTxHex6(EQGASSETS); // Say EQ and AZ
break;
case 's': // PEC period
@@ -575,50 +575,56 @@ void EQGAction(void) {
break;
case 'E': // Set current motor position
- axis[EQGMOTOR].Position = EQGP1;
- break;
+ if ((EQGP1 == 0x800000) || (EQGP1 == 0x85049c))
+ break;
+ else axis[EQGMOTOR].Position = EQGP1;
+ break;
case 'F': // Initialize and activate motors
axis[EQGMOTOR].EQGMotorStatus |= MOVEACTIVE;
axis[EQGMOTOR].ETXMotorStatus |= MOVEACTIVE;
break;
- case 'G': // EQG 'G' Command :GxAB[0D]
+ case 'G': // EQG 'G' Command :GxAB[0D]
- // See below for A
+// See below for A
+// ===============
// B nibble
- // B = '0' +CW and Nthn Hemi
- // '1' -CCW and Nthn Hemi
- // '2' +CW and Sthn Hemi
- // '3' -CCW and Sthn Hemi
- // xxx0 0 means +ve, 1 = -ve "motor" direction, ie code takes care of whats N/S/E/W etc
- // +ve speed in RA is Axis moves CW when viewed from pole
- // +ve speed in DEC is Axis moves CCW when viewed from above
- // xx0x 0 means Nthn Hemi else Sthn Hemi ( ST4 guiding related ) ?????
- // Note! when using :S type gotos, the direction bit here "appears" to be ignored
- // Also note that EQMOD does not appear to send the Hemisphere bit
- //
- // xxx0 CW(0) CCW(1) DIRECTION
- // xx0x North(0) South(1) HEMISPHERE
+// --------
+ // B = '0' +CW and Nthn Hemi
+ // '1' -CCW and Nthn Hemi
+ // '2' +CW and Sthn Hemi
+ // '3' -CCW and Sthn Hemi
+ // xxx0 0 means +ve, 1 = -ve "motor" direction, ie code takes care of whats N/S/E/W etc
+ // +ve speed in RA is Axis moves CW when viewed from pole
+ // +ve speed in DEC is Axis moves CCW when viewed from above (OTA horizontal, facing E->W ?)
+ // xx0x 0 means Nthn Hemi else Sthn Hemi ( ST4 guiding related ) ?????
+ // Note! when using :S type gotos, the direction bit here "appears" to be ignored
+ // Also note that EQMOD does not appear to send the Hemisphere bit
+ //
+ // xxx0 CW(0) CCW(1) DIRECTION
+ // xx0x North(0) South(1) HEMISPHERE
axis[EQGMOTOR].DirnSpeed = (int)EQGP1; // Save the command value
switch (axis[EQGMOTOR].DirnSpeed & 0x03) {
case 0x00:
case 0x02:
axis[EQGMOTOR].EQGMotorStatus &= ~MOVEDECR;
-// dbgSerial.print(" +CW ");
+dbgSerial.print(" +CW ");
break;
case 0x01:
case 0x03:
axis[EQGMOTOR].EQGMotorStatus |= MOVEDECR;
-// dbgSerial.print(" -CCW ");
+dbgSerial.print(" -CCW ");
break;
default:
break;
}
+// When setting "Slew" data, it also requires a set procedure
+// G sets direction and speed "range", and must be sent when stopped.
// A nibble
- // A = '0' high speed GOTO slewing, doesnt make "bitmapped" sense, but it is as coded by SkyWatcher????? ?????
+ // A = '0' high speed GOTO slewing, doesnt make "bitmapped" sense, but it is as coded by SkyWatcher
// '1' low speed slewing mode, all other bytes use bitmapping ( incl :f ), this doesnt
// '2' low speed GOTO mode,
// '3' high speed slewing mode
@@ -631,27 +637,27 @@ void EQGAction(void) {
case 00: // 0 HIGH SPEED GOTO
axis[EQGMOTOR].EQGMotorStatus &= ~MOVESLEW; // GoTo target
axis[EQGMOTOR].EQGMotorStatus |= MOVEHIGH; // Enable high speed multiplier
-// dbgSerial.print("HIGH SPEED GOTO");
+dbgSerial.print("HIGH SPEED GOTO ");
break;
case 01: // 1 LOW SPEED SLEW
axis[EQGMOTOR].EQGMotorStatus |= MOVESLEW; // Just move the axis
axis[EQGMOTOR].EQGMotorStatus &= ~MOVEHIGH; // Disable high speed multiplier
-// dbgSerial.print("LOW SPEED SLEW");
+dbgSerial.print("LOW SPEED SLEW ");
break;
case 02: // 2 LOW SPEED GOTO
axis[EQGMOTOR].EQGMotorStatus &= ~MOVESLEW; // GoTo target
axis[EQGMOTOR].EQGMotorStatus &= ~MOVEHIGH; // Disable high speed multiplier
-// dbgSerial.print("LOW SPEED GOTO");
+dbgSerial.print("LOW SPEED GOTO ");
break;
case 03: // 3 HIGH SPEED SLEW
axis[EQGMOTOR].EQGMotorStatus |= MOVESLEW; // Just move the axis
axis[EQGMOTOR].EQGMotorStatus |= MOVEHIGH; // Enable high speed multiplier
-// dbgSerial.print("HIGH SPEED SLEW");
+dbgSerial.print("HIGH SPEED SLEW ");
break;
}
+dbgSerial.print(axis[EQGMOTOR].TargetSpeed);
axis[EQGMOTOR].ETXMotorStatus = axis[EQGMOTOR].EQGMotorStatus; // Copy the status for ETXProtocol
-
break;
case 'H': // Set the goto target increment
@@ -661,10 +667,22 @@ void EQGAction(void) {
else
axis[EQGMOTOR].Target = axis[EQGMOTOR].Position + axis[EQGMOTOR].Increment; // add the relative target
axis[EQGMOTOR].MotorControl |= GoToHBX;
-
break;
case 'I': // Set motor speed
+/*
+ :I is used to set the speed.
+ The value used is basically the number of timer interrupts per microstep
+ ------------------------------------------------------------------------
+ :I = (:b * ArcSecs360 / :a) / Speed (where Speed is in arcsec/sec, ArcSecs360=360*60*60=129600)
+ Speed = :g * (:b * ArcSecs360 / :a) / I
+ =======================================
+ If :I is greater than about 10, then the slew will need to use :G = LoSpeed mode
+ If :I is less than 10, then the slew will need :G = HiRate, and :I = :I * :g
+ In LoSpeed mode, once moving, simply resending a new :I will cause the speed to change.
+ In HiSpeed mode, you must issue a stop, resend :G, reset :I then restart.
+ :b = :I * Speed / g * :a / ArcSecs360
+*/
// From EQMOD
// Multiplier = EQGSidereal / :I
@@ -675,14 +693,16 @@ void EQGAction(void) {
// SpeedHi = ETXSidereal * MultiplierHi
// Calculation
-// Speed = SiderealRate * (:ISidereal / )
+// Speed = SiderealRate * (Sidereal / :I)
// SpeedHi = SiderealRate * ((Sidereal*g) / :I)
- axis[EQGMOTOR].TargetSpeed = EQGP1; // Set the target speed
- break;
+
+ axis[EQGMOTOR].EQGSpeed = EQGP1; // Set EQG speed value
+ axis[EQGMOTOR].TargetSpeed = EQGP1; // Set ETX target speed
+ break;
case 'J': // Tell motor to Go
- axis[EQGMOTOR].ETXMotorStatus |= MOVEAXIS; // Signal moving
+ axis[EQGMOTOR].ETXMotorStatus |= MOVEAXIS; // Signal moving
axis[EQGMOTOR].ETXMotorState = ETXCheckStartup; // General entry
break;
@@ -696,7 +716,8 @@ void EQGAction(void) {
case 'L': // Tell motor to stop immediately
axis[EQGMOTOR].EQGMotorStatus |= MOVESLEW; // Clear speed change
- axis[EQGMOTOR].TargetSpeed = 0;
+ axis[EQGMOTOR].ETXMotorStatus |= MOVESLEW; // Set slew as default
+ axis[EQGMOTOR].TargetSpeed = 0;
axis[EQGMOTOR].ETXMotorState = ETXStopMotor; // Immediate stop
break;
@@ -833,7 +854,7 @@ void debugEQG() {
dbgSerial.print(" Tgt: ");
dbgSerial.print(axis[AzMotor].Target, HEX);
dbgSerial.print(" Speed: ");
- dbgSerial.print(axis[AzMotor].Speed, HEX);
+ dbgSerial.print(axis[AzMotor].ETXSpeed, HEX);
dbgSerial.print(", Alt:<");
dbgSerial.print(axis[AltMotor].EQGMotorStatus, HEX);
@@ -844,7 +865,7 @@ void debugEQG() {
dbgSerial.print(" Tgt: ");
dbgSerial.print(axis[AltMotor].Target, HEX);
dbgSerial.print(" Speed: ");
- dbgSerial.print(axis[AltMotor].Speed, HEX);
+ dbgSerial.print(axis[AltMotor].ETXSpeed, HEX);
/*
while (dbgRxoPtr != dbgRxiPtr) {
dbgCommand[dbgIndex] = dbgRxBuffer[dbgRxoPtr]; // Copy character
diff --git a/Software/EQG2HBX-ESP32/ETXProtocol.h b/Software/EQG2HBX-ESP32/ETXProtocol.h
index 19c8feb..3eb4c32 100644
--- a/Software/EQG2HBX-ESP32/ETXProtocol.h
+++ b/Software/EQG2HBX-ESP32/ETXProtocol.h
@@ -49,13 +49,20 @@
#define ETXCheckStop 7
#define ETXStopMotor 8
#define ETXMotorEnd 9
+// ETX axis State Machine
+#define NORMAL 0
+#define FLIP 1
+#define FLIPPED 2
+#define UNFLIP 3
+#define FLIPPING 4
+#define UNFLIPPING 5
const float ETX60PERIOD = 152.587891; // (1/6.5536mS)
const unsigned long ETX_CENTRE = 0x00800000; // RA, DEC;
const float MeadeSidereal = 6460.0900; // Refer Andrew Johansen - Roboscope
-const float SiderealArcSecs = 15.041069; // Sidereal arcsecs/sec
+const float SiderealArcSecs = 15.041069; // Sidereal arcsecs/sec (ArcSec360/Sidereal secs)
const float ArcSecs360 = 1296000; // Arcsecs / 360
@@ -71,12 +78,13 @@ const float ArcSecs360 = 1296000; // Arcsecs / 360
#define ETXSLOWPOSN 0x00000800 // Point at which to start slowdown
-bool HBXGetStatus(unsigned char);
+// bool HBXGetStatus(unsigned char);
+/*
bool HBXSetMotorState(unsigned char);
bool HBXCheckTargetStatus(unsigned char);
bool HBXUpdatePosn(void);
bool HBXStartMotor(unsigned char);
bool HBXStopMotor(unsigned char);
void PositionPoll(unsigned char);
-
+*/
diff --git a/Software/EQG2HBX-ESP32/ETXProtocol.ino b/Software/EQG2HBX-ESP32/ETXProtocol.ino
index c3fa81a..0788f25 100644
--- a/Software/EQG2HBX-ESP32/ETXProtocol.ino
+++ b/Software/EQG2HBX-ESP32/ETXProtocol.ino
@@ -17,67 +17,64 @@ bool ETXState(unsigned char Motor) {
break;
case ETXCheckStartup:
- if (axis[Motor].ETXMotorStatus & MOVEAXIS) { // Start moving
+ if (axis[Motor].ETXMotorStatus & MOVEAXIS) { // Start moving
+//jma CheckAltFlip(Motor);
-//dbgSerial.println(""); dbgSerial.print("ETXCheckStartup - Motor: "); dbgSerial.print(Motor); dbgSerial.print(" MOVE");
+ dbgSerial.println(""); dbgSerial.print("ETXCheckStartup - Motor: "); dbgSerial.print(axis_name[Motor]); dbgSerial.print(" MOVING");
- distance = axis[Motor].Target - axis[Motor].Position; // Distance to target
- if (axis[Motor].ETXMotorStatus & MOVEDECR) // If it is decreasing
- distance = TwosComplement(distance);
+ if (axis[Motor].ETXMotorStatus & MOVESLEW) {
+ axis[Motor].ETXMotorState = ETXSlewMotor; // Move axis using high speed multiplier
+ if (axis[Motor].ETXMotorStatus & MOVEHIGH) {
+ dbgSerial.print(" HIGH SLEW");
+ }
+ else {
+ axis[Motor].ETXMotorState = ETXCheckSpeed;
+ dbgSerial.print(" LOW SLEW");
+ }
+ }
+ else { // GoTo or Low Speed Slew
+ axis[Motor].ETXMotorState = ETXCheckSpeed;
+ dbgSerial.print(" GOTO");
+ }
-//dbgSerial.print(" Distance: "); dbgSerial.print(distance);
+ if (axis[Motor].MotorControl & GoToHBX) { // Check GoTo?
+ distance = axis[Motor].Target - axis[Motor].Position; // Distance to target
+ if (axis[Motor].ETXMotorStatus & MOVEDECR) // If it is decreasing
+ distance = TwosComplement(distance);
+ dbgSerial.print(" Distance: "); dbgSerial.print(distance);
+ if (axis[Motor].MotorControl & SlewHBX) { // May need to slew for large changes
+ axis[Motor].ETXMotorState = ETXSlewMotor; // Slew to M-point
+ }
+ else {
+ axis[Motor].ETXMotorState = ETXCheckSpeed;
+ axis[Motor].TargetSpeed = axis[Motor].DEGREERATE1; // Set initial speed for 'HIGH SPEED GOTO'
+ if (distance < axis[Motor].OneDegree)
+ axis[Motor].TargetSpeed = (axis[Motor].TargetSpeed >> 1);
+ if (distance < (axis[Motor].OneDegree >> 2))
+ axis[Motor].TargetSpeed = (axis[Motor].TargetSpeed >> 1);
+ axis[Motor].ETXSpeed = 0; // Starting from 0
- if (axis[Motor].ETXMotorStatus & MOVEHIGH) { // High Speed Slew ?
- if (axis[Motor].ETXMotorStatus & MOVESLEW) {
- axis[Motor].ETXMotorState = ETXSlewMotor; // Move axis using high speed multiplier
+ dbgSerial.print(" GoToSTEP");
+ }
+ if (distance < OffsetMax) { // Check for really small moves (< 16 steps)
+ axis[Motor].ETXMotorState = ETXMotorEnd; // Use Adjust offset
-//dbgSerial.print(" HIGH SLEW");
-
- }
- }
- else { // GoTo or Low Speed Slew
- axis[Motor].ETXMotorState = ETXCheckSpeed;
-
-//dbgSerial.print(" GOTO");
-
- }
-
- if (axis[Motor].MotorControl & GoToHBX) { // Check GoTo?
- if (axis[Motor].MotorControl & SlewHBX) { // May need to slew for large changes
- axis[Motor].ETXMotorState = ETXSlewMotor; // Slew to M-point
-
-//dbgSerial.print(" SLEW");
-
- }
- else {
- axis[Motor].ETXMotorState = ETXCheckSpeed;
- axis[Motor].TargetSpeed = axis[Motor].DEGREERATE1; // Set initial speed for 'HIGH SPEED GOTO'
- if (distance < axis[Motor].OneDegree)
- axis[Motor].TargetSpeed = (axis[Motor].TargetSpeed >> 1);
- if (distance < (axis[Motor].OneDegree >> 2))
- axis[Motor].TargetSpeed = (axis[Motor].TargetSpeed >> 1);
- axis[Motor].Speed = 0; // Starting from 0
-
-//dbgSerial.print(" STEP");
- }
- if (distance < OffsetMax) { // Check for really small moves (< 16 steps)
- axis[Motor].ETXMotorState = ETXMotorEnd; // Use Adjust offset
-
-//dbgSerial.print(" OFFSET");
- }
- if (distance > (axis[Motor].OneDegree << 3)) { // Always slew for > 8 degrees
- axis[Motor].ETXMotorState = ETXSlewMotor;
-//dbgSerial.print(" GoToSLEW");
- }
- }
- }
+ dbgSerial.print(" GoToOFFSET");
+ }
+ if (distance > (axis[Motor].OneDegree << 3)) { // Always slew for > 8 degrees
+ axis[Motor].ETXMotorState = ETXSlewMotor;
+ dbgSerial.print(" GoToSLEW");
+ }
+ }
+ }
+
break;
case ETXSlewMotor:
-//dbgSerial.println(""); dbgSerial.print("ETXSlewMotor Motor: "); dbgSerial.print(Motor); dbgSerial.print(" SLEW Cmd: ");
+//dbgSerial.println(""); dbgSerial.print("ETXSlewMotor Motor: "); dbgSerial.print(axis_name[Motor]); dbgSerial.print(" SLEW Cmd: ");
- digitalWrite(SCOPELED, HIGH); // Turn on the LED
+ digitalWrite(SCOPELED, HIGH); // Turn on the LED
HBXSendCommand(Stop, Motor); // Stop the motor
if (axis[Motor].ETXMotorStatus & MOVEDECR) // -ve i.e. -CCW
@@ -90,7 +87,7 @@ bool ETXState(unsigned char Motor) {
HBXSendCommand(axis[Motor].Command, Motor); // SLEW
axis[Motor].EQGMotorStatus |= MOVEAXIS; // Tell EQx
- axis[Motor].Speed = axis[Motor].DEGREERATE1; // Set "current speed" for later speed checks
+ axis[Motor].ETXSpeed = axis[Motor].DEGREERATE1; // Set "current speed" for later speed checks
if (axis[Motor].MotorControl & GoToHBX) { // Check if slew was caused by a high speed long distance GoTo
distance = axis[Motor].Target - axis[Motor].Position; // Check Distance to target
@@ -101,32 +98,42 @@ bool ETXState(unsigned char Motor) {
axis[Motor].ETXMotorState = ETXStepMotor;
axis[Motor].MotorControl |= SpeedHBX; // Use 0x01 command for next speed
axis[Motor].TargetSpeed = axis[Motor].DEGREERATE1; // Set initial speed
- axis[Motor].Speed = axis[Motor].DEGREERATE1;
+ axis[Motor].ETXSpeed = axis[Motor].DEGREERATE1;
axis[Motor].SpeedState = 0;
//dbgSerial.print(" GoToSLEW END");
}
}
if (axis[Motor].MotorControl & SlewHBX) { // Slewing to M-point
- axis[Motor].Speed = axis[Motor].DEGREERATE1; // Indicate current speed (approx)
+ axis[Motor].ETXSpeed = axis[Motor].DEGREERATE1; // Indicate current speed (approx)
axis[Motor].ETXMotorState = ETXCheckSlowDown; // Slew until SlowDown
}
-/*
-dbgSerial.println(""); dbgSerial.print("ETXSlewMotor Motor: "); dbgSerial.print(Motor);
+//*
+dbgSerial.println(""); dbgSerial.print("ETXSlewMotor Motor: "); dbgSerial.print(axis_name[Motor]);
dbgSerial.print(" ");
dbgSerial.print(", Cmd: "); dbgSerial.print(axis[Motor].Command, HEX);
dbgSerial.print(", Pos: "); dbgSerial.print(axis[Motor].Position, HEX);
dbgSerial.print(", Inc: "); dbgSerial.print(axis[Motor].Increment, HEX);
dbgSerial.print("->Tgt: "); dbgSerial.print(axis[Motor].Target, HEX);
-dbgSerial.print(" Speed: "); dbgSerial.print(axis[Motor].Speed, HEX);
+dbgSerial.print(" Speed: "); dbgSerial.print(axis[Motor].ETXSpeed, HEX);
dbgSerial.print(" TargetSpeed: "); dbgSerial.print(axis[Motor].TargetSpeed, HEX);
dbgSerial.print(" SpeedState: "); dbgSerial.println(axis[Motor].SpeedState, HEX);
-*/
+//*/
break;
case ETXStepMotor:
-//dbgSerial.println(""); dbgSerial.print("ETXStepMotor Motor: "); dbgSerial.print(Motor); dbgSerial.print(" STEP Cmd: ");
+//*
+dbgSerial.println(""); dbgSerial.print("ETXStepMotor Motor: "); dbgSerial.print(axis_name[Motor]);
+dbgSerial.print(" ");
+dbgSerial.print(", Cmd: "); dbgSerial.print(axis[Motor].Command, HEX);
+dbgSerial.print(", Pos: "); dbgSerial.print(axis[Motor].Position, HEX);
+dbgSerial.print(", Inc: "); dbgSerial.print(axis[Motor].Increment, HEX);
+dbgSerial.print("->Tgt: "); dbgSerial.print(axis[Motor].Target, HEX);
+dbgSerial.print(" Speed: "); dbgSerial.print(axis[Motor].ETXSpeed, HEX);
+dbgSerial.print(" TargetSpeed: "); dbgSerial.print(axis[Motor].TargetSpeed, HEX);
+dbgSerial.print(" SpeedState: "); dbgSerial.println(axis[Motor].SpeedState, HEX);
+//*/
digitalWrite(SCOPELED, HIGH); // Turn on the LED
if (axis[Motor].MotorControl & SpeedHBX) // Stepping, High or Low speed
@@ -137,7 +144,7 @@ dbgSerial.print(" SpeedState: "); dbgSerial.println(axis[Motor].SpeedState, HEX)
axis[Motor].MotorControl &= ~SpeedHBX; // Clear flag
// Set the speed, and direction
// ----------------------------
- P1 = axis[Motor].Speed;
+ P1 = axis[Motor].ETXSpeed;
if (axis[Motor].ETXMotorStatus & MOVEDECR) // If negative, change P
P1 = TwosComplement(P1); // to 2's complement
@@ -149,19 +156,21 @@ dbgSerial.print(" SpeedState: "); dbgSerial.println(axis[Motor].SpeedState, HEX)
// Send the command
// ----------------
- if (HBXSendCommand(axis[Motor].Command, Motor)) // Command OK?
- HBXSend3Bytes(Motor); // Send the speed
- axis[Motor].EQGMotorStatus |= MOVEAXIS; // Tell EQx
+ if (HBXSendCommand(axis[Motor].Command, Motor)) { // Send Command, check OK?
+ HBXSend3Bytes(Motor); // Send the speed
+ axis[Motor].EQGMotorStatus |= MOVEAXIS; // Tell EQx
+ }
+ else break;
- axis[Motor].ETXMotorState = ETXCheckSpeed; // Make sure we are up to target speed
- if (axis[Motor].MotorControl & GoToHBX) { // If it is a GoTo and up to speed, check position
- if (axis[Motor].Speed == axis[Motor].TargetSpeed)
+ axis[Motor].ETXMotorState = ETXCheckSpeed; // Preset Checkspeed, & if needed, make sure we are up to target speed
+ if (axis[Motor].MotorControl & GoToHBX) { // If it is a GoTo and up to speed, check position
+ if (axis[Motor].ETXSpeed == axis[Motor].TargetSpeed)
axis[Motor].ETXMotorState = ETXCheckPosition;
}
- else if (axis[Motor].Speed == 0) { // Stop issued
+ else if (axis[Motor].ETXSpeed == 0) { // Stop issued
axis[Motor].ETXMotorState = ETXStopMotor;
}
- else if (axis[Motor].Speed == axis[Motor].TargetSpeed) { // Else slewing at speed
+ else if (axis[Motor].ETXSpeed == axis[Motor].TargetSpeed) { // Else slewing at speed
axis[Motor].ETXMotorState = ETXIdle;
}
break;
@@ -171,16 +180,16 @@ dbgSerial.print(" SpeedState: "); dbgSerial.println(axis[Motor].SpeedState, HEX)
// Calculate absolute distance to slowdown
// ---------------------------------------
-/*
-dbgSerial.println(""); dbgSerial.print("ETXCheckSlowDown Motor: "); dbgSerial.print(Motor);
+///*
+dbgSerial.println(""); dbgSerial.print("ETXCheckSlowDown Motor: "); dbgSerial.print(axis_name[Motor]);
dbgSerial.print(" ");
dbgSerial.print(", Cmd: "); dbgSerial.print(axis[Motor].Command, HEX);
dbgSerial.print(", Pos: "); dbgSerial.print(axis[Motor].Position, HEX);
dbgSerial.print(", SD: "); dbgSerial.print(axis[Motor].SlowDown, HEX);
dbgSerial.print("->Tgt: "); dbgSerial.print(axis[Motor].Target, HEX);
-dbgSerial.print(" Speed: "); dbgSerial.print(axis[Motor].Speed, HEX);
+dbgSerial.print(" Speed: "); dbgSerial.print(axis[Motor].ETXSpeed, HEX);
dbgSerial.print(" TargetSpeed: "); dbgSerial.print(axis[Motor].TargetSpeed, HEX);
-*/
+//*/
// distance = axis[Motor].SlowDown - axis[Motor].Position;
distance = (axis[Motor].Target - 0x1000) - axis[Motor].Position; // Distance to target
if (axis[Motor].Target < axis[Motor].Position) // If it is decreasing
@@ -214,46 +223,45 @@ ETXSlew8 600 // 150 arc-min/sec or 2.5°/sec
ETXSlew9 1080 // 270 arc-min/sec or 4.5°/sec
*/
-/*
-dbgSerial.println(""); dbgSerial.print("ETXCheckSpeed Motor: "); dbgSerial.print(Motor);
+///*
+dbgSerial.println(""); dbgSerial.print("ETXCheckSpeed Motor: "); dbgSerial.print(axis_name[Motor]);
dbgSerial.print(" ");
dbgSerial.print(", Pos: "); dbgSerial.print(axis[Motor].Position, HEX);
dbgSerial.print(", Inc: "); dbgSerial.print(axis[Motor].Increment, HEX);
dbgSerial.print("->Tgt: "); dbgSerial.print(axis[Motor].Target, HEX);
-dbgSerial.print(" iSpeed: "); dbgSerial.print(axis[Motor].Speed, HEX);
+dbgSerial.print(" iSpeed: "); dbgSerial.print(axis[Motor].ETXSpeed, HEX);
dbgSerial.print(" iTargetSpeed: "); dbgSerial.print(axis[Motor].TargetSpeed, HEX);
-*/
+//*/
axis[Motor].ETXMotorState = ETXStepMotor; // Preset set speed as next action
// Ramp up to speed
- if ((axis[Motor].TargetSpeed != 0) && (axis[Motor].TargetSpeed > axis[Motor].Speed)) {
- if ((axis[Motor].TargetSpeed - axis[Motor].Speed) > (axis[Motor].SIDEREALRATE << 6)) { // 64x sidereal
- axis[Motor].Speed += ((axis[Motor].TargetSpeed - axis[Motor].Speed) >> 1); // Ramp up approx .5 difference
-// while(!(HBXSendCommand(Stop, Motor))); // Stop the motor command
+ if ((axis[Motor].TargetSpeed != 0) && (axis[Motor].TargetSpeed > axis[Motor].ETXSpeed)) {
+ if ((axis[Motor].TargetSpeed - axis[Motor].ETXSpeed) > (axis[Motor].SIDEREALRATE << 6)) { // 64x sidereal
+ axis[Motor].ETXSpeed += ((axis[Motor].TargetSpeed - axis[Motor].ETXSpeed) >> 1); // Ramp up approx .5 difference
axis[Motor].MotorControl &= ~SpeedHBX; // Use 0x00 command
}
else {
- axis[Motor].Speed = axis[Motor].TargetSpeed;
+ axis[Motor].ETXSpeed = axis[Motor].TargetSpeed;
while(!(HBXSendCommand(Stop, Motor))); // Stop the motor command
axis[Motor].MotorControl |= SpeedHBX; // Use 0x01 command
}
}
// Ramp down to speed
- else if ((axis[Motor].TargetSpeed != 0) && (axis[Motor].Speed > axis[Motor].TargetSpeed)) {
- axis[Motor].Speed -= ((axis[Motor].Speed - axis[Motor].TargetSpeed) >> 2); // Approx .75
- if ((axis[Motor].Speed - axis[Motor].TargetSpeed) <= (axis[Motor].SIDEREALRATE << 7)) {
- axis[Motor].Speed = axis[Motor].TargetSpeed; // Close enough at 128x sidereal, so set the speed
+ else if ((axis[Motor].TargetSpeed != 0) && (axis[Motor].ETXSpeed > axis[Motor].TargetSpeed)) {
+ axis[Motor].ETXSpeed -= ((axis[Motor].ETXSpeed - axis[Motor].TargetSpeed) >> 2); // Approx .75
+ if ((axis[Motor].ETXSpeed - axis[Motor].TargetSpeed) <= (axis[Motor].SIDEREALRATE << 7)) {
+ axis[Motor].ETXSpeed = axis[Motor].TargetSpeed; // Close enough at 128x sidereal, so set the speed
// while(!(HBXSendCommand(Stop, Motor))); // Stop the motor command
axis[Motor].MotorControl &= ~SpeedHBX; // Use 0x00 command
}
}
// Ramp down to stop
- else if ((axis[Motor].TargetSpeed == 0) && (axis[Motor].Speed != 0)) {
+ else if ((axis[Motor].TargetSpeed == 0) && (axis[Motor].ETXSpeed != 0)) {
if (axis[Motor].ETXMotorStatus & MOVESLEW) {
axis[Motor].ETXMotorState = ETXStopMotor;
}
- else if (axis[Motor].Speed >= (axis[Motor].SIDEREALRATE << 7)) { // Ramp down to 128x sidereal
- axis[Motor].Speed -= (axis[Motor].Speed >> 2); // Approximately .75
+ else if (axis[Motor].ETXSpeed >= (axis[Motor].SIDEREALRATE << 7)) { // Ramp down to 128x sidereal
+ axis[Motor].ETXSpeed -= (axis[Motor].ETXSpeed >> 2); // Approximately .75
while(!(HBXSendCommand(Stop, Motor))); // Stop the motor command
axis[Motor].MotorControl |= SpeedHBX; // Use 0x01 command
}
@@ -263,7 +271,7 @@ dbgSerial.print(" iTargetSpeed: "); dbgSerial.print(axis[Motor].TargetSpeed, HEX
// Switch to position check, when we are at speed - check done in ETXStepMotor
-//dbgSerial.print(" oSpeed: "); dbgSerial.print(axis[Motor].Speed, HEX);
+//dbgSerial.print(" oSpeed: "); dbgSerial.print(axis[Motor].ETXSpeed, HEX);
//dbgSerial.print(" oTargetSpeed: "); dbgSerial.print(axis[Motor].TargetSpeed, HEX);
break;
@@ -275,16 +283,16 @@ dbgSerial.print(" iTargetSpeed: "); dbgSerial.print(axis[Motor].TargetSpeed, HEX
// Calculate absolute distance to target
// -------------------------------------
-/*
-dbgSerial.println(""); dbgSerial.print("ETXCheckPosition Motor: "); dbgSerial.print(Motor);
+///*
+dbgSerial.println(""); dbgSerial.print("ETXCheckPosition Motor: "); dbgSerial.print(axis_name[Motor]);
dbgSerial.print(" ");
dbgSerial.print(", Pos: "); dbgSerial.print(axis[Motor].Position, HEX);
dbgSerial.print(", Inc: "); dbgSerial.print(axis[Motor].Increment, HEX);
dbgSerial.print("->Tgt: "); dbgSerial.print(axis[Motor].Target, HEX);
-dbgSerial.print(" Speed: "); dbgSerial.print(axis[Motor].Speed, HEX);
+dbgSerial.print(" Speed: "); dbgSerial.print(axis[Motor].ETXSpeed, HEX);
dbgSerial.print(" TargetSpeed: "); dbgSerial.print(axis[Motor].TargetSpeed, HEX);
dbgSerial.print(" SpeedState: "); dbgSerial.print(axis[Motor].SpeedState, HEX);
-*/
+//*/
if (!(axis[Motor].MotorControl & GoToHBX)) { // Slewing so update position
break;
}
@@ -309,19 +317,19 @@ dbgSerial.print(" SpeedState: "); dbgSerial.print(axis[Motor].SpeedState, HEX);
axis[Motor].SpeedState += 1;
}
else if ((distance <= 0x100) && (axis[Motor].SpeedState == 2)) {
- axis[Motor].TargetSpeed = axis[Motor].Speed >> 2; // 1/16
+ axis[Motor].TargetSpeed = axis[Motor].ETXSpeed >> 2; // 1/16
axis[Motor].MotorControl &= ~SpeedHBX; // Use 0x00 command
axis[Motor].ETXMotorState = ETXStepMotor; // Change speed
axis[Motor].SpeedState += 1;
}
else if ((distance <= 0x200) && (axis[Motor].SpeedState == 1)) {
- axis[Motor].TargetSpeed = axis[Motor].Speed >> 1; // 1/4
+ axis[Motor].TargetSpeed = axis[Motor].ETXSpeed >> 1; // 1/4
axis[Motor].MotorControl &= ~SpeedHBX; // Use 0x00 command
axis[Motor].ETXMotorState = ETXStepMotor; // Change speed
axis[Motor].SpeedState += 1;
}
else if ((distance <= 0x400) && (axis[Motor].SpeedState == 0)) {
- axis[Motor].TargetSpeed = axis[Motor].Speed >> 1; // 1/2
+ axis[Motor].TargetSpeed = axis[Motor].ETXSpeed >> 1; // 1/2
while(!(HBXSendCommand(Stop, Motor))); // Stop the motor command
axis[Motor].MotorControl |= SpeedHBX; // Use 0x01 command
axis[Motor].ETXMotorState = ETXStepMotor; // Change speed
@@ -350,10 +358,10 @@ dbgSerial.print(" SpeedState: "); dbgSerial.print(axis[Motor].SpeedState, HEX);
case ETXStopMotor:
-//dbgSerial.println(""); dbgSerial.print("ETXStopMotor Motor: "); dbgSerial.print(Motor);
+dbgSerial.println(""); dbgSerial.print("ETXStopMotor Motor: "); dbgSerial.print(axis_name[Motor]);
while(!(HBXSendCommand(Stop, Motor))); // Stop the motor
- axis[Motor].ETXMotorStatus |= MOVESLEW; // ETX Set slewing mode
+ axis[Motor].ETXMotorStatus |= MOVESLEW; // ETX Set slewing mode
axis[Motor].ETXMotorStatus &= ~MOVEHIGH; // and speed
axis[Motor].ETXMotorStatus &= ~MOVEAXIS; // Clear the motor moving flag
axis[Motor].MotorControl &= ~GoToHBX; // Clear the GoTo flag
@@ -362,18 +370,22 @@ dbgSerial.print(" SpeedState: "); dbgSerial.print(axis[Motor].SpeedState, HEX);
axis[Motor].EQGMotorStatus &= ~MOVEHIGH; // and speed
axis[Motor].EQGMotorStatus &= ~MOVEAXIS; // Clear the motor moving flag
axis[Motor].ETXMotorState = ETXCheckStartup;
- axis[Motor].TargetSpeed = axis[Motor].Speed; // For any subsequent move
- axis[Motor].Speed = 0;
+// axis[Motor].TargetSpeed = axis[Motor].ETXSpeed; // For any subsequent move
+ axis[Motor].TargetSpeed = 0;
+ axis[Motor].ETXSpeed = 0;
+
+//jma CheckAltFlipState();
+
break;
case ETXMotorEnd:
-/*
-dbgSerial.println(""); dbgSerial.print("ETXMotorEnd Motor: "); dbgSerial.print(Motor);
+///*
+dbgSerial.println(""); dbgSerial.print("ETXMotorEnd Motor: "); dbgSerial.print(axis_name[Motor]);
dbgSerial.print(" ");
dbgSerial.print(", Pos: "); dbgSerial.print(axis[Motor].Position, HEX);
dbgSerial.print(", Inc: "); dbgSerial.print(axis[Motor].Increment, HEX);
dbgSerial.print("->Tgt: "); dbgSerial.print(axis[Motor].Target, HEX);
-*/
+//*/
digitalWrite(SCOPELED, LOW); // Turn off the LED
distance = axis[Motor].Target - axis[Motor].Position; // Distance to target
if (axis[Motor].Target < axis[Motor].Position) // If it is decreasing
@@ -389,13 +401,13 @@ dbgSerial.print("->Tgt: "); dbgSerial.print(axis[Motor].Target, HEX);
if (HBXSendCommand(axis[Motor].Command, Motor)) // Command OK?
HBXSend2Bytes(Motor); // Send the offset
-/*
+///*
dbgSerial.print(" OFFSET");
dbgSerial.print(" "); dbgSerial.print(axis[Motor].Command, HEX);
dbgSerial.print(" "); dbgSerial.print(axis[Motor].HBXP1, HEX);
dbgSerial.print(" "); dbgSerial.print(axis[Motor].HBXP2, HEX);
dbgSerial.print(" "); dbgSerial.print(axis[Motor].HBXP3, HEX);
-*/
+//*/
}
axis[Motor].Position = axis[Motor].Target;
axis[Motor].MotorControl &= ~GoToHBX; // Clear the flag
@@ -412,7 +424,7 @@ dbgSerial.print(" "); dbgSerial.print(axis[Motor].HBXP3, HEX);
bool HBXGetStatus(unsigned char Motor) {
if (!HBXSendCommand(GetStatus, Motor)) {
- dbgSerial.println(""); dbgSerial.print("HBXGetStatus Motor: "); dbgSerial.print(Motor); dbgSerial.println(" Cmd Fail");
+ dbgSerial.println(""); dbgSerial.print("HBXGetStatus Motor: "); dbgSerial.print(axis_name[Motor]); dbgSerial.println(" Cmd Fail");
return(false);
}
HBXGet3Bytes(Motor);
@@ -431,7 +443,7 @@ bool HBXGetStatus(unsigned char Motor) {
if (StatusCount++ > 51) {
StatusCount = 0;
- dbgSerial.println(""); dbgSerial.print("Motor: "); dbgSerial.print(Motor); dbgSerial.print(", Posn: "); dbgSerial.print(axis[Motor].Position, HEX);
+ dbgSerial.println(""); dbgSerial.print("Motor: "); dbgSerial.print(axis_name[Motor]); dbgSerial.print(", Posn: "); dbgSerial.print(axis[Motor].Position, HEX);
}
return(true);
}
@@ -537,10 +549,11 @@ void AzInitialise(unsigned char scope) {
axis[AzMotor].GbxRatio = ratio[scope][AzMotor-1].GbxRatio;
axis[AzMotor].XferRatio = ratio[scope][AzMotor-1].XferRatio;
axis[AzMotor].WormTeeth = ratio[scope][AzMotor-1].WormTeeth;
-// EQMOD values
+// EQMOD
axis[AzMotor].aVALUE = axis[AzMotor].Vanes * (float)4 * axis[AzMotor].GbxRatio * axis[AzMotor].XferRatio * axis[AzMotor].WormTeeth;
axis[AzMotor].MeadeRatio = axis[AzMotor].aVALUE / ArcSecs360; // Distance for one arcsec
- axis[AzMotor].bVALUE = (MeadeSidereal * axis[AzMotor].MeadeRatio * axis[AzMotor].aVALUE * SiderealArcSecs) / ArcSecs360;
+ axis[AzMotor].bVALUE = (MeadeSidereal * axis[AzMotor].MeadeRatio * axis[AzMotor].aVALUE * SiderealArcSecs) / ArcSecs360;
+ axis[AzMotor].BASERATE = axis[AzMotor].bVALUE / axis[AzMotor].MeadeRatio;
axis[AzMotor].SIDEREALRATE = MeadeSidereal * axis[AzMotor].MeadeRatio;
axis[AzMotor].SOLARRATE = axis[AzMotor].SIDEREALRATE * SOLARSECS / SIDEREALSECS;
axis[AzMotor].LUNARRATE = axis[AzMotor].SIDEREALRATE * LUNARSECS / SIDEREALSECS;
@@ -550,7 +563,10 @@ void AzInitialise(unsigned char scope) {
axis[AzMotor].HBXP1 = 0x00;
axis[AzMotor].HBXP2 = 0x00;
axis[AzMotor].HBXP3 = 0x00;
- axis[AzMotor].HBXP4 = 0x00;
+ axis[AzMotor].HBXP4 = 0x00;
+ axis[AzMotor].ETXSpeed = 0x00;
+ axis[AzMotor].SpeedState = 0x00;
+ axis[AzMotor].TargetSpeed = 0x00;
axis[AzMotor].Position = ETX_CENTRE; // ETX RA initially at 0 hours
axis[AzMotor].OneDegree = axis[AzMotor].aVALUE / (float)360; // Distance for one degree
axis[AzMotor].Target = axis[AzMotor].Position;
@@ -567,29 +583,129 @@ void AltInitialise(unsigned char scope) {
axis[AltMotor].GbxRatio = ratio[scope][AltMotor-1].GbxRatio;
axis[AltMotor].XferRatio = ratio[scope][AltMotor-1].XferRatio;
axis[AltMotor].WormTeeth = ratio[scope][AltMotor-1].WormTeeth;
-// EQMOD values
+// EQMOD
axis[AltMotor].aVALUE = axis[AltMotor].Vanes * (float)4 * axis[AltMotor].GbxRatio * axis[AltMotor].XferRatio * axis[AltMotor].WormTeeth;
- axis[AltMotor].MeadeRatio = axis[AltMotor].aVALUE / ArcSecs360; // Distance for one arcsec
+ axis[AltMotor].MeadeRatio = axis[AltMotor].aVALUE / ArcSecs360; // Counts for one arcsec
axis[AltMotor].bVALUE = MeadeSidereal * axis[AltMotor].MeadeRatio * axis[AltMotor].aVALUE * SiderealArcSecs / ArcSecs360;
- axis[AltMotor].SIDEREALRATE = MeadeSidereal * axis[AltMotor].MeadeRatio;
- axis[AltMotor].SOLARRATE = axis[AltMotor].SIDEREALRATE * SOLARSECS / SIDEREALSECS;
+ axis[AltMotor].BASERATE = axis[AltMotor].bVALUE / axis[AltMotor].MeadeRatio;
+ axis[AltMotor].SIDEREALRATE = MeadeSidereal * axis[AltMotor].MeadeRatio;
+ axis[AltMotor].SOLARRATE = axis[AltMotor].SIDEREALRATE * SOLARSECS / SIDEREALSECS;
axis[AltMotor].LUNARRATE = axis[AltMotor].SIDEREALRATE * LUNARSECS / SIDEREALSECS;
axis[AltMotor].DEGREERATE1 = axis[AltMotor].SIDEREALRATE * ETXSlew7;
axis[AltMotor].PEC = axis[AltMotor].aVALUE / axis[AltMotor].WormTeeth;
+ axis[AltMotor].EQGMotorStatus = MOVESLEW;
// ETX
axis[AltMotor].HBXP1 = 0x00;
axis[AltMotor].HBXP2 = 0x00;
axis[AltMotor].HBXP3 = 0x00;
- axis[AltMotor].HBXP4 = 0x00;
- axis[AltMotor].Position = ETX_CENTRE - (axis[AltMotor].aVALUE >> 2); // Initially at -90 degrees
- axis[AltMotor].OneDegree = axis[AltMotor].aVALUE / (float)360; // Distance for one degree
+ axis[AltMotor].HBXP4 = 0x00;
+ axis[AltMotor].ETXSpeed = 0x00;
+ axis[AltMotor].SpeedState = 0x00;
+ axis[AltMotor].TargetSpeed = 0x00;
+ axis[AltMotor].Position = ETX_CENTRE + (axis[AltMotor].aVALUE >> 2); // Initially at +90 degrees
+ axis[AltMotor].OneDegree = axis[AltMotor].aVALUE / (float)360; // Distance for one degree
axis[AltMotor].Target = axis[AltMotor].Position;
axis[AltMotor].DirnSpeed = 0x000;
axis[AltMotor].ETXMotorStatus = MOVESLEW;
- axis[AltMotor].EQGMotorStatus = MOVESLEW;
+
axis[AltMotor].ETXMotorState = ETXCheckStartup;
}
+/*
+// Check if ETX mount will hit fork physical limits
+// When used as GEM, ETX mounts cannot go past vertical
+// This means E in Sthn, W in Nthn, for East side pointing West
+// So rotate 180 degrees in Az and flip the Alt destination
+*/
+void CheckAltFlip(unsigned char Motor) {
+ long distance;
+ distance = axis[Motor].Target - axis[Motor].Position; // Distance to target
+ if ((telescope < 3) && (Motor == AltMotor)) { // ETXn0 series
+ long p;
+ if (distance > 0) {
+ // GoTo
+ if (axis[AltMotor].Target >= (ETX_CENTRE + (axis[AltMotor].aVALUE >> 2))) { // E[Sthn] (or W[Nthn])
+ dbgSerial.println(""); dbgSerial.print("Flip: target "); dbgSerial.print(axis[AltMotor].Target); // Set Target
+ p = axis[AltMotor].Target - (ETX_CENTRE + (axis[AltMotor].aVALUE >> 2)); // Offset from EQG midpoint
+ axis[AltMotor].Target -= (p << 1); // Swap to other side
+ distance = axis[Motor].Target - axis[Motor].Position; // Distance to target
+ dbgSerial.print(", new "); dbgSerial.print(axis[AltMotor].Target);
+ // Flip direction
+ if (axis[AltMotor].ETXMotorStatus & MOVEDECR) axis[AltMotor].ETXMotorStatus &= ~MOVEDECR;
+ else axis[AltMotor].ETXMotorStatus |= MOVEDECR;
+ // Set SlowDown
+ p = axis[AltMotor].SlowDown - (ETX_CENTRE + (axis[AltMotor].aVALUE >> 2));
+ axis[AltMotor].SlowDown -= (p << 1);
+ dbgSerial.print(", Slowdown "); dbgSerial.print(p);
+ if (axis[AltMotor].Flip == NORMAL) {
+ axis[AltMotor].Flip = FLIP;
+ dbgSerial.print(", Type "); dbgSerial.print("ALREADY FLIPPED");
+ }
+ else {
+ dbgSerial.print(", Type "); dbgSerial.print("NORMAL");
+ }
+ }
+ else {
+ if (axis[AltMotor].Flip == FLIPPED) {
+ axis[AltMotor].Flip = UNFLIP;
+ dbgSerial.print(", Action "); dbgSerial.print("UNFLIP");
+ }
+ else {
+ dbgSerial.print(", Action "); dbgSerial.print("NOTHING");
+ }
+ }
+ }
+ else {
+ // SLEW
+ if (axis[AltMotor].ETXMotorStatus & MOVEDECR) {
+ axis[AltMotor].ETXMotorStatus &= ~MOVEDECR;
+ if (axis[AltMotor].Flip == NORMAL) {
+ axis[AltMotor].Flip = FLIP;
+ dbgSerial.print(", Action "); dbgSerial.print("FLIP");
+ }
+ else {
+ dbgSerial.print(", Action "); dbgSerial.print("NOTHING");
+ }
+ }
+ if (axis[AltMotor].Flip == FLIPPED) {
+ axis[AltMotor].Flip = UNFLIP;
+ dbgSerial.print(", Action "); dbgSerial.print("FLIP");
+ }
+ else {
+ dbgSerial.print(", Action "); dbgSerial.print("NOTHING");
+ }
+ }
+ }
+}
+
+void CheckAltFlipState(void) {
+ if ((axis[AltMotor].Flip == FLIPPING) || (axis[AltMotor].Flip == UNFLIPPING)) {
+ dbgSerial.println(""); dbgSerial.print("Stop Motor: ");
+ if (axis[AltMotor].Flip == FLIPPING) {
+ axis[AltMotor].Flip = FLIPPED; dbgSerial.print("FLIPPING");
+ }
+ else {
+ axis[AltMotor].Flip = NORMAL; dbgSerial.print("NORMAl");
+ }
+ }
+}
+
+void CheckAltFlipReqd(void) {
+ if (axis[AltMotor].ETXMotorState == ETXIdle) {
+ if ((axis[AltMotor].Flip == FLIP) || (axis[AltMotor].Flip == UNFLIP)) {
+ if (axis[AltMotor].Flip == FLIP) axis[AltMotor].Flip = FLIPPING;
+ else axis[AltMotor].Flip = UNFLIPPING;
+ // Rotate 180 degrees in RA
+ if (axis[AzMotor].Target > ETX_CENTRE) axis[AzMotor].Target -= (axis[AzMotor].aVALUE >> 1);
+ else axis[AzMotor].Target += (axis[AzMotor].aVALUE >> 1);
+ axis[AzMotor].ETXMotorStatus |= (MOVEAXIS || MOVEHIGH);
+ axis[AzMotor].ETXMotorStatus &= ~MOVESLEW;
+ axis[AzMotor].MotorControl |= GoToHBX;
+ CheckETXState(AzMotor);
+ }
+ }
+}
+
void PrintHbxValues(unsigned char Motor) {
if (Motor == AzMotor)
dbgSerial.println("AzMotor");
@@ -607,8 +723,9 @@ void PrintHbxValues(unsigned char Motor) {
dbgSerial.print(", bVALUE 0x"); dbgSerial.print(axis[Motor].bVALUE, HEX);
dbgSerial.print(", PEC 0x"); dbgSerial.println(axis[Motor].PEC, HEX);
- dbgSerial.print("SIDEREALRATE 0x"); dbgSerial.print(axis[Motor].SIDEREALRATE, HEX);
- dbgSerial.print(", SOLARRATE 0x"); dbgSerial.print(axis[Motor].SOLARRATE, HEX);
+ dbgSerial.print("BASERATE 0x"); dbgSerial.print(axis[Motor].BASERATE, HEX);
+ dbgSerial.print(", SIDEREALRATE 0x"); dbgSerial.print(axis[Motor].SIDEREALRATE, HEX);
+ dbgSerial.print(", SOLARRATE 0x"); dbgSerial.print(axis[Motor].SOLARRATE, HEX);
dbgSerial.print(", LUNARRATE 0x"); dbgSerial.print(axis[Motor].LUNARRATE, HEX);
dbgSerial.print(", DEGREERATE1 0x"); dbgSerial.println(axis[Motor].DEGREERATE1, HEX);
@@ -638,7 +755,7 @@ void HBXPrintStatus(unsigned char Motor) {
/* dbgSerial.println("");
dbgSerial.print("Motor: ");
- dbgSerial.print(Motor);
+ dbgSerial.print(axis_name[Motor]);
dbgSerial.print(", Cmnd: ");
dbgSerial.print(axis[Motor].Command, HEX);
dbgSerial.print(" - ");
diff --git a/Software/EQG2HBX-ESP32/HBXWiFiServer.ino b/Software/EQG2HBX-ESP32/HBXWiFiServer.ino
index b1818a8..9170ac9 100644
--- a/Software/EQG2HBX-ESP32/HBXWiFiServer.ino
+++ b/Software/EQG2HBX-ESP32/HBXWiFiServer.ino
@@ -87,7 +87,7 @@ void putRxDataIntoMountInputBuffer(void) {
// Data in sendWiFi.text, length sendWiFi.len
void getTxDataFromMountOutputBuffer(void) {
while (EQGTxoPtr != EQGTxiPtr) {
- dbgSerial.write(EQGTxBuffer[EQGTxoPtr]);
+//jma dbgSerial.write(EQGTxBuffer[EQGTxoPtr]);
sendWiFi.text[TxDIndex++] = EQGTxBuffer[EQGTxoPtr++];
EQGTxoPtr &= EQGMASK;
}
diff --git a/Software/EQG2HBX-ESP32/__vm/Compile.vmps.xml b/Software/EQG2HBX-ESP32/__vm/Compile.vmps.xml
index c9a4728..9059757 100644
--- a/Software/EQG2HBX-ESP32/__vm/Compile.vmps.xml
+++ b/Software/EQG2HBX-ESP32/__vm/Compile.vmps.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/Software/EQG2HBX-ESP32/__vm/Configuration.Release.vmps.xml b/Software/EQG2HBX-ESP32/__vm/Configuration.Release.vmps.xml
index 0052235..9d58912 100644
--- a/Software/EQG2HBX-ESP32/__vm/Configuration.Release.vmps.xml
+++ b/Software/EQG2HBX-ESP32/__vm/Configuration.Release.vmps.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/Software/EQG2HBX-ESP32/__vm/Upload.vmps.xml b/Software/EQG2HBX-ESP32/__vm/Upload.vmps.xml
index 164e1ec..9059757 100644
--- a/Software/EQG2HBX-ESP32/__vm/Upload.vmps.xml
+++ b/Software/EQG2HBX-ESP32/__vm/Upload.vmps.xml
@@ -2,9 +2,9 @@
-
+
-
+
diff --git a/Software/EQG2HBXE32/.gitignore b/Software/EQG2HBXE32/.gitignore
new file mode 100644
index 0000000..89cc49c
--- /dev/null
+++ b/Software/EQG2HBXE32/.gitignore
@@ -0,0 +1,5 @@
+.pio
+.vscode/.browse.c_cpp.db*
+.vscode/c_cpp_properties.json
+.vscode/launch.json
+.vscode/ipch
diff --git a/Software/EQG2HBXE32/.vscode/extensions.json b/Software/EQG2HBXE32/.vscode/extensions.json
new file mode 100644
index 0000000..e80666b
--- /dev/null
+++ b/Software/EQG2HBXE32/.vscode/extensions.json
@@ -0,0 +1,7 @@
+{
+ // See http://go.microsoft.com/fwlink/?LinkId=827846
+ // for the documentation about the extensions.json format
+ "recommendations": [
+ "platformio.platformio-ide"
+ ]
+}