blob: 374b9034501eb6ed11fef9144f68949d99bf9265 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
// Sample main.cpp file. Blinks an LED, sends a message out USART2
// and turns on PWM on pin 2
#include "wirish.h"
#define LED_PIN 13
#define PWM_PIN 2
void handler1(void);
void handler2(void);
void handler3(void);
void handler4(void);
int toggle = 0;
int t;
int count1 = 0;
int count2 = 0;
int count3 = 0;
int count4 = 0;
uint16 rate1 = 1000;
uint16 rate2 = 2000;
uint16 rate3 = 4000;
uint16 rate4 = 8000;
uint16 val1 = 10000;
uint16 val2 = 10000;
uint16 val3 = 10000;
uint16 val4 = 10000;
HardwareTimer Timers[] = {Timer1, Timer2, Timer3, Timer4};
void setup()
{
/* Set up the LED to blink */
pinMode(LED_PIN, OUTPUT);
pinMode(38, INPUT);
/* Send a message out USART2 */
//SerialUSB.begin(9600);
SerialUSB.println("Begining timer test...");
for(int t=0; t<4; t++) {
Timers[t].setChannel1Mode(TIMER_OUTPUTCOMPARE);
Timers[t].setChannel2Mode(TIMER_OUTPUTCOMPARE);
Timers[t].setChannel3Mode(TIMER_OUTPUTCOMPARE);
Timers[t].setChannel4Mode(TIMER_OUTPUTCOMPARE);
}
}
void loop() {
for(t=0; t<4; t++) {
toggle ^= 1; digitalWrite(LED_PIN, toggle);
delay(1000);
SerialUSB.println("-----------------------------------------------------");
SerialUSB.print("Testing Timer "); SerialUSB.println(t+1);
count1 = count2 = count3 = count4 = 0;
Timers[t].setChannel1Mode(TIMER_OUTPUTCOMPARE);
Timers[t].setChannel2Mode(TIMER_OUTPUTCOMPARE);
Timers[t].setChannel3Mode(TIMER_OUTPUTCOMPARE);
Timers[t].setChannel4Mode(TIMER_OUTPUTCOMPARE);
Timers[t].attachCompare1Interrupt(handler1);
Timers[t].attachCompare2Interrupt(handler2);
Timers[t].attachCompare3Interrupt(handler3);
Timers[t].attachCompare4Interrupt(handler4);
delay(5000);
Timers[t].setChannel1Mode(TIMER_DISABLED);
Timers[t].setChannel2Mode(TIMER_DISABLED);
Timers[t].setChannel3Mode(TIMER_DISABLED);
Timers[t].setChannel4Mode(TIMER_DISABLED);
SerialUSB.print("Count1: "); SerialUSB.println(count1);
SerialUSB.print("Count2: "); SerialUSB.println(count2);
SerialUSB.print("Count3: "); SerialUSB.println(count3);
SerialUSB.print("Count4: "); SerialUSB.println(count4);
}
}
void handler1(void) {
val1 += rate1;
Timers[t].setCompare1(val1);
count1++;
}
void handler2(void) {
val2 += rate2;
Timers[t].setCompare2(val2);
count2++;
}
void handler3(void) {
val3 += rate3;
Timers[t].setCompare3(val3);
count3++;
}
void handler4(void) {
val4 += rate4;
Timers[t].setCompare4(val4);
count4++;
}
int main(void) {
init();
setup();
while (1) {
loop();
}
return 0;
}
|