The Code Repository for the REV0 Steering Wheel.

Dependencies:   Digital_InOut KS0108 Steering_Display mbed

Fork of Steering_Display by Kiran George Vetteth

Committer:
PennElectric
Date:
Thu Oct 02 23:24:45 2014 +0000
Revision:
1:9f481edc1641
Parent:
0:313541d8f8be
Updated Steering REV0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kiran_mbed 0:313541d8f8be 1 /*
kiran_mbed 0:313541d8f8be 2 Test Code
kiran_mbed 0:313541d8f8be 3 #include "Digital_Out.h"
kiran_mbed 0:313541d8f8be 4
kiran_mbed 0:313541d8f8be 5 //Serial pc(USBTX,USBRX);
kiran_mbed 0:313541d8f8be 6
kiran_mbed 0:313541d8f8be 7 int main()
kiran_mbed 0:313541d8f8be 8 {
kiran_mbed 0:313541d8f8be 9 Digital_Out ledPin1(p1_18,1);
kiran_mbed 0:313541d8f8be 10 Digital_Out ledPin2(p1_20,0);
kiran_mbed 0:313541d8f8be 11 Digital_Out ledPin3(p1_21,1);
kiran_mbed 0:313541d8f8be 12 Digital_Out ledPin4(p1_23,0);
kiran_mbed 0:313541d8f8be 13
kiran_mbed 0:313541d8f8be 14
kiran_mbed 0:313541d8f8be 15 wait(0.5);
kiran_mbed 0:313541d8f8be 16 while(1)
kiran_mbed 0:313541d8f8be 17 {
kiran_mbed 0:313541d8f8be 18 ledPin1= !ledPin1;
kiran_mbed 0:313541d8f8be 19 ledPin2= !ledPin2;
kiran_mbed 0:313541d8f8be 20 ledPin3= !ledPin3;
kiran_mbed 0:313541d8f8be 21 ledPin4= !ledPin4;
kiran_mbed 0:313541d8f8be 22
kiran_mbed 0:313541d8f8be 23 wait(0.5);
kiran_mbed 0:313541d8f8be 24 ledPin1= !ledPin1;
kiran_mbed 0:313541d8f8be 25 ledPin2= !ledPin2;
kiran_mbed 0:313541d8f8be 26 ledPin3= !ledPin3;
kiran_mbed 0:313541d8f8be 27 ledPin4= !ledPin4;
kiran_mbed 0:313541d8f8be 28
kiran_mbed 0:313541d8f8be 29 wait(0.5);
kiran_mbed 0:313541d8f8be 30 }
kiran_mbed 0:313541d8f8be 31
kiran_mbed 0:313541d8f8be 32 Digital_Out pin(p0_0);
kiran_mbed 0:313541d8f8be 33
kiran_mbed 0:313541d8f8be 34 DigitalOut myled(LED1);
kiran_mbed 0:313541d8f8be 35
kiran_mbed 0:313541d8f8be 36 Timer t;
kiran_mbed 0:313541d8f8be 37 int main() {
kiran_mbed 0:313541d8f8be 38 t.reset();
kiran_mbed 0:313541d8f8be 39 t.start();
kiran_mbed 0:313541d8f8be 40 for (int i = 0; i < 1000000; i++){
kiran_mbed 0:313541d8f8be 41 pin = 1;
kiran_mbed 0:313541d8f8be 42 pin = 0;
kiran_mbed 0:313541d8f8be 43 }
kiran_mbed 0:313541d8f8be 44 t.stop();
kiran_mbed 0:313541d8f8be 45
kiran_mbed 0:313541d8f8be 46 unsigned int time1 = t.read_us();
kiran_mbed 0:313541d8f8be 47
kiran_mbed 0:313541d8f8be 48 t.reset();
kiran_mbed 0:313541d8f8be 49 t.start();
kiran_mbed 0:313541d8f8be 50 for (int i = 0; i < 1000000; i++) {
kiran_mbed 0:313541d8f8be 51 myled = 1;
kiran_mbed 0:313541d8f8be 52 myled = 0;
kiran_mbed 0:313541d8f8be 53 }
kiran_mbed 0:313541d8f8be 54 t.stop();
kiran_mbed 0:313541d8f8be 55 unsigned int time2 = t.read_us();
kiran_mbed 0:313541d8f8be 56 printf("Library time: %d, mbed time: %d\r\n", time1, time2);
kiran_mbed 0:313541d8f8be 57 while(1) {
kiran_mbed 0:313541d8f8be 58
kiran_mbed 0:313541d8f8be 59 }
kiran_mbed 0:313541d8f8be 60 }
kiran_mbed 0:313541d8f8be 61 */
kiran_mbed 0:313541d8f8be 62
kiran_mbed 0:313541d8f8be 63 #ifndef DIGITAL_OUT_H
kiran_mbed 0:313541d8f8be 64 #define DIGITAL_OUT_H
kiran_mbed 0:313541d8f8be 65
kiran_mbed 0:313541d8f8be 66 #include"mbed.h"
kiran_mbed 0:313541d8f8be 67
kiran_mbed 0:313541d8f8be 68 #define _PINSEL_BASE 0x4002C000
kiran_mbed 0:313541d8f8be 69 #define _FIODIR_BASE 0x2009C000
kiran_mbed 0:313541d8f8be 70 #define _FIOSET_BASE 0x2009C018
kiran_mbed 0:313541d8f8be 71 #define _FIOCLR_BASE 0x2009C01C
kiran_mbed 0:313541d8f8be 72 #define _FIOPIN_BASE 0x2009C014
kiran_mbed 0:313541d8f8be 73
kiran_mbed 0:313541d8f8be 74 #ifndef _PIN_
kiran_mbed 0:313541d8f8be 75 #define _PIN_
kiran_mbed 0:313541d8f8be 76 typedef struct
kiran_mbed 0:313541d8f8be 77 {
kiran_mbed 0:313541d8f8be 78 int port;
kiran_mbed 0:313541d8f8be 79 int pin;
kiran_mbed 0:313541d8f8be 80 }Pin;
kiran_mbed 0:313541d8f8be 81 #endif /* _PIN_ */
kiran_mbed 0:313541d8f8be 82
kiran_mbed 0:313541d8f8be 83 #ifndef _PIN_NAME_
kiran_mbed 0:313541d8f8be 84 #define _PIN_NAME_
kiran_mbed 0:313541d8f8be 85 // Note many pins are not available as fully functional GPIOs, they are ommitted below
kiran_mbed 0:313541d8f8be 86 enum Pin_Name
kiran_mbed 0:313541d8f8be 87 {
kiran_mbed 0:313541d8f8be 88 p0_0 = 0,
kiran_mbed 0:313541d8f8be 89 p0_1 = 1,
kiran_mbed 0:313541d8f8be 90 p0_2 = 2,
kiran_mbed 0:313541d8f8be 91 p0_3 = 3,
kiran_mbed 0:313541d8f8be 92 p0_4 = 4,
kiran_mbed 0:313541d8f8be 93 p0_5 = 5,
kiran_mbed 0:313541d8f8be 94 p0_6 = 6,
kiran_mbed 0:313541d8f8be 95 p0_7 = 7,
kiran_mbed 0:313541d8f8be 96 p0_8 = 8,
kiran_mbed 0:313541d8f8be 97 p0_9 = 9,
kiran_mbed 0:313541d8f8be 98 p0_10 = 10,
kiran_mbed 0:313541d8f8be 99 p0_11 = 11,
kiran_mbed 0:313541d8f8be 100 /*p0_12 = 12,
kiran_mbed 0:313541d8f8be 101 p0_13 = 13,
kiran_mbed 0:313541d8f8be 102 p0_14 = 14,*/
kiran_mbed 0:313541d8f8be 103 p0_15 = 15,
kiran_mbed 0:313541d8f8be 104 p0_16 = 16,
kiran_mbed 0:313541d8f8be 105
kiran_mbed 0:313541d8f8be 106 p0_17 = 17,
kiran_mbed 0:313541d8f8be 107 p0_18 = 18,
kiran_mbed 0:313541d8f8be 108 p0_19 = 19,
kiran_mbed 0:313541d8f8be 109 p0_20 = 20,
kiran_mbed 0:313541d8f8be 110 p0_21 = 21,
kiran_mbed 0:313541d8f8be 111 p0_22 = 22,
kiran_mbed 0:313541d8f8be 112 p0_23 = 23,
kiran_mbed 0:313541d8f8be 113 p0_24 = 24,
kiran_mbed 0:313541d8f8be 114 p0_25 = 25,
kiran_mbed 0:313541d8f8be 115 p0_26 = 26,
kiran_mbed 0:313541d8f8be 116 /* p0_27 = 27,
kiran_mbed 0:313541d8f8be 117 p0_28 = 28,
kiran_mbed 0:313541d8f8be 118 p0_29 = 29,
kiran_mbed 0:313541d8f8be 119 p0_30 = 30,*/
kiran_mbed 0:313541d8f8be 120
kiran_mbed 0:313541d8f8be 121
kiran_mbed 0:313541d8f8be 122 p1_0 = 100,
kiran_mbed 0:313541d8f8be 123 p1_1 = 101,
kiran_mbed 0:313541d8f8be 124 /* p1_2 = 102,
kiran_mbed 0:313541d8f8be 125 p1_3 = 103,*/
kiran_mbed 0:313541d8f8be 126 p1_4 = 104,
kiran_mbed 0:313541d8f8be 127 /* p1_5 = 105,
kiran_mbed 0:313541d8f8be 128 p1_6 = 106,
kiran_mbed 0:313541d8f8be 129 p1_7 = 107,*/
kiran_mbed 0:313541d8f8be 130 p1_8 = 108,
kiran_mbed 0:313541d8f8be 131 p1_9 = 109,
kiran_mbed 0:313541d8f8be 132 p1_10 = 110,
kiran_mbed 0:313541d8f8be 133 /* p1_11 = 111,
kiran_mbed 0:313541d8f8be 134 p1_12 = 112,
kiran_mbed 0:313541d8f8be 135 p1_13 = 113,*/
kiran_mbed 0:313541d8f8be 136 p1_14 = 114,
kiran_mbed 0:313541d8f8be 137 p1_15 = 115,
kiran_mbed 0:313541d8f8be 138
kiran_mbed 0:313541d8f8be 139 p1_16 = 116,
kiran_mbed 0:313541d8f8be 140 p1_17 = 117,
kiran_mbed 0:313541d8f8be 141 p1_18 = 118,
kiran_mbed 0:313541d8f8be 142 p1_19 = 119,
kiran_mbed 0:313541d8f8be 143 p1_20 = 120,
kiran_mbed 0:313541d8f8be 144 p1_21 = 121,
kiran_mbed 0:313541d8f8be 145 p1_22 = 122,
kiran_mbed 0:313541d8f8be 146 p1_23 = 123,
kiran_mbed 0:313541d8f8be 147 p1_24 = 124,
kiran_mbed 0:313541d8f8be 148 p1_25 = 125,
kiran_mbed 0:313541d8f8be 149 p1_26 = 126,
kiran_mbed 0:313541d8f8be 150 p1_27 = 127,
kiran_mbed 0:313541d8f8be 151 p1_28 = 128,
kiran_mbed 0:313541d8f8be 152 p1_29 = 129,
kiran_mbed 0:313541d8f8be 153 p1_30 = 130,
kiran_mbed 0:313541d8f8be 154
kiran_mbed 0:313541d8f8be 155
kiran_mbed 0:313541d8f8be 156 p2_0 = 200,
kiran_mbed 0:313541d8f8be 157 p2_1 = 201,
kiran_mbed 0:313541d8f8be 158 p2_2 = 202,
kiran_mbed 0:313541d8f8be 159 p2_3 = 203,
kiran_mbed 0:313541d8f8be 160 p2_4 = 204,
kiran_mbed 0:313541d8f8be 161 p2_5 = 205,
kiran_mbed 0:313541d8f8be 162 p2_6 = 206,
kiran_mbed 0:313541d8f8be 163 p2_7 = 207,
kiran_mbed 0:313541d8f8be 164 p2_8 = 208,
kiran_mbed 0:313541d8f8be 165 p2_9 = 209,
kiran_mbed 0:313541d8f8be 166 p2_10 = 210,
kiran_mbed 0:313541d8f8be 167 p2_11 = 211,
kiran_mbed 0:313541d8f8be 168 p2_12 = 212,
kiran_mbed 0:313541d8f8be 169 p2_13 = 213,
kiran_mbed 0:313541d8f8be 170 /* p2_14 = 214,
kiran_mbed 0:313541d8f8be 171 p2_15 = 215,
kiran_mbed 0:313541d8f8be 172
kiran_mbed 0:313541d8f8be 173 p2_16 = 216,
kiran_mbed 0:313541d8f8be 174 p2_17 = 217,
kiran_mbed 0:313541d8f8be 175 p2_18 = 218,
kiran_mbed 0:313541d8f8be 176 p2_19 = 219,
kiran_mbed 0:313541d8f8be 177 p2_20 = 220,
kiran_mbed 0:313541d8f8be 178 p2_21 = 221,
kiran_mbed 0:313541d8f8be 179 p2_22 = 222,
kiran_mbed 0:313541d8f8be 180 p2_23 = 223,
kiran_mbed 0:313541d8f8be 181 p2_24 = 224,
kiran_mbed 0:313541d8f8be 182 p2_25 = 225,
kiran_mbed 0:313541d8f8be 183 p2_26 = 226,
kiran_mbed 0:313541d8f8be 184 p2_27 = 227,
kiran_mbed 0:313541d8f8be 185 p2_28 = 228,
kiran_mbed 0:313541d8f8be 186 p2_29 = 229,
kiran_mbed 0:313541d8f8be 187 p2_30 = 230,*/
kiran_mbed 0:313541d8f8be 188
kiran_mbed 0:313541d8f8be 189
kiran_mbed 0:313541d8f8be 190 /* p3_0 = 300,
kiran_mbed 0:313541d8f8be 191 p3_1 = 301,
kiran_mbed 0:313541d8f8be 192 p3_2 = 302,
kiran_mbed 0:313541d8f8be 193 p3_3 = 303,
kiran_mbed 0:313541d8f8be 194 p3_4 = 304,
kiran_mbed 0:313541d8f8be 195 p3_5 = 305,
kiran_mbed 0:313541d8f8be 196 p3_6 = 306,
kiran_mbed 0:313541d8f8be 197 p3_7 = 307,
kiran_mbed 0:313541d8f8be 198 p3_8 = 308,
kiran_mbed 0:313541d8f8be 199 p3_9 = 309,
kiran_mbed 0:313541d8f8be 200 p3_10 = 310,
kiran_mbed 0:313541d8f8be 201 p3_11 = 311,
kiran_mbed 0:313541d8f8be 202 p3_12 = 312,
kiran_mbed 0:313541d8f8be 203 p3_13 = 313,
kiran_mbed 0:313541d8f8be 204 p3_14 = 314,
kiran_mbed 0:313541d8f8be 205 p3_15 = 315,
kiran_mbed 0:313541d8f8be 206
kiran_mbed 0:313541d8f8be 207 p3_16 = 316,
kiran_mbed 0:313541d8f8be 208 p3_17 = 317,
kiran_mbed 0:313541d8f8be 209 p3_18 = 318,
kiran_mbed 0:313541d8f8be 210 p3_19 = 319,
kiran_mbed 0:313541d8f8be 211 p3_20 = 320,
kiran_mbed 0:313541d8f8be 212 p3_21 = 321,
kiran_mbed 0:313541d8f8be 213 p3_22 = 322,
kiran_mbed 0:313541d8f8be 214 p3_23 = 323,
kiran_mbed 0:313541d8f8be 215 p3_24 = 324,*/
kiran_mbed 0:313541d8f8be 216 p3_25 = 325,
kiran_mbed 0:313541d8f8be 217 p3_26 = 326,
kiran_mbed 0:313541d8f8be 218 /*p3_27 = 327,
kiran_mbed 0:313541d8f8be 219 p3_28 = 328,
kiran_mbed 0:313541d8f8be 220 p3_29 = 329,
kiran_mbed 0:313541d8f8be 221 p3_30 = 330,*/
kiran_mbed 0:313541d8f8be 222
kiran_mbed 0:313541d8f8be 223 /*p4_0 = 400,
kiran_mbed 0:313541d8f8be 224 p4_1 = 401,
kiran_mbed 0:313541d8f8be 225 p4_2 = 402,
kiran_mbed 0:313541d8f8be 226 p4_3 = 403,
kiran_mbed 0:313541d8f8be 227 p4_4 = 404,
kiran_mbed 0:313541d8f8be 228 p4_5 = 405,
kiran_mbed 0:313541d8f8be 229 p4_6 = 406,
kiran_mbed 0:313541d8f8be 230 p4_7 = 407,
kiran_mbed 0:313541d8f8be 231 p4_8 = 408,
kiran_mbed 0:313541d8f8be 232 p4_9 = 409,
kiran_mbed 0:313541d8f8be 233 p4_10 = 410,
kiran_mbed 0:313541d8f8be 234 p4_11 = 411,
kiran_mbed 0:313541d8f8be 235 p4_12 = 412,
kiran_mbed 0:313541d8f8be 236 p4_13 = 413,
kiran_mbed 0:313541d8f8be 237 p4_14 = 414,
kiran_mbed 0:313541d8f8be 238 p4_15 = 415,
kiran_mbed 0:313541d8f8be 239
kiran_mbed 0:313541d8f8be 240 p4_16 = 416,
kiran_mbed 0:313541d8f8be 241 p4_17 = 417,
kiran_mbed 0:313541d8f8be 242 p4_18 = 418,
kiran_mbed 0:313541d8f8be 243 p4_19 = 419,
kiran_mbed 0:313541d8f8be 244 p4_20 = 420,
kiran_mbed 0:313541d8f8be 245 p4_21 = 421,
kiran_mbed 0:313541d8f8be 246 p4_22 = 422,
kiran_mbed 0:313541d8f8be 247 p4_23 = 423,
kiran_mbed 0:313541d8f8be 248 p4_24 = 424,
kiran_mbed 0:313541d8f8be 249 p4_25 = 425,
kiran_mbed 0:313541d8f8be 250 p4_26 = 426,
kiran_mbed 0:313541d8f8be 251 p4_27 = 427,*/
kiran_mbed 0:313541d8f8be 252 p4_28 = 428,
kiran_mbed 0:313541d8f8be 253 p4_29 = 429,
kiran_mbed 0:313541d8f8be 254 /*p4_30 = 430*/
kiran_mbed 0:313541d8f8be 255
kiran_mbed 0:313541d8f8be 256 };
kiran_mbed 0:313541d8f8be 257 #endif /* _PIN_NAME_ */
kiran_mbed 0:313541d8f8be 258
kiran_mbed 0:313541d8f8be 259
kiran_mbed 0:313541d8f8be 260 class Digital_Out
kiran_mbed 0:313541d8f8be 261 {
kiran_mbed 0:313541d8f8be 262 private: Pin _pin;
kiran_mbed 0:313541d8f8be 263 public: Digital_Out(Pin_Name IPin)
kiran_mbed 0:313541d8f8be 264 {
kiran_mbed 0:313541d8f8be 265 _pin.port=(IPin/100);
kiran_mbed 0:313541d8f8be 266 _pin.pin=(IPin%100);
kiran_mbed 0:313541d8f8be 267 const int PINSELx = ((_pin.port*2) + (1* (_pin.pin > 15) ? 1:0));
kiran_mbed 0:313541d8f8be 268 const int FIODIRx = _pin.port;
kiran_mbed 0:313541d8f8be 269
kiran_mbed 0:313541d8f8be 270 *(uint32_t*)(_PINSEL_BASE + (PINSELx*4)) &= ~(1 << ((_pin.pin%16)*2) | (1 << (((_pin.pin%16)*2)+1))); //GPIO
kiran_mbed 0:313541d8f8be 271 *(uint32_t*)(_FIODIR_BASE + (FIODIRx*0x20)) |= (1 << _pin.pin); //Output
kiran_mbed 0:313541d8f8be 272 }
kiran_mbed 0:313541d8f8be 273
kiran_mbed 0:313541d8f8be 274 Digital_Out(Pin_Name IPin, int value)
kiran_mbed 0:313541d8f8be 275 {
kiran_mbed 0:313541d8f8be 276 _pin.port=(IPin/100);
kiran_mbed 0:313541d8f8be 277 _pin.pin=(IPin%100);
kiran_mbed 0:313541d8f8be 278 const int PINSELx = ((_pin.port*2) + (1* (_pin.pin > 15) ? 1:0));
kiran_mbed 0:313541d8f8be 279 const int FIODIRx = _pin.port;
kiran_mbed 0:313541d8f8be 280
kiran_mbed 0:313541d8f8be 281 *(uint32_t*)(_PINSEL_BASE + (PINSELx*4)) &= ~(1 << ((_pin.pin%16)*2) | (1 << (((_pin.pin%16)*2)+1))); //GPIO
kiran_mbed 0:313541d8f8be 282 *(uint32_t*)(_FIODIR_BASE + (FIODIRx*0x20)) |= (1 << _pin.pin); //Output
kiran_mbed 0:313541d8f8be 283 *(uint32_t*)((_FIOSET_BASE*value) + (_FIOCLR_BASE*(1-value)) + (_pin.port*0x20)) |= (1 << _pin.pin); //Write
kiran_mbed 0:313541d8f8be 284 }
kiran_mbed 0:313541d8f8be 285
kiran_mbed 0:313541d8f8be 286 void write(int value)
kiran_mbed 0:313541d8f8be 287 {
kiran_mbed 0:313541d8f8be 288 if (value != 1 && value != 0) return;
kiran_mbed 0:313541d8f8be 289 *(uint32_t*)((_FIOSET_BASE*value)+(_FIOCLR_BASE*(1-value)) + (_pin.port*0x20)) |= (1 << _pin.pin); //Write
kiran_mbed 0:313541d8f8be 290 }
kiran_mbed 0:313541d8f8be 291
kiran_mbed 0:313541d8f8be 292 int read()
kiran_mbed 0:313541d8f8be 293 {
kiran_mbed 0:313541d8f8be 294 return ((*(uint32_t*)(_FIOPIN_BASE +_pin.port*0x20) & (1 << _pin.pin)) >> _pin.pin); //Read
kiran_mbed 0:313541d8f8be 295 }
kiran_mbed 0:313541d8f8be 296
kiran_mbed 0:313541d8f8be 297 Digital_Out& operator= (int value)
kiran_mbed 0:313541d8f8be 298 {
kiran_mbed 0:313541d8f8be 299 write(value);
kiran_mbed 0:313541d8f8be 300 return *this;
kiran_mbed 0:313541d8f8be 301 }
kiran_mbed 0:313541d8f8be 302
kiran_mbed 0:313541d8f8be 303 Digital_Out& operator= (Digital_Out& rhs)
kiran_mbed 0:313541d8f8be 304 {
kiran_mbed 0:313541d8f8be 305 write(rhs.read());
kiran_mbed 0:313541d8f8be 306 return *this;
kiran_mbed 0:313541d8f8be 307 }
kiran_mbed 0:313541d8f8be 308
kiran_mbed 0:313541d8f8be 309 operator int()
kiran_mbed 0:313541d8f8be 310 {
kiran_mbed 0:313541d8f8be 311 return read();
kiran_mbed 0:313541d8f8be 312 }
kiran_mbed 0:313541d8f8be 313 };
kiran_mbed 0:313541d8f8be 314
kiran_mbed 0:313541d8f8be 315 #endif /*DIGITAL_OUT_H*/