root / branches / analog / code / projects / template / main.c @ 1454
History | View | Annotate | Download (1.29 KB)
1 | 16 | bcoltin | #include <dragonfly_lib.h> |
---|---|---|---|
2 | |||
3 | 1454 | jykong | int count;
|
4 | |||
5 | unsigned int testf(int); |
||
6 | void setf(int); |
||
7 | |||
8 | 857 | bcoltin | int main(void) |
9 | { |
||
10 | 1454 | jykong | int loops;
|
11 | unsigned int val; |
||
12 | char i = 0 | _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0); |
||
13 | 1419 | jsexton | |
14 | 1454 | jykong | sei(); |
15 | 1419 | jsexton | |
16 | 1454 | jykong | analog_init(ADC_STOP); |
17 | usb_init(); |
||
18 | range_init(); |
||
19 | |||
20 | usb_puts("STARTING ANALOG CLOCK SCALE TEST\n\r");
|
||
21 | usb_puts("ADC10\tACD8\tCount\n\r");
|
||
22 | |||
23 | for(;i >= 0; i--) { |
||
24 | ADCSRA &= ~7;
|
||
25 | ADCSRA |= i; |
||
26 | usb_puts("\n\rClock Prescalar: 2^");
|
||
27 | usb_puti(i); |
||
28 | usb_puts("\n\r");
|
||
29 | |||
30 | for(loops = 0; loops < 10; loops++) { |
||
31 | val = testf(WHEEL_PORT); |
||
32 | usb_puti(val); |
||
33 | usb_puts("\t");
|
||
34 | usb_puti(val>>2);
|
||
35 | usb_puts("\t");
|
||
36 | usb_puti(count); |
||
37 | usb_puts("\n\r");
|
||
38 | delay_ms(500);
|
||
39 | } |
||
40 | } |
||
41 | |||
42 | usb_puts("done");
|
||
43 | 967 | alevkoy | |
44 | 1454 | jykong | return 0; |
45 | } |
||
46 | 967 | alevkoy | |
47 | 1454 | jykong | unsigned int testf(int which) { |
48 | int adc_h;
|
||
49 | int adc_l;
|
||
50 | |||
51 | // Let any previous conversion finish
|
||
52 | while (ADCSRA & _BV(ADSC));
|
||
53 | 1419 | jsexton | |
54 | 1454 | jykong | if(which < EXT_MUX) {
|
55 | ADMUX = ADMUX_OPT + which; |
||
56 | } else {
|
||
57 | ADMUX = ADMUX_OPT + EXT_MUX; |
||
58 | setf(which - 8);
|
||
59 | } |
||
60 | |||
61 | // Start the conversion
|
||
62 | ADCSRA |= _BV(ADSC); |
||
63 | |||
64 | count = 0;
|
||
65 | 1419 | jsexton | |
66 | 1454 | jykong | // Wait for the conversion to finish
|
67 | while (ADCSRA & _BV(ADSC)) {
|
||
68 | count++; |
||
69 | 967 | alevkoy | } |
70 | 1454 | jykong | |
71 | adc_l = ADCL; |
||
72 | adc_h = ADCH; |
||
73 | 967 | alevkoy | |
74 | 1454 | jykong | return ((adc_h << 2) | (adc_l >> 6)); |
75 | 16 | bcoltin | } |
76 | 773 | kwoo | |
77 | 1454 | jykong | void setf(int which) { |
78 | // mask so only proper bits are possible.
|
||
79 | PORTG = (PORTG & 0xE3) | ((which & 0x03) << 3) | (which & 0x04); |
||
80 | } |