brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 1 | // **************************************************************************** |
| 2 | // CopyLeft qwerk Robotics unINC. 2010 All Rights Reserved. |
| 3 | // **************************************************************************** |
| 4 | |
Brian Silverman | f92396c | 2013-09-12 20:13:13 -0700 | [diff] [blame] | 5 | #include "analog.h" |
brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 6 | |
| 7 | #include "FreeRTOS.h" |
Austin Schuh | 63d0e9b | 2013-03-27 04:43:14 +0000 | [diff] [blame] | 8 | #include "queue.h" |
| 9 | #include "task.h" |
| 10 | |
Brian Silverman | 6ad00b8 | 2013-03-27 19:02:38 -0700 | [diff] [blame] | 11 | void analog_init(void) { |
| 12 | // b[1:0] CAN RD1 p0.0 |
| 13 | // b[3:2] CAN TD1 p0.1 |
| 14 | //PINCON->PINSEL0 = 0x00000005; |
brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 15 | |
Brian Silverman | 6ad00b8 | 2013-03-27 19:02:38 -0700 | [diff] [blame] | 16 | // 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; |
brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 21 | |
Brian Silverman | 6ad00b8 | 2013-03-27 19:02:38 -0700 | [diff] [blame] | 22 | // PINCON->PINSEL2 = 0x0; |
brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 23 | |
Brian Silverman | 6ad00b8 | 2013-03-27 19:02:38 -0700 | [diff] [blame] | 24 | // 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; |
brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 35 | |
Brian Silverman | 6ad00b8 | 2013-03-27 19:02:38 -0700 | [diff] [blame] | 36 | // Enable AD0.0, AD0.1, AD0.2, AD0.3 |
| 37 | PINCON->PINSEL1 &= 0xFFC03FFF; |
| 38 | PINCON->PINSEL1 |= 0x00D54000; |
| 39 | ADC->ADCR = 0x00200500; |
brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 40 | } |
| 41 | |
brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 42 | |
Brian Silverman | 6ad00b8 | 2013-03-27 19:02:38 -0700 | [diff] [blame] | 43 | int analog(int channel) { |
| 44 | ADC->ADCR = ((ADC->ADCR & 0xF8FFFF00) | (0x01000000 | (1 << channel))); |
brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 45 | |
Brian Silverman | 6ad00b8 | 2013-03-27 19:02:38 -0700 | [diff] [blame] | 46 | // Poll until it is done. |
| 47 | while(!(ADC->ADGDR & 0x80000000)); |
brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 48 | |
Brian Silverman | 6ad00b8 | 2013-03-27 19:02:38 -0700 | [diff] [blame] | 49 | return ((ADC->ADGDR & 0x0000FFF0) >> 4); |
brians | 0ab60bb | 2013-01-31 02:21:51 +0000 | [diff] [blame] | 50 | } |