A fork of AR8000

Dependents:   Sumo_v2 Sumo_v2_Unstable Sumo_v2_RG13

Committer:
BlazeX
Date:
Fri Apr 20 11:02:25 2012 +0000
Revision:
9:c57888a66a5f
Parent:
7:0b27bef14b0e
Enabled mirrored connections (Channel0 at pin of Channel8 and vice versa)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
BlazeX 0:b08668430838 1 #pragma once
BlazeX 0:b08668430838 2
BlazeX 9:c57888a66a5f 3 #define AR8000_CONNECTORS_MIRRORED
BlazeX 9:c57888a66a5f 4
BlazeX 0:b08668430838 5 //Interrupt-Callback Vorlage
BlazeX 0:b08668430838 6 #define AR8000_RISE_FALL(Ch)\
BlazeX 0:b08668430838 7 void Rise##Ch()\
BlazeX 0:b08668430838 8 {\
BlazeX 0:b08668430838 9 LastRise[Ch]= Time.read_us();\
BlazeX 0:b08668430838 10 }\
BlazeX 0:b08668430838 11 void Fall##Ch()\
BlazeX 0:b08668430838 12 {\
BlazeX 0:b08668430838 13 int dT= Time.read_us() - LastRise[Ch];\
BlazeX 6:ce4f088d8111 14 if(dT > 900 && dT < 2100)\
BlazeX 0:b08668430838 15 dTime[Ch]= dT;\
BlazeX 0:b08668430838 16 }
BlazeX 0:b08668430838 17
BlazeX 0:b08668430838 18
BlazeX 0:b08668430838 19 class AR8000
BlazeX 0:b08668430838 20 {
BlazeX 0:b08668430838 21 private:
BlazeX 1:a5bfae540999 22 InterruptIn ChInt0; //Interrupt-Handler fuer jeden Pin
BlazeX 1:a5bfae540999 23 InterruptIn ChInt1;
BlazeX 1:a5bfae540999 24 InterruptIn ChInt2;
BlazeX 1:a5bfae540999 25 InterruptIn ChInt3;
BlazeX 1:a5bfae540999 26 InterruptIn ChInt4;
BlazeX 1:a5bfae540999 27 InterruptIn ChInt5;
BlazeX 1:a5bfae540999 28 InterruptIn ChInt6;
BlazeX 1:a5bfae540999 29 InterruptIn ChInt7;
BlazeX 0:b08668430838 30
BlazeX 0:b08668430838 31 Timer Time; //Timer for all 8 Channels
BlazeX 0:b08668430838 32 volatile int LastRise[8]; //Zeitpunkt der letzten steigende Flanke
BlazeX 0:b08668430838 33 volatile int dTime[8]; //Pulsdauer in us [1000...2000]
BlazeX 0:b08668430838 34
BlazeX 0:b08668430838 35 public:
BlazeX 6:ce4f088d8111 36 int RawChannels[8]; //Rohdaten [1000...2000]
BlazeX 6:ce4f088d8111 37
BlazeX 2:5bb207fd97c5 38 //Die Steuerbefehle
BlazeX 2:5bb207fd97c5 39 float Throttle; //0=Aus, 1=Vollgas
BlazeX 2:5bb207fd97c5 40 float Aileron; //-1=Links, 0=Nichts, +1=Rechts
BlazeX 2:5bb207fd97c5 41 float Elevator; //-1=Sinken, 0=Nichts, +1=Steigen
BlazeX 2:5bb207fd97c5 42 float Rudder; //-1=Links, 0=Nichts, +1=Rechts
BlazeX 2:5bb207fd97c5 43
BlazeX 7:0b27bef14b0e 44 float Aux1; //-1...+1 Left Trim
BlazeX 7:0b27bef14b0e 45 float Aux2; //-1...+1 Right Trim
BlazeX 7:0b27bef14b0e 46 float Aux3; //-1...+1 Knob
BlazeX 2:5bb207fd97c5 47
BlazeX 7:0b27bef14b0e 48 int State1; //0, 1 Gear
BlazeX 7:0b27bef14b0e 49 int State2; //0, 1, 2 F-Mode
BlazeX 2:5bb207fd97c5 50
BlazeX 0:b08668430838 51
BlazeX 0:b08668430838 52 //Initialisieren
BlazeX 1:a5bfae540999 53 AR8000();
BlazeX 0:b08668430838 54 void Init();
BlazeX 0:b08668430838 55
BlazeX 0:b08668430838 56 //Interrupt-Callbacks definieren
BlazeX 0:b08668430838 57 AR8000_RISE_FALL(0);
BlazeX 0:b08668430838 58 AR8000_RISE_FALL(1);
BlazeX 0:b08668430838 59 AR8000_RISE_FALL(2);
BlazeX 0:b08668430838 60 AR8000_RISE_FALL(3);
BlazeX 0:b08668430838 61 AR8000_RISE_FALL(4);
BlazeX 0:b08668430838 62 AR8000_RISE_FALL(5);
BlazeX 0:b08668430838 63 AR8000_RISE_FALL(6);
BlazeX 0:b08668430838 64 AR8000_RISE_FALL(7);
BlazeX 0:b08668430838 65
BlazeX 0:b08668430838 66 //Update-Methode
BlazeX 0:b08668430838 67 void Update();
BlazeX 0:b08668430838 68 };