A fork of AR8000
Dependents: Sumo_v2 Sumo_v2_Unstable Sumo_v2_RG13
Diff: AR8000.h
- 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