Picked up the first DMA edge

Change-Id: I155cfd88a42f3ee456042df67511a09fea2c5917
diff --git a/frc971/wpilib/dma_edge_counting.cc b/frc971/wpilib/dma_edge_counting.cc
index 7f87956..afb880f 100644
--- a/frc971/wpilib/dma_edge_counting.cc
+++ b/frc971/wpilib/dma_edge_counting.cc
@@ -11,7 +11,7 @@
 
 void DMAEdgeCounter::UpdateFromSample(const DMASample &sample) {
   const bool previous_value =
-      have_prev_sample_ ? ExtractValue(prev_sample_) : polled_value_;
+      have_prev_sample_ ? ExtractValue(prev_sample_) : previous_polled_value_;
   have_prev_sample_ = true;
   prev_sample_ = sample;
 
diff --git a/frc971/wpilib/dma_edge_counting.h b/frc971/wpilib/dma_edge_counting.h
index d49b05d..64722ca 100644
--- a/frc971/wpilib/dma_edge_counting.h
+++ b/frc971/wpilib/dma_edge_counting.h
@@ -63,10 +63,12 @@
  private:
   void UpdateFromSample(const DMASample &sample) override;
   void UpdatePolledValue() override {
+    previous_polled_value_ = polled_value_;
     polled_value_ = input_->Get();
     polled_encoder_ = encoder_->GetRaw();
   }
   void PollFromSample(const DMASample &sample) override {
+    previous_polled_value_ = polled_value_;
     polled_value_ = ExtractValue(sample);
     polled_encoder_ = sample.GetRaw(encoder_);
   }
@@ -97,6 +99,7 @@
   int neg_last_encoder_ = 0;
 
   bool polled_value_ = false;
+  bool previous_polled_value_ = false;
   int polled_encoder_ = 0;
 
   DISALLOW_COPY_AND_ASSIGN(DMAEdgeCounter);