Updated output and sensing master
authorGraham <dev@netlinux.org.uk>
Sat, 9 Sep 2017 16:08:34 +0000 (17:08 +0100)
committerGraham <dev@netlinux.org.uk>
Sat, 9 Sep 2017 16:08:34 +0000 (17:08 +0100)
UnoBLDC.cpp

index b610fab..f4fa4ef 100644 (file)
@@ -9,7 +9,8 @@ static const int SPACECONTROL = A1;
 static const unsigned long DELAY = 100;
 static const unsigned char NOSTEP = 127;
 
-static const unsigned char SENSORMASK = 0b11111100;
+static const unsigned char DSENSEMASK = 0b11111100;
+static const unsigned char BSENSEMASK = 0b00000111;
 
 #if STEP == 6
 
@@ -90,7 +91,7 @@ static const unsigned char SensePattern[] =
 static const unsigned char StepNumber = sizeof (TrinaryStep) / (TRITS + 1);
 
 // Set SENSEDEBUGCOUNT to 0 for disable
-static const unsigned char SENSEDEBUGCOUNT = 18;
+static const unsigned char SENSEDEBUGCOUNT = 0;
 static unsigned char SenseDebugCount = 0;
 static unsigned char SenseDebug[SENSEDEBUGCOUNT];
 
@@ -162,13 +163,19 @@ void Gap (const int CONTROL, int &Input)
     for (volatile unsigned long intCount = DELAY * Input; intCount > 0; intCount--);
 }
 
+static unsigned char PortRead = 0;
+
 void SensorChange()
 {
     static unsigned char ThisStep = NOSTEP;
     
-    SenseCount++;
+    PortRead = PIND;
 
-    Sense = (PIND >> 2) & 0b111111;
+#if 1
+    Sense = (PortRead >> 2) & 0b111111;
+#else
+    Sense = (~PortRead >> 2) & 0b111111;
+#endif
     
     if (!Single)
     {
@@ -222,6 +229,8 @@ void SensorChange()
         DDRB = (D[StepCount] << 3); // set the direction
         PORTB = (P[StepCount] << 3) | 0b111;  // set the bits (including the pullups)
     }
+    
+    SenseCount++;
 
     if (SenseDebugCount < SENSEDEBUGCOUNT)
         SenseDebug[SenseDebugCount++] = Sense;
@@ -244,15 +253,15 @@ void setup ()
         }
     }
 
-    DDRD  &= ~0b11111100;       // set 2-8 input
-    PORTD |=  0b11111100;       // 2-8 add pullup
+    DDRD  &= ~DSENSEMASK;       // set 2-8 input
+    PORTD |=  DSENSEMASK;       // 2-8 add pullup
 
-    DDRB  = 0b00000000;         // set 8-13 off (input)
-    PORTB = 0b00000111;        // set 11-13 low (no pullup) 8-10 high (add pullup)
+    DDRB  = 0b00000000 & ~BSENSEMASK;         // set 8-13 off (input)
+    PORTB = BSENSEMASK;        // set 11-13 low (no pullup) 8-10 high (add pullup)
 
 // PORTD pin 2-7
     PCICR |= (1 << PCIE2);
-    PCMSK2 |= SENSORMASK;
+    PCMSK2 |= DSENSEMASK;
 
     sei();
 }
@@ -271,16 +280,17 @@ void loop ()
 
     printf (" MarkInput=%4d SpaceInput=%4d PinInput=", MarkInput, SpaceInput);
 
-    for (unsigned char BitCount = 0b100000; BitCount > 0; BitCount >>= 1)
-        putchar (((Sense & BitCount) > 0) ? '1' : '0');
+    for (unsigned char BitCount = 0b10000000; BitCount > 0; BitCount >>= 1)
+        putchar (((PortRead & BitCount) > 0) ? '1' : '0');
 
     printf (" SenseCount=%3d\n", SenseCount);
-    
+
     for (unsigned char DebugCount = 0; DebugCount < SenseDebugCount; DebugCount++)
     {
         for (unsigned char BitCount = 0b100000; BitCount > 0; BitCount >>= 1)
             putchar (((SenseDebug[DebugCount] & BitCount) > 0) ? '1' : '0');
-                    puts("");
+            
+        puts("");
     }
 
     MarkInput = analogRead (MARKCONTROL);