blob: 87d67ad162663db565fd5a018051d6a6829ed329 [file] [log] [blame]
brians0ab60bb2013-01-31 02:21:51 +00001// ****************************************************************************
2// CopyLeft qwerk Robotics unINC. 2010 All Rights Reserved.
3// ****************************************************************************
4
Brian Silvermanf92396c2013-09-12 20:13:13 -07005#include "analog.h"
brians0ab60bb2013-01-31 02:21:51 +00006
7#include "FreeRTOS.h"
Austin Schuh63d0e9b2013-03-27 04:43:14 +00008#include "queue.h"
9#include "task.h"
10
Brian Silverman6ad00b82013-03-27 19:02:38 -070011void analog_init(void) {
12 // b[1:0] CAN RD1 p0.0
13 // b[3:2] CAN TD1 p0.1
14 //PINCON->PINSEL0 = 0x00000005;
brians0ab60bb2013-01-31 02:21:51 +000015
Brian Silverman6ad00b82013-03-27 19:02:38 -070016 // b[29:28] USB_DMIN p0.30
17 // b[27:26] USB_DPLUS p0.29
18 // b[21:20] AD0.3 p0.26
19 // b[19:18] AD0.2 p0.25
20 // PINCON->PINSEL1 = 0x14140000;
brians0ab60bb2013-01-31 02:21:51 +000021
Brian Silverman6ad00b82013-03-27 19:02:38 -070022 // PINCON->PINSEL2 = 0x0;
brians0ab60bb2013-01-31 02:21:51 +000023
Brian Silverman6ad00b82013-03-27 19:02:38 -070024 // b[31:30] AD0.5 p1.31
25 // b[29:28] V_BUS p1.30
26 // b[21:20] MCOB1 p1.26
27 // b[19:18] MCOA1 p1.25
28 // b[15:14] MCI1 p1.23
29 // b[13:12] MCOB0 p1.22
30 // b[09:08] MCI0 p1.20
31 // b[07:06] MCOA0 p1.19
32 // b[05:04] USB_UP_LED p1.18
33 //PINCON->PINSEL3 = 0xE0145150;
34 SC->PCONP |= PCONP_PCAD;
brians0ab60bb2013-01-31 02:21:51 +000035
Brian Silverman6ad00b82013-03-27 19:02:38 -070036 // Enable AD0.0, AD0.1, AD0.2, AD0.3
37 PINCON->PINSEL1 &= 0xFFC03FFF;
38 PINCON->PINSEL1 |= 0x00D54000;
39 ADC->ADCR = 0x00200500;
brians0ab60bb2013-01-31 02:21:51 +000040}
41
brians0ab60bb2013-01-31 02:21:51 +000042
Brian Silverman6ad00b82013-03-27 19:02:38 -070043int analog(int channel) {
44 ADC->ADCR = ((ADC->ADCR & 0xF8FFFF00) | (0x01000000 | (1 << channel)));
brians0ab60bb2013-01-31 02:21:51 +000045
Brian Silverman6ad00b82013-03-27 19:02:38 -070046 // Poll until it is done.
47 while(!(ADC->ADGDR & 0x80000000));
brians0ab60bb2013-01-31 02:21:51 +000048
Brian Silverman6ad00b82013-03-27 19:02:38 -070049 return ((ADC->ADGDR & 0x0000FFF0) >> 4);
brians0ab60bb2013-01-31 02:21:51 +000050}