@@ -92,9 +92,6 @@ void Mount::readPersistentData()
92
92
{
93
93
// Read the magic marker byte and state
94
94
int marker = EEPROM.read (4 ) + EEPROM.read (5 ) * 256 ;
95
- #ifdef DEBUG_MODE
96
- logv (" EEPROM: Marker is %d" , marker);
97
- #endif
98
95
if ((marker & 0xFF01 ) == 0xBE01 ) {
99
96
_stepsPerRADegree = EEPROM.read (6 ) + EEPROM.read (7 ) * 256 ;
100
97
#ifdef DEBUG_MODE
@@ -121,7 +118,7 @@ void Mount::readPersistentData()
121
118
if ((marker & 0xFF08 ) == 0xBE08 ) {
122
119
_backlashCorrectionSteps = EEPROM.read (10 ) + EEPROM.read (11 ) * 256 ;
123
120
#ifdef DEBUG_MODE
124
- logv (" EEPROM: Backash Steps Marker OK! Backlash correction is %d" , _backlashCorrectionSteps);
121
+ logv (" EEPROM: Backlash Steps Marker OK! Backlash correction is %d" , _backlashCorrectionSteps);
125
122
#endif
126
123
}
127
124
@@ -301,8 +298,8 @@ int Mount::getBacklashCorrection()
301
298
// The EEPROM storage location 5 is set to 0xBE if this value has ever been written. The storage location 4
302
299
// contains a bitfield indicating which values have been stored. Currently bit 0 is used for RA and bit 1 for DEC.
303
300
void Mount::setBacklashCorrection (int steps) {
304
- writePersistentData (BACKLASH_CORRECTION, steps);
305
301
_backlashCorrectionSteps = steps;
302
+ writePersistentData (BACKLASH_CORRECTION, steps);
306
303
}
307
304
308
305
// ///////////////////////////////
@@ -403,7 +400,11 @@ const DayTime Mount::currentRA() const {
403
400
logv (" CurrentRA: ZeroPos : %s" , _zeroPosRA.ToString ());
404
401
logv (" CurrentRA: POS (+zp) : %s" , DayTime (hourPos).ToString ());
405
402
#endif
406
- if (_stepperDEC->currentPosition () < 0 )
403
+
404
+ bool flipRA = NORTHERN_HEMISPHERE ?
405
+ _stepperDEC->currentPosition () < 0
406
+ : _stepperDEC->currentPosition () > 0 ;
407
+ if (flipRA)
407
408
{
408
409
hourPos += 12 ;
409
410
if (hourPos > 24 ) hourPos -= 24 ;
@@ -427,11 +428,23 @@ const DayTime Mount::currentRA() const {
427
428
const DegreeTime Mount::currentDEC () const {
428
429
429
430
float degreePos = 1.0 * _stepperDEC->currentPosition () / _stepsPerDECDegree;
431
+ #ifdef DEBUG_MODE
432
+ logv (" CurrentDEC: Steps/deg : %d" , _stepsPerDECDegree);
433
+ logv (" CurrentDEC: DEC Steps : %d" , _stepperDEC->currentPosition ());
434
+ logv (" CurrentDEC: POS : %s" , String (degreePos).c_str ());
435
+ #endif
436
+
430
437
if (degreePos > 0 )
431
438
{
432
439
degreePos = -degreePos;
440
+ #ifdef DEBUG_MODE
441
+ logv (" CurrentDEC: Greater Zero, flipping." );
442
+ #endif
433
443
}
434
444
445
+ #ifdef DEBUG_MODE
446
+ logv (" CurrentDEC: POS : %s" , DegreeTime (degreePos).ToString ());
447
+ #endif
435
448
return degreePos;
436
449
}
437
450
@@ -666,6 +679,7 @@ void Mount::goHome()
666
679
stopGuiding ();
667
680
setTargetToHome ();
668
681
startSlewingToTarget ();
682
+ _slewingToHome = true ;
669
683
}
670
684
671
685
// ///////////////////////////////
@@ -1090,6 +1104,7 @@ void Mount::loop() {
1090
1104
#endif
1091
1105
_stepperRA->setCurrentPosition (0 );
1092
1106
_stepperTRK->setCurrentPosition (0 );
1107
+ _targetRA = currentRA ();
1093
1108
if (isParking ()) {
1094
1109
#ifdef DEBUG_MODE
1095
1110
logv (" Loop: Was parking, so no tracking." );
@@ -1124,14 +1139,23 @@ void Mount::loop() {
1124
1139
//
1125
1140
// ///////////////////////////////
1126
1141
void Mount::setHome () {
1142
+ #ifdef DEBUG_MODE
1143
+ logv (" Mount::setHomePre: currentRA is %s" , currentRA ().ToString ());
1144
+ logv (" Mount::setHomePre: zeroPos is %s" , _zeroPosRA.ToString ());
1145
+ logv (" Mount::setHomePre: targetRA is %s" , targetRA ().ToString ());
1146
+ #endif
1127
1147
_zeroPosRA = currentRA ();
1128
1148
1129
1149
_stepperRA->setCurrentPosition (0 );
1130
1150
_stepperDEC->setCurrentPosition (0 );
1131
1151
_stepperTRK->setCurrentPosition (0 );
1132
1152
1153
+ _targetRA = currentRA ();
1154
+
1133
1155
#ifdef DEBUG_MODE
1134
- logv (" Mount::setHome: ZeroPosRA set to %s" , _zeroPosRA.ToString ());
1156
+ logv (" Mount::setHomePost: currentRA is %s" , currentRA ().ToString ());
1157
+ logv (" Mount::setHomePost: zeroPos is %s" , _zeroPosRA.ToString ());
1158
+ logv (" Mount::setHomePost: targetRA is %s" , targetRA ().ToString ());
1135
1159
#endif
1136
1160
}
1137
1161
@@ -1148,9 +1172,10 @@ void Mount::setTargetToHome() {
1148
1172
// offset HATime by elapsed time since last HA set and also
1149
1173
// adjust RA by the elapsed time and set it to zero.
1150
1174
#ifdef DEBUG_MODE
1151
- logv (" Mount::setTargetToHome: Pre-ZeroPosRA is %s" , _zeroPosRA.ToString ());
1152
- logv (" Mount::setTargetToHome: TrackedSeconds is %f, TRK Stepper: %l" , trackedSeconds, _stepperTRK->currentPosition ());
1153
- logv (" Mount::setTargetToHome: Pre-LST is %s" , _LST.ToString ());
1175
+ logv (" Mount::setTargetToHomePre: currentRA is %s" , currentRA ().ToString ());
1176
+ logv (" Mount::setTargetToHomePre: ZeroPosRA is %s" , _zeroPosRA.ToString ());
1177
+ logv (" Mount::setTargetToHomePre: TrackedSeconds is %f, TRK Stepper: %l" , trackedSeconds, _stepperTRK->currentPosition ());
1178
+ logv (" Mount::setTargetToHomePre: LST is %s" , _LST.ToString ());
1154
1179
#endif
1155
1180
DayTime lst (_LST);
1156
1181
lst.addSeconds (trackedSeconds);
@@ -1159,9 +1184,10 @@ void Mount::setTargetToHome() {
1159
1184
_targetRA.addSeconds (trackedSeconds);
1160
1185
1161
1186
#ifdef DEBUG_MODE
1162
- logv (" Mount::setTargetToHome: Post-ZeroPosRA is %s" , _zeroPosRA.ToString ());
1163
- logv (" Mount::setTargetToHome: Post-LST is %s" , _LST.ToString ());
1164
- logv (" Mount::setTargetToHome: Post-TargetRA is %s" , _targetRA.ToString ());
1187
+ logv (" Mount::setTargetToHomePost: currentRA is %s" , currentRA ().ToString ());
1188
+ logv (" Mount::setTargetToHomePost: ZeroPosRA is %s" , _zeroPosRA.ToString ());
1189
+ logv (" Mount::setTargetToHomePost: LST is %s" , _LST.ToString ());
1190
+ logv (" Mount::setTargetToHomePost: TargetRA is %s" , _targetRA.ToString ());
1165
1191
#endif
1166
1192
1167
1193
// Set DEC to pole
@@ -1199,23 +1225,24 @@ float Mount::getSpeed(int direction) {
1199
1225
// ///////////////////////////////
1200
1226
void Mount::calculateRAandDECSteppers (float & targetRA, float & targetDEC) {
1201
1227
#ifdef DEBUG_MODE
1202
- logv (" Mount::CalcSteppers: Target RA: %s, Target DEC: %s" , _targetRA.ToString (), _targetDEC.ToString ());
1203
- logv (" Mount::CalcSteppers: ZeroRA: %s" , _zeroPosRA.ToString ());
1204
- logv (" Mount::CalcSteppers: Steppers: RA: %l, DEC: %l, TRK: %l" , _stepperRA->currentPosition (), _stepperDEC->currentPosition (), _stepperTRK->currentPosition ());
1228
+ logv (" Mount::CalcSteppersPre: Current: RA: %s, DEC: %s" , currentRA ().ToString (), currentDEC ().ToString ());
1229
+ logv (" Mount::CalcSteppersPre: Target : RA: %s, DEC: %s" , _targetRA.ToString (), _targetDEC.ToString ());
1230
+ logv (" Mount::CalcSteppersPre: ZeroRA : %s" , _zeroPosRA.ToString ());
1231
+ logv (" Mount::CalcSteppersPre: Stepper: RA: %l, DEC: %l, TRK: %l" , _stepperRA->currentPosition (), _stepperDEC->currentPosition (), _stepperTRK->currentPosition ());
1205
1232
#endif
1206
1233
DayTime raTarget = _targetRA;
1207
1234
1208
1235
raTarget.subtractTime (_zeroPosRA);
1209
1236
#ifdef DEBUG_MODE
1210
- logv (" Mount::CalcSteppers : Adjust RA by Zeropos. New Target RA: %s, DEC: %s" , raTarget.ToString (), _targetDEC.ToString ());
1237
+ logv (" Mount::CalcSteppersIn : Adjust RA by Zeropos. New Target RA: %s, DEC: %s" , raTarget.ToString (), _targetDEC.ToString ());
1211
1238
#endif
1212
1239
1213
1240
float hourPos = raTarget.getTotalHours ();
1214
1241
// Map [0 to 24] range to [-12 to +12] range
1215
1242
if (hourPos > 12 ) {
1216
1243
hourPos = hourPos - 24 ;
1217
1244
#ifdef DEBUG_MODE
1218
- logv (" Mount::CalcSteppers : RA>12 so -24. New Target RA: %s, DEC: %s" , DayTime (hourPos).ToString (), _targetDEC.ToString ());
1245
+ logv (" Mount::CalcSteppersIn : RA>12 so -24. New Target RA: %s, DEC: %s" , DayTime (hourPos).ToString (), _targetDEC.ToString ());
1219
1246
#endif
1220
1247
}
1221
1248
@@ -1230,8 +1257,8 @@ void Mount::calculateRAandDECSteppers(float& targetRA, float& targetDEC) {
1230
1257
float moveDEC = -_targetDEC.getTotalDegrees () * _stepsPerDECDegree;
1231
1258
1232
1259
#ifdef DEBUG_MODE
1233
- logv (" Mount::CalcSteppers : RA Steps/deg: %d Steps/srhour: %f" , _stepsPerRADegree, stepsPerSiderealHour);
1234
- logv (" Mount::CalcSteppers : Target Step pos RA: %f, DEC: %f" , moveRA, moveDEC);
1260
+ logv (" Mount::CalcSteppersIn : RA Steps/deg: %d Steps/srhour: %f" , _stepsPerRADegree, stepsPerSiderealHour);
1261
+ logv (" Mount::CalcSteppersIn : Target Step pos RA: %f, DEC: %f" , moveRA, moveDEC);
1235
1262
#endif
1236
1263
1237
1264
// We can move 6 hours in either direction. Outside of that we need to flip directions.
@@ -1240,31 +1267,34 @@ void Mount::calculateRAandDECSteppers(float& targetRA, float& targetDEC) {
1240
1267
// If we reach the limit in the positive direction ...
1241
1268
if (moveRA > RALimit) {
1242
1269
#ifdef DEBUG_MODE
1243
- logv (" Mount::CalcSteppers : RA is past +limit: %f, DEC: %f" , RALimit);
1270
+ logv (" Mount::CalcSteppersIn : RA is past +limit: %f, DEC: %f" , RALimit);
1244
1271
#endif
1245
1272
1246
1273
// ... turn both RA and DEC axis around
1247
1274
float oldRA = moveRA;
1248
1275
moveRA -= long (12 .0f * stepsPerSiderealHour / 2 );
1249
1276
moveDEC = -moveDEC;
1250
1277
#ifdef DEBUG_MODE
1251
- logv (" Mount::CalcSteppers : Adjusted Target Step pos RA: %f, DEC: %f" , moveRA, moveDEC);
1278
+ logv (" Mount::CalcSteppersIn : Adjusted Target Step pos RA: %f, DEC: %f" , moveRA, moveDEC);
1252
1279
#endif
1253
1280
}
1254
1281
// If we reach the limit in the negative direction...
1255
1282
else if (moveRA < -RALimit) {
1256
1283
#ifdef DEBUG_MODE
1257
- logv (" Mount::CalcSteppers : RA is past -limit: %f, DEC: %f" , -RALimit);
1284
+ logv (" Mount::CalcSteppersIn : RA is past -limit: %f, DEC: %f" , -RALimit);
1258
1285
#endif
1259
1286
// ... turn both RA and DEC axis around
1260
1287
float oldRA = moveRA;
1261
1288
moveRA += long (12 .0f * stepsPerSiderealHour / 2 );
1262
1289
moveDEC = -moveDEC;
1263
1290
#ifdef DEBUG_MODE
1264
- logv (" Mount::CalcSteppers : Adjusted Target Step pos RA: %f, DEC: %f " , moveRA, moveDEC );
1291
+ logv (" Mount::CalcSteppersPost : Adjusted Target. Moved RA, inverted DEC " );
1265
1292
#endif
1266
1293
}
1267
1294
1295
+ #ifdef DEBUG_MODE
1296
+ logv (" Mount::CalcSteppersPost: Target Steps RA: %f, DEC: %f" , moveRA, moveDEC);
1297
+ #endif
1268
1298
// float targetRA = clamp(-moveRA, -RAStepperLimit, RAStepperLimit);
1269
1299
// float targetDEC = clamp(moveDEC, DECStepperUpLimit, DECStepperDownLimit);
1270
1300
targetRA = -moveRA;
@@ -1280,11 +1310,13 @@ void Mount::calculateRAandDECSteppers(float& targetRA, float& targetDEC) {
1280
1310
// Serial.println("Moving DEC from " + String(stepperDEC.currentPosition()) + " to " + targetDEC);
1281
1311
// }
1282
1312
}
1313
+
1283
1314
void Mount::moveSteppersTo (float targetRA, float targetDEC) {
1284
1315
// Show time: tell the steppers where to go!
1285
1316
_correctForBacklash = false ;
1286
1317
#ifdef DEBUG_MODE
1287
- logv (" Mount::MoveSteppersTo: RA Cur: %l, Trg: %f" , _stepperRA->currentPosition (), targetRA);
1318
+ logv (" Mount::MoveSteppersTo: RA From: %l To: %f" , _stepperRA->currentPosition (), targetRA);
1319
+ logv (" Mount::MoveSteppersTo: DEC From: %l To: %f" , _stepperDEC->currentPosition (), targetDEC);
1288
1320
#endif
1289
1321
1290
1322
if ((_stepperRA->currentPosition () - targetRA) > 0 ) {
@@ -1383,12 +1415,24 @@ void Mount::displayStepperPositionThrottled() {
1383
1415
String Mount::DECString (byte type, byte active) {
1384
1416
DegreeTime dec;
1385
1417
if ((type & TARGET_STRING) == TARGET_STRING) {
1418
+ #ifdef DEBUG_MODE
1419
+ logv (" DECString: TARGET!" );
1420
+ #endif
1386
1421
dec = DegreeTime (_targetDEC);
1387
1422
}
1388
1423
else {
1424
+ #ifdef DEBUG_MODE
1425
+ logv (" DECString: CURRENT!" );
1426
+ #endif
1389
1427
dec = DegreeTime (currentDEC ());
1390
1428
}
1429
+ #ifdef DEBUG_MODE
1430
+ logv (" DECString: Precheck : %s" , dec.ToString ());
1431
+ #endif
1391
1432
dec.checkHours ();
1433
+ #ifdef DEBUG_MODE
1434
+ logv (" DECString: Postcheck : %s" , dec.ToString ());
1435
+ #endif
1392
1436
1393
1437
sprintf (scratchBuffer, formatStringsDEC[type & FORMAT_STRING_MASK], dec.getPrintDegrees () > 0 ? ' +' : ' -' , int (fabs (dec.getPrintDegrees ())), dec.getMinutes (), dec.getSeconds ());
1394
1438
if ((type & FORMAT_STRING_MASK) == LCDMENU_STRING) {
0 commit comments