A fork of AR8000

Dependents:   Sumo_v2 Sumo_v2_Unstable Sumo_v2_RG13

Revision:
0:b08668430838
Child:
1:a5bfae540999
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AR8000.h	Fri Mar 23 14:45:07 2012 +0000
@@ -0,0 +1,63 @@
+//TODO:
+//- Ein Timer reicht. Mit read_us() kann zu jeder Zeit die Zeit festgestellt werden
+
+#pragma once
+
+//Interrupt-Callback Vorlage
+#define AR8000_RISE_FALL(Ch)\
+void Rise##Ch()\
+{\
+    LastRise[Ch]= Time.read_us();\
+}\
+void Fall##Ch()\
+{\
+    int dT= Time.read_us() - LastRise[Ch];\
+    if(dT > 900 && dT < 2200)\
+         dTime[Ch]= dT;\
+}
+
+
+class AR8000
+{
+private:
+    InterruptIn & ChInt0;           //Interrupt-Handler fuer jeden Pin
+    InterruptIn & ChInt1;
+    InterruptIn & ChInt2;
+    InterruptIn & ChInt3;
+    InterruptIn & ChInt4;
+    InterruptIn & ChInt5;
+    InterruptIn & ChInt6;
+    InterruptIn & ChInt7;
+    
+    Timer Time;                     //Timer for all 8 Channels
+    volatile int LastRise[8];       //Zeitpunkt der letzten steigende Flanke  
+    volatile int dTime[8];          //Pulsdauer in us [1000...2000]
+    
+public:
+    //Das Ergebnis [0...1000], kann nach dem Update "gelesen werden"
+    int Pos[8];
+    
+    //Initialisieren
+    AR8000(InterruptIn & ChInt0_,
+           InterruptIn & ChInt1_,
+           InterruptIn & ChInt2_,
+           InterruptIn & ChInt3_,
+           InterruptIn & ChInt4_,
+           InterruptIn & ChInt5_,
+           InterruptIn & ChInt6_,
+           InterruptIn & ChInt7_);
+    void Init();
+    
+    //Interrupt-Callbacks definieren
+    AR8000_RISE_FALL(0);
+    AR8000_RISE_FALL(1);
+    AR8000_RISE_FALL(2);
+    AR8000_RISE_FALL(3);
+    AR8000_RISE_FALL(4);
+    AR8000_RISE_FALL(5);
+    AR8000_RISE_FALL(6);
+    AR8000_RISE_FALL(7);
+    
+    //Update-Methode
+    void Update();
+};
\ No newline at end of file