Skip to content

Commit eae4887

Browse files
committed
Adding test sketches to measure I2C transactions
1 parent 134a2cc commit eae4887

File tree

2 files changed

+256
-0
lines changed

2 files changed

+256
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
#include "OptaBlue.h"
2+
3+
#define OPTA_CONTROLLER_DETECT_PIN PG_8
4+
5+
#define EXPANSION_INDEX 0
6+
7+
//#define MEASURE_RTD
8+
//#define MEASURE_ADC_SINGLE
9+
//#define MEASURE_ADC_SINGLE_WITH_CONVERSION
10+
//#define MEASURE_ADC_ALL_AT_ONCE
11+
//#define MEASURE_ALL_DIGITAL_INPUT
12+
//#define MEASURE_ALL_DIGITAL_INPUT_AT_ONCE
13+
//#define MEASURE_WRITE_SINGLE_DAC_CHANNEL
14+
//#define MEASURE_WRITE_ALL_DAC
15+
#define MEASURE_WRITE_PWM
16+
17+
AnalogExpansion aexp;
18+
19+
void setup() {
20+
Serial.begin(115200);
21+
while(!Serial) {
22+
23+
}
24+
Serial.println("TEST SETUP for measuring I2C timing");
25+
OptaController.begin();
26+
27+
pinMode(OPTA_CONTROLLER_DETECT_PIN, INPUT_PULLUP);
28+
pinMode(LED_USER, OUTPUT);
29+
pinMode(BTN_USER, INPUT);
30+
31+
aexp = OptaController.getExpansion(EXPANSION_INDEX);
32+
if(aexp) {
33+
#ifdef MEASURE_RTD
34+
aexp.beginChannelAsRtd(0, false, 1.2);
35+
#endif
36+
37+
#ifdef MEASURE_ADC_SINGLE
38+
aexp.beginChannelAsVoltageAdc(0);
39+
#endif
40+
41+
#ifdef MEASURE_ADC_SINGLE_WITH_CONVERSION
42+
aexp.beginChannelAsVoltageAdc(0);
43+
#endif
44+
45+
#ifdef MEASURE_ADC_ALL_AT_ONCE
46+
aexp.beginChannelAsVoltageAdc(0);
47+
aexp.beginChannelAsVoltageAdc(1);
48+
aexp.beginChannelAsVoltageAdc(2);
49+
aexp.beginChannelAsVoltageAdc(3);
50+
aexp.beginChannelAsVoltageAdc(4);
51+
aexp.beginChannelAsVoltageAdc(5);
52+
aexp.beginChannelAsVoltageAdc(6);
53+
aexp.beginChannelAsVoltageAdc(7);
54+
#endif
55+
56+
#ifdef MEASURE_ALL_DIGITAL_INPUT
57+
aexp.beginChannelAsDigitalInput(0);
58+
aexp.beginChannelAsDigitalInput(1);
59+
aexp.beginChannelAsDigitalInput(2);
60+
aexp.beginChannelAsDigitalInput(3);
61+
aexp.beginChannelAsDigitalInput(4);
62+
aexp.beginChannelAsDigitalInput(5);
63+
aexp.beginChannelAsDigitalInput(6);
64+
aexp.beginChannelAsDigitalInput(7);
65+
#endif
66+
67+
#ifdef MEASURE_ALL_DIGITAL_INPUT_AT_ONCE
68+
aexp.beginChannelAsDigitalInput(0);
69+
aexp.beginChannelAsDigitalInput(1);
70+
aexp.beginChannelAsDigitalInput(2);
71+
aexp.beginChannelAsDigitalInput(3);
72+
aexp.beginChannelAsDigitalInput(4);
73+
aexp.beginChannelAsDigitalInput(5);
74+
aexp.beginChannelAsDigitalInput(6);
75+
aexp.beginChannelAsDigitalInput(7);
76+
#endif
77+
78+
#ifdef MEASURE_WRITE_SINGLE_DAC_CHANNEL
79+
aexp.beginChannelAsVoltageDac(0);
80+
#endif
81+
82+
#ifdef MEASURE_WRITE_ALL_DAC
83+
aexp.beginChannelAsVoltageDac(0);
84+
aexp.beginChannelAsVoltageDac(1);
85+
aexp.beginChannelAsVoltageDac(2);
86+
aexp.beginChannelAsVoltageDac(3);
87+
aexp.beginChannelAsVoltageDac(4);
88+
aexp.beginChannelAsVoltageDac(5);
89+
aexp.beginChannelAsVoltageDac(6);
90+
aexp.beginChannelAsVoltageDac(7);
91+
#endif
92+
93+
94+
}
95+
else {
96+
while(1) {
97+
Serial.println("Analog expansion not found");
98+
delay(1000);
99+
}
100+
}
101+
102+
}
103+
104+
void loop() {
105+
OptaController.update();
106+
static int counter = 0;
107+
static int measure = 0;
108+
digitalWrite(LED_USER,LOW);
109+
if(digitalRead(BTN_USER) == LOW) {
110+
counter++;
111+
if(counter > 10000) {
112+
measure++;
113+
}
114+
}
115+
else {
116+
counter=0;
117+
measure = 0;
118+
}
119+
if(measure == 1) {
120+
digitalWrite(LED_USER,HIGH);
121+
float v = 0;
122+
#ifdef MEASURE_RTD
123+
Serial.println("executing aexp.getRtd(0);");
124+
v = aexp.getRtd(0);
125+
#endif
126+
#ifdef MEASURE_ADC_SINGLE
127+
Serial.println("executing aexp.getAdc(0, true);");
128+
v = aexp.getAdc(0, true);
129+
#endif
130+
131+
#ifdef MEASURE_ADC_SINGLE_WITH_CONVERSION
132+
Serial.println("executing aexp.pinVoltage(0, true);");
133+
v = aexp.pinVoltage(0, true);
134+
#endif
135+
136+
#ifdef MEASURE_ADC_ALL_AT_ONCE
137+
Serial.println("executing aexp.updateAnalogInputs();");
138+
aexp.updateAnalogInputs();
139+
v = aexp.getAdc(0, false);
140+
#endif
141+
142+
#ifdef MEASURE_ALL_DIGITAL_INPUT
143+
Serial.println("executing aexp.digitalRead(0, true);");
144+
v = aexp.digitalRead(0, true);
145+
#endif
146+
147+
#ifdef MEASURE_ALL_DIGITAL_INPUT_AT_ONCE
148+
Serial.println("executing aexp.updateDigitalInputs();");
149+
aexp.updateDigitalInputs();
150+
v = aexp.digitalRead(0, false);
151+
#endif
152+
153+
#ifdef MEASURE_WRITE_SINGLE_DAC_CHANNEL
154+
Serial.println("executing aexp.setDac(0, 5050, true);");
155+
aexp.setDac(0, 5050, true);
156+
#endif
157+
158+
#ifdef MEASURE_WRITE_ALL_DAC
159+
Serial.println("executing aexp.updateAnalogOutputs();");
160+
aexp.setDac(0, 5050, false);
161+
aexp.updateAnalogOutputs();
162+
#endif
163+
164+
#ifdef MEASURE_WRITE_PWM
165+
Serial.println("executing aexp.etPwm(OA_PWM_CH_0, 500000, 250000)");
166+
static uint32_t period = 499999;
167+
aexp.setPwm(OA_PWM_CH_0, period, 250000);
168+
period++;
169+
#endif
170+
171+
digitalWrite(LED_USER,LOW);
172+
Serial.println("Measured " + String(v));
173+
}
174+
175+
176+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#include "OptaBlue.h"
2+
3+
#define OPTA_CONTROLLER_DETECT_PIN PG_8
4+
5+
#define EXPANSION_INDEX 0
6+
7+
//#define MEASURE_ADC_SINGLE
8+
//#define MEASURE_ADC_ALL_AT_ONCE
9+
#define MEASURE_ALL_DIGITAL_INPUT
10+
//#define MEASURE_ALL_DIGITAL_INPUT_AT_ONCE
11+
12+
DigitalExpansion dexp;
13+
14+
void setup() {
15+
Serial.begin(115200);
16+
while(!Serial) {
17+
18+
}
19+
Serial.println("TEST SETUP for measuring I2C timing on DIGITAL");
20+
OptaController.begin();
21+
22+
pinMode(OPTA_CONTROLLER_DETECT_PIN, INPUT_PULLUP);
23+
pinMode(LED_USER, OUTPUT);
24+
25+
dexp = OptaController.getExpansion(EXPANSION_INDEX);
26+
if(!dexp) {
27+
while(1) {
28+
Serial.println("Digital expansion not found");
29+
delay(1000);
30+
}
31+
}
32+
33+
}
34+
35+
void loop() {
36+
OptaController.update();
37+
static int counter = 0;
38+
static int measure = 0;
39+
digitalWrite(LED_USER,LOW);
40+
if(digitalRead(BTN_USER) == LOW) {
41+
counter++;
42+
if(counter > 10000) {
43+
measure++;
44+
}
45+
}
46+
else {
47+
counter=0;
48+
measure = 0;
49+
}
50+
if(measure == 1) {
51+
digitalWrite(LED_USER,HIGH);
52+
float v = 0;
53+
54+
#ifdef MEASURE_ADC_SINGLE
55+
Serial.println("executing dexp.analogRead(0, true);");
56+
v = dexp.analogRead(0, true);
57+
#endif
58+
59+
#ifdef MEASURE_ADC_ALL_AT_ONCE
60+
Serial.println("executing aexp.updateAnalogInputs();");
61+
dexp.updateAnalogInputs();
62+
v = dexp.analogRead(0, false);
63+
#endif
64+
65+
#ifdef MEASURE_ALL_DIGITAL_INPUT
66+
Serial.println("executing dexp.digitalRead(0, true);");
67+
v = dexp.digitalRead(0, true);
68+
#endif
69+
70+
#ifdef MEASURE_ALL_DIGITAL_INPUT_AT_ONCE
71+
Serial.println("executing dexp.updateDigitalInputs();");
72+
dexp.updateDigitalInputs();
73+
v = dexp.digitalRead(0, false);
74+
#endif
75+
76+
digitalWrite(LED_USER,LOW);
77+
Serial.println("Measured " + String(v));
78+
}
79+
80+
}

0 commit comments

Comments
 (0)