diff --git a/ball_and_beam-2018/avr/ball_and_beam-2018.c b/ball_and_beam-2018/avr/ball_and_beam-2018.c
index 3c64cdd6a304ef72dca37a60edb3dfa8e6cddae9..7291b52ae9825c20c44c58b224b87fa69f09e7d7 100644
--- a/ball_and_beam-2018/avr/ball_and_beam-2018.c
+++ b/ball_and_beam-2018/avr/ball_and_beam-2018.c
@@ -18,10 +18,11 @@
  *   AI 2 -- Accelerometer X
  *   AI 3 -- Accelerometer Y
  *   AI 4 -- Accelerometer Z
- *   EI 5 -- Motor Position
  *
  *   AO 0 -- Motor Speed
-  */
+ *   EI 0 -- Motor Position
+ *
+ */
 
 /*
  * Used I/O pins
@@ -70,7 +71,6 @@ struct values {
   int32_t motorEncoder;
   int8_t motorThermalFlag;
   int8_t ballOnBeam;
-  uint8_t timer;
 };
 volatile struct values global;
 
@@ -79,12 +79,6 @@ SIGNAL(ADC_vect)
   unsigned char channel = ADMUX & 0x0f;
   unsigned int value = ADCW;
 
-  if (global.timer) {
-    global.timer--;
-    PORTD &= ~0x40;
-  } else {
-    PORTD |= 0x40;
-  }
   switch (channel) {
     case 0: { 
       channel = 1; 
@@ -121,7 +115,6 @@ SIGNAL(USART_RXC_vect)
 {
   char ch = UDR;
   
-  global.timer = 0xff;
   switch (serialio_RXC(ch)) {
     case serialio_clearbit: {
       switch (serialio_channel) {
@@ -169,6 +162,39 @@ SIGNAL(USART_RXC_vect)
   }
 }
 
+SIGNAL(TIMER1_OVF_vect)
+{
+  static unsigned char encoder;
+  unsigned char e;
+
+  e = PIND & 0x0c;
+  // Ignore Z for now
+  switch ((encoder) | (e >> 2)) {
+    case 0x0:
+    case 0x5:
+    case 0xa:
+    case 0xf: {
+      // No change
+    } break;
+    case 0x1:
+    case 0x7:
+    case 0xe:
+    case 0x8: {
+      global.motorEncoder++;
+    } break;
+    case 0x2:
+    case 0x4:
+    case 0xd:
+    case 0xb: {
+      global.motorEncoder--;
+    } break;
+    default: {
+      // error = 1;
+    } break;
+  }
+  encoder = e;
+}
+
 int main() 
 {
   serialio_init();
@@ -181,11 +207,11 @@ int main()
   DDRB = 0x0a;      // PortB, bits 1 & 3 outputs
   PORTC = 0x00;     // PortC, pull-ups / initial values
   DDRC = 0x80;      // PortC, bit 7 output
-  PORTD = 0x00;     // PortD, pull-ups / initial values
+  PORTD = 0x0c;     // PortD, pull-ups / initial values
   DDRD = 0x20;      // PortD, bit 5 output
-  TCCR0 = 0x05;	    // Timer0, Clock / 1024 
   TCCR1A = 0x83;    // OC1A 10 bit PWM (fast), active high
   TCCR1B = 0x09;    // Clock / 1 
+  TIMSK =  0x04;    // Enable Timer1 interrupts 
   OCR1A = 0 & 0x3ff;
   UCSRA = 0x00;     // USART: 
   UCSRB = 0x98;     // USART: RxIntEnable|RxEnable|TxEnable 
@@ -196,6 +222,8 @@ int main()
   ADMUX = 0x0e;     // Vref = external, right adjust, read 1.22V (Vbg)
   ADCSRA = 0xcf;    // Enable ADC interrupts, Clock/128 
 
+  global.motorEncoder = 0x80000000;
+
   SREG = 0x80;	    // Global interrupt enable 
   while (1) {
     unsigned char bits, channels, config;
diff --git a/ball_and_beam-2018/matlab/process_test.mdl b/ball_and_beam-2018/matlab/process_test.mdl
index d5d8a6a0d6635d50fce0fdbb54e22a0e2d057fc7..e43c08e591f8cccfd5d9cb5ac6a38178293f34e7 100644
--- a/ball_and_beam-2018/matlab/process_test.mdl
+++ b/ball_and_beam-2018/matlab/process_test.mdl
@@ -6,7 +6,7 @@ Model {
     NumRootInports	    0
     NumRootOutports	    0
     ParameterArgumentNames  ""
-    ComputedModelVersion    "1.9"
+    ComputedModelVersion    "1.11"
     NumModelReferences	    0
     NumTestPointedSignals   0
   }
@@ -28,9 +28,9 @@ Model {
   ModifiedByFormat	  "%<Auto>"
   LastModifiedBy	  "andersb"
   ModifiedDateFormat	  "%<Auto>"
-  LastModifiedDate	  "Fri Jul 27 17:25:58 2018"
-  RTWModifiedTimeStamp	  454541743
-  ModelVersionFormat	  "1.%<AutoIncrement:9>"
+  LastModifiedDate	  "Thu Sep 13 13:46:49 2018"
+  RTWModifiedTimeStamp	  458747140
+  ModelVersionFormat	  "1.%<AutoIncrement:11>"
   ConfigurationManager	  "None"
   SampleTimeColors	  off
   SampleTimeAnnotations	  off
@@ -690,7 +690,7 @@ Model {
   }
   System {
     Name		    "process_test"
-    Location		    [774, 280, 1489, 926]
+    Location		    [764, 206, 1479, 852]
     Open		    on
     ModelBrowserVisibility  off
     ModelBrowserWidth	    200
@@ -704,12 +704,12 @@ Model {
     ShowPageBoundaries	    off
     ZoomFactor		    "100"
     ReportName		    "simulink-default.rpt"
-    SIDHighWatermark	    "21"
+    SIDHighWatermark	    "25"
     Block {
       BlockType		      Constant
       Name		      "Constant1"
       SID		      "2"
-      Position		      [375, 255, 400, 275]
+      Position		      [375, 335, 400, 355]
       Value		      "2.5"
     }
     Block {
@@ -737,7 +737,16 @@ Model {
       Name		      "Display"
       SID		      "5"
       Ports		      [1]
-      Position		      [510, 317, 605, 393]
+      Position		      [510, 397, 605, 473]
+      Decimation	      "1"
+      Lockdown		      off
+    }
+    Block {
+      BlockType		      Display
+      Name		      "Display1"
+      SID		      "24"
+      Ports		      [1]
+      Position		      [555, 127, 650, 203]
       Decimation	      "1"
       Lockdown		      off
     }
@@ -746,10 +755,10 @@ Model {
       Name		      "Inputs"
       SID		      "6"
       Ports		      [1]
-      Position		      [590, 200, 620, 230]
+      Position		      [590, 280, 620, 310]
       Floating		      off
-      Location		      [103, 106, 863, 567]
-      Open		      on
+      Location		      [73, 93, 843, 579]
+      Open		      off
       NumInputPorts	      "1"
       TickLabels	      "on"
       List {
@@ -772,6 +781,38 @@ Model {
       YMax		      "10"
       SampleTime	      "0"
     }
+    Block {
+      BlockType		      Scope
+      Name		      "Inputs1"
+      SID		      "25"
+      Ports		      [1]
+      Position		      [590, 55, 620, 85]
+      Floating		      off
+      Location		      [217, 355, 977, 816]
+      Open		      off
+      NumInputPorts	      "1"
+      TickLabels	      "on"
+      List {
+	ListType		AxesTitles
+	axes1			"%<SignalLabel>"
+      }
+      List {
+	ListType		ScopeGraphics
+	FigureColor		"[0.5 0.5 0.5]"
+	AxesColor		"[0 0 0]"
+	AxesTickColor		"[1 1 1]"
+	LineColors		"[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]"
+	LineStyles		"-|-|-|-|-|-"
+	LineWidths		"[0.5 0.5 0.5 0.5 0.5 0.5]"
+	MarkerStyles		"none|none|none|none|none|none"
+      }
+      ShowLegends	      off
+      TimeRange		      "100"
+      YMin		      "-50"
+      YMax		      "60"
+      SaveName		      "ScopeData1"
+      SampleTime	      "0"
+    }
     Block {
       BlockType		      Mux
       Name		      "Mux1"
@@ -785,7 +826,7 @@ Model {
       Name		      "Mux2"
       SID		      "9"
       Ports		      [2, 1]
-      Position		      [530, 197, 565, 233]
+      Position		      [530, 277, 565, 313]
       Inputs		      "2"
     }
     Block {
@@ -803,8 +844,8 @@ Model {
       Ports		      [1]
       Position		      [290, 240, 320, 270]
       Floating		      off
-      Location		      [39, 560, 495, 794]
-      Open		      on
+      Location		      [19, 544, 475, 778]
+      Open		      off
       NumInputPorts	      "1"
       TickLabels	      "on"
       List {
@@ -831,7 +872,7 @@ Model {
       Name		      "S-Function"
       SID		      "12"
       Ports		      [1, 2]
-      Position		      [425, 156, 485, 189]
+      Position		      [425, 236, 485, 269]
       FunctionName	      "analogin"
       Parameters	      "h [30 31 32 33 34]"
       EnableBusSupport	      off
@@ -856,6 +897,16 @@ Model {
       Parameters	      "h"
       EnableBusSupport	      off
     }
+    Block {
+      BlockType		      S-Function
+      Name		      "S-Function3"
+      SID		      "22"
+      Ports		      [1, 2]
+      Position		      [420, 141, 480, 174]
+      FunctionName	      "encoderin"
+      Parameters	      "h [30]"
+      EnableBusSupport	      off
+    }
     Block {
       BlockType		      S-Function
       Name		      "S-Function4"
@@ -871,7 +922,7 @@ Model {
       Name		      "S-Function5"
       SID		      "16"
       Ports		      [1, 2]
-      Position		      [420, 246, 480, 279]
+      Position		      [420, 326, 480, 359]
       FunctionName	      "digitalin"
       Parameters	      "h [30 31]"
       EnableBusSupport	      off
@@ -903,7 +954,7 @@ Model {
       Ports		      [0, 1]
       Position		      [15, 80, 45, 110]
       Amplitude		      "10"
-      Frequency		      "0.1"
+      Frequency		      "0.5"
       SampleTime	      "h"
     }
     Block {
@@ -945,13 +996,6 @@ Model {
       DstBlock		      "Outputs"
       DstPort		      1
     }
-    Line {
-      SrcBlock		      "S-Function"
-      SrcPort		      2
-      Points		      [10, 0; 0, 25]
-      DstBlock		      "Mux2"
-      DstPort		      1
-    }
     Line {
       SrcBlock		      "Mux2"
       SrcPort		      1
@@ -965,13 +1009,6 @@ Model {
       DstBlock		      "S-Function"
       DstPort		      1
     }
-    Line {
-      SrcBlock		      "S-Function"
-      SrcPort		      1
-      Points		      [0, -40; -275, 0]
-      DstBlock		      "S-Function1"
-      DstPort		      1
-    }
     Line {
       SrcBlock		      "S-Function1"
       SrcPort		      1
@@ -1012,5 +1049,40 @@ Model {
       DstBlock		      "S-Function5"
       DstPort		      1
     }
+    Line {
+      SrcBlock		      "S-Function"
+      SrcPort		      1
+      Points		      [0, -50; -85, 0]
+      DstBlock		      "S-Function3"
+      DstPort		      1
+    }
+    Line {
+      SrcBlock		      "S-Function3"
+      SrcPort		      1
+      Points		      [0, -35; -270, 0]
+      DstBlock		      "S-Function1"
+      DstPort		      1
+    }
+    Line {
+      SrcBlock		      "S-Function3"
+      SrcPort		      2
+      Points		      [30, 0]
+      Branch {
+	DstBlock		"Display1"
+	DstPort			1
+      }
+      Branch {
+	Points			[0, -95]
+	DstBlock		"Inputs1"
+	DstPort			1
+      }
+    }
+    Line {
+      SrcBlock		      "S-Function"
+      SrcPort		      2
+      Points		      [10, 0; 0, 25]
+      DstBlock		      "Mux2"
+      DstPort		      1
+    }
   }
 }