Skip to content

Commit aa1cfd5

Browse files
committed
Update PlatformIO example
1 parent 5c48ce8 commit aa1cfd5

File tree

3 files changed

+110
-7
lines changed

3 files changed

+110
-7
lines changed

examples/pio/include/xcp_config.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
#define XCP_GET_ID_0 "BlueParrot XCP running on Arduino"
4444
#define XCP_GET_ID_1 "BlueParrot_XCP_on_Arduino"
4545

46-
#define XCP_ENABLE_GET_ID_EPK (XCP_ON)
46+
#define XCP_ENABLE_GET_ID_EPK (XCP_OFF)
4747

4848
// #define XCP_BUILD_TYPE XCP_RELEASE_BUILD
4949
#define XCP_BUILD_TYPE XCP_RELEASE_BUILD
@@ -209,8 +209,8 @@
209209
#define XCP_ON_ETHERNET_PORT (5555)
210210

211211
#define XCP_ON_ETHERNET_ARDUINO_DRIVER (XCP_ON_ETHERNET_DRIVER_WIFI)
212-
#define XCP_ON_ETHERNET_WIFI_SSID ("A1_CE8A")
213-
#define XCP_ON_ETHERNET_WIFI_PASSWORD ("6H54726A66")
212+
#define XCP_ON_ETHERNET_WIFI_SSID ""
213+
#define XCP_ON_ETHERNET_WIFI_PASSWORD ""
214214
#define XCP_ON_ETHERNET_MAC_ADDRESS { 0xBE, 0xEF, 0xCA, 0xAA, 0xFF, 0xFE }
215215

216216
#define XCP_MAX_CTO (64) // (16)

examples/pio/src/main.cpp

Lines changed: 104 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
#define BUILD_DATE __DATE__
66
#define BUILD_TIME __TIME__
77

8+
extern "C" {
89
#define XCP_MAKE_EPK(name) const char Xcp_EEPROM_Kennung[] = name " " BUILD_DATE " " BUILD_TIME
910

10-
XCP_MAKE_EPK("ArduinoXCP V1.1.0");
11+
XCP_MAKE_EPK("ArduinoXCP V1.1.0");
12+
}
1113

1214
// Measurements.
1315
volatile uint8_t dummy;
@@ -58,9 +60,110 @@ XCP_DAQ_DEFINE_MEASUREMENT_VARIABLE(dummy), XCP_DAQ_DEFINE_MEASUREMENT_VARIABLE(
5860

5961
__attribute__((section(".measurements"))) volatile float values[8];
6062

63+
unsigned long time_point;
64+
unsigned long elapsed_time;
65+
66+
enum WaveformType {
67+
SINE,
68+
TRIANGLE,
69+
SQUARE,
70+
SAWTOOTH
71+
};
72+
73+
inline float amplitiude_value(float base = 1.0F, float amplification = 0.0F) {
74+
return base * (pow(10.0F, amplification / 20.0F));
75+
}
76+
77+
class WaveformGenerator {
78+
private:
79+
80+
float phase = 0.0F;
81+
float phase_increment = 0.0F;
82+
float amplitude = 1.0F;
83+
WaveformType type = SINE;
84+
85+
public:
86+
87+
WaveformGenerator(WaveformType t, float freq, float sample_rate, float amp = 1.0F, float p = 0.0F) :
88+
type(t), phase_increment(freq / sample_rate), amplitude(amp), phase(p) {
89+
}
90+
91+
void setFrequency(float freq, float sample_rate) {
92+
phase_increment = freq / sample_rate;
93+
}
94+
95+
void setAmplitude(float amp) {
96+
amplitude = amp;
97+
}
98+
99+
void setWaveform(WaveformType t) {
100+
type = t;
101+
}
102+
103+
float nextSample() {
104+
phase += phase_increment;
105+
if (phase >= 1.0F)
106+
phase -= 1.0F;
107+
108+
float value = 0.0F;
109+
switch (type) {
110+
case SINE:
111+
value = ::sin(2.0F * PI * phase);
112+
break;
113+
case TRIANGLE:
114+
value = 2.0F * abs(2.0F * (phase - floor(phase + 0.5F))) - 1.0F;
115+
break;
116+
case SQUARE:
117+
value = (phase < 0.5F) ? 1.0F : -1.0F;
118+
break;
119+
case SAWTOOTH:
120+
value = 2.0F * (phase - 0.5F);
121+
break;
122+
}
123+
124+
return amplitude * value;
125+
}
126+
};
127+
128+
const uint32_t AMPLITUDE_SCALE = 32.0F;
129+
130+
auto wg1 = WaveformGenerator(SINE, 1.0f, 100.0f, amplitiude_value(AMPLITUDE_SCALE));
131+
auto wg2 = WaveformGenerator(SINE, 1.0f, 100.0f, amplitiude_value(AMPLITUDE_SCALE, -3.0F), 90.0);
132+
auto wg3 = WaveformGenerator(TRIANGLE, 0.5f, 100.0f, amplitiude_value(AMPLITUDE_SCALE, -6.0F));
133+
auto wg4 = WaveformGenerator(SAWTOOTH, 0.5f, 100.0f, amplitiude_value(AMPLITUDE_SCALE, -6.0F), -90.0);
134+
61135
void setup() {
136+
dummy = 0x55;
137+
voltage1 = 90.0f;
138+
voltage2 = 180.0f;
139+
voltage3 = 270.0f;
140+
voltage4 = 360.0f;
141+
142+
time_point = micros();
62143
Xcp_Init();
63144
}
64145

65146
void loop() {
147+
unsigned long start = 0;
148+
unsigned long stop = 0;
149+
150+
XcpTl_MainFunction();
151+
Xcp_MainFunction();
152+
153+
if ((micros() - time_point) >= 10 * 1000) {
154+
time_point = micros();
155+
start = micros();
156+
157+
voltage1 = wg1.nextSample();
158+
voltage2 = wg2.nextSample();
159+
voltage3 = wg3.nextSample();
160+
voltage4 = wg4.nextSample();
161+
162+
XcpDaq_TriggerEvent(0);
163+
dummy++;
164+
165+
stop = micros();
166+
elapsed_time = stop - start;
167+
time_point -= elapsed_time;
168+
}
66169
}

tools/arduino/hello_xcp/xcp_config.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@
7878
#define XCP_ON_ETHERNET_IP_OCTETS 192, 168, 137, 100
7979
#define XCP_ON_ETHERNET_PORT (5555)
8080

81-
#define XCP_ON_ETHERNET_ARDUINO_DRIVER (XCP_ON_ETHERNET_DRIVER_WIFI)
82-
#define XCP_ON_ETHERNET_WIFI_SSID "A1_CE8A"
83-
#define XCP_ON_ETHERNET_WIFI_PASSWORD "6H54726A66"
81+
#define XCP_ON_ETHERNET_ARDUINO_DRIVER (XCP_ON_ETHERNET_DRIVER_ETHERNET)
82+
#define XCP_ON_ETHERNET_WIFI_SSID ("")
83+
#define XCP_ON_ETHERNET_WIFI_PASSWORD ("")
8484
#define XCP_ON_ETHERNET_MAC_ADDRESS { 0xBE, 0xEF, 0xCA, 0xAA, 0xFF, 0xFE }
8585

8686
#define XCP_MAX_CTO (32) // (16)

0 commit comments

Comments
 (0)