Skip to content

Commit d84d0f5

Browse files
committed
Implemented all firmware features except the digital outputs.
1 parent 139ca8c commit d84d0f5

File tree

9 files changed

+1077
-196
lines changed

9 files changed

+1077
-196
lines changed

Firmware/AnalogInput/app.c

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,6 @@ void core_callback_reset_registers(void)
8686
/* Initialize registers */
8787
app_regs.REG_START = 0;
8888

89-
app_regs.REG_THRESHOLDS = 0;
90-
9189
app_regs.REG_RANGE_AND_INPUT_FILTER = GM_10V_1K5;
9290
app_regs.REG_SAMPLE_FREQUENCY = GM_1KHZ;
9391

@@ -120,6 +118,17 @@ void core_callback_registers_were_reinitialized(void)
120118
{
121119
/* Update registers if needed */
122120
app_write_REG_DO_WRITE(&app_regs.REG_DO_WRITE);
121+
122+
app_write_REG_RANGE_AND_INPUT_FILTER(&app_regs.REG_RANGE_AND_INPUT_FILTER);
123+
124+
// app_regs.REG_DO0_CH = GM_ANA3;
125+
// app_regs.REG_DO1_CH = GM_ANA1;
126+
app_regs.REG_DO2_CH = GM_ANA3;
127+
// app_regs.REG_DO3_CH = GM_ANA3;
128+
app_regs.REG_DO0_TH_VALUE = 5000;
129+
app_regs.REG_DO1_TH_VALUE = 5000;
130+
app_regs.REG_DO2_TH_VALUE = 5000;
131+
app_regs.REG_DO3_TH_VALUE = 5000;
123132
}
124133

125134
/************************************************************************/
@@ -140,7 +149,10 @@ void core_callback_visualen_to_off(void)
140149
/************************************************************************/
141150
/* Callbacks: Change on the operation mode */
142151
/************************************************************************/
143-
void core_callback_device_to_standby(void) {}
152+
void core_callback_device_to_standby(void)
153+
{
154+
app_regs.REG_START = 0;
155+
}
144156
void core_callback_device_to_active(void) {}
145157
void core_callback_device_to_enchanced_active(void) {}
146158
void core_callback_device_to_speed(void) {}
@@ -187,8 +199,15 @@ void core_callback_t_500us(void)
187199
{
188200
if (app_regs.REG_SAMPLE_FREQUENCY == GM_2KHZ)
189201
{
190-
core_func_mark_user_timestamp();
202+
core_func_mark_user_timestamp();
191203
set_CONVST;
204+
switch (app_regs.REG_TRIGGER_DESTINY)
205+
{
206+
case GM_TRIG_TO_DO0: set_DO0; break;
207+
case GM_TRIG_TO_DO1: set_DO1; break;
208+
case GM_TRIG_TO_DO2: set_DO2; break;
209+
case GM_TRIG_TO_DO3: set_DO3; break;
210+
}
192211
}
193212
}
194213
}
@@ -215,6 +234,13 @@ void core_callback_t_1ms(void)
215234
{
216235
core_func_mark_user_timestamp();
217236
set_CONVST;
237+
switch (app_regs.REG_TRIGGER_DESTINY)
238+
{
239+
case GM_TRIG_TO_DO0: set_DO0; break;
240+
case GM_TRIG_TO_DO1: set_DO1; break;
241+
case GM_TRIG_TO_DO2: set_DO2; break;
242+
case GM_TRIG_TO_DO3: set_DO3; break;
243+
}
218244
}
219245
}
220246
}

Firmware/AnalogInput/app_funcs.c

Lines changed: 64 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "app_ios_and_regs.h"
33
#include "hwbp_core.h"
44

5+
extern uint16_t pulse_counter_ms;
56

67
/************************************************************************/
78
/* Create pointers to functions */
@@ -13,7 +14,7 @@ void (*app_func_rd_pointer[])(void) = {
1314
&app_read_REG_ANALOG_INPUTS,
1415
&app_read_REG_DI0,
1516
&app_read_REG_RESERVED0,
16-
&app_read_REG_THRESHOLDS,
17+
&app_read_REG_RESERVED00,
1718
&app_read_REG_RANGE_AND_INPUT_FILTER,
1819
&app_read_REG_SAMPLE_FREQUENCY,
1920
&app_read_REG_DI0_CONF,
@@ -75,7 +76,7 @@ bool (*app_func_wr_pointer[])(void*) = {
7576
&app_write_REG_ANALOG_INPUTS,
7677
&app_write_REG_DI0,
7778
&app_write_REG_RESERVED0,
78-
&app_write_REG_THRESHOLDS,
79+
&app_write_REG_RESERVED00,
7980
&app_write_REG_RANGE_AND_INPUT_FILTER,
8081
&app_write_REG_SAMPLE_FREQUENCY,
8182
&app_write_REG_DI0_CONF,
@@ -207,35 +208,42 @@ bool app_write_REG_RESERVED0(void *a)
207208

208209

209210
/************************************************************************/
210-
/* REG_THRESHOLDS */
211+
/* REG_RESERVED00 */
211212
/************************************************************************/
212-
void app_read_REG_THRESHOLDS(void)
213+
void app_read_REG_RESERVED00(void)
213214
{
214-
//app_regs.REG_THRESHOLDS = 0;
215+
//app_regs.REG_RESERVED00 = 0;
215216

216217
}
217218

218-
bool app_write_REG_THRESHOLDS(void *a)
219+
bool app_write_REG_RESERVED00(void *a)
219220
{
220221
uint8_t reg = *((uint8_t*)a);
221222

222-
app_regs.REG_THRESHOLDS = reg;
223+
app_regs.REG_RESERVED00 = reg;
223224
return true;
224225
}
225226

226227

227228
/************************************************************************/
228229
/* REG_RANGE_AND_INPUT_FILTER */
229230
/************************************************************************/
230-
void app_read_REG_RANGE_AND_INPUT_FILTER(void)
231-
{
232-
//app_regs.REG_RANGE_AND_INPUT_FILTER = 0;
233-
234-
}
235-
231+
void app_read_REG_RANGE_AND_INPUT_FILTER(void) {}
236232
bool app_write_REG_RANGE_AND_INPUT_FILTER(void *a)
237233
{
238234
uint8_t reg = *((uint8_t*)a);
235+
236+
if (reg & ~MSK_RANGE_AND_INPUT_FILTER)
237+
return false;
238+
239+
PORTD.OUTCLR = 0x1C;
240+
PORTD.OUTSET = (reg << 2) & 0x1C;
241+
242+
243+
if (reg & 0x10)
244+
set_RANGE;
245+
else
246+
clr_RANGE;
239247

240248
app_regs.REG_RANGE_AND_INPUT_FILTER = reg;
241249
return true;
@@ -245,15 +253,13 @@ bool app_write_REG_RANGE_AND_INPUT_FILTER(void *a)
245253
/************************************************************************/
246254
/* REG_SAMPLE_FREQUENCY */
247255
/************************************************************************/
248-
void app_read_REG_SAMPLE_FREQUENCY(void)
249-
{
250-
//app_regs.REG_SAMPLE_FREQUENCY = 0;
251-
252-
}
253-
256+
void app_read_REG_SAMPLE_FREQUENCY(void) {}
254257
bool app_write_REG_SAMPLE_FREQUENCY(void *a)
255258
{
256259
uint8_t reg = *((uint8_t*)a);
260+
261+
if (reg & ~MSK_SAMPLE_FREQUENCY)
262+
return false;
257263

258264
app_regs.REG_SAMPLE_FREQUENCY = reg;
259265
return true;
@@ -263,15 +269,13 @@ bool app_write_REG_SAMPLE_FREQUENCY(void *a)
263269
/************************************************************************/
264270
/* REG_DI0_CONF */
265271
/************************************************************************/
266-
void app_read_REG_DI0_CONF(void)
267-
{
268-
//app_regs.REG_DI0_CONF = 0;
269-
270-
}
271-
272+
void app_read_REG_DI0_CONF(void) {}
272273
bool app_write_REG_DI0_CONF(void *a)
273274
{
274275
uint8_t reg = *((uint8_t*)a);
276+
277+
if (reg & (~MSK_DI0_SEL))
278+
return false;
275279

276280
app_regs.REG_DI0_CONF = reg;
277281
return true;
@@ -317,16 +321,16 @@ bool app_write_REG_DO0_PULSE(void *a)
317321
/************************************************************************/
318322
/* REG_DO_SET */
319323
/************************************************************************/
320-
void app_read_REG_DO_SET(void)
321-
{
322-
//app_regs.REG_DO_SET = 0;
323-
324-
}
325-
324+
void app_read_REG_DO_SET(void) {}
326325
bool app_write_REG_DO_SET(void *a)
327326
{
328-
uint16_t reg = *((uint16_t*)a);
327+
uint8_t reg = *((uint8_t*)a);
328+
329+
//PORTA_OUTSET = reg & 0x0F;
330+
//if (reg & B_DO0)
331+
// pulse_counter_ms = app_regs.REG_DO0_PULSE + 1;
329332

333+
app_regs.REG_DO_WRITE = PORTA_OUT & 0x0F;
330334
app_regs.REG_DO_SET = reg;
331335
return true;
332336
}
@@ -335,16 +339,14 @@ bool app_write_REG_DO_SET(void *a)
335339
/************************************************************************/
336340
/* REG_DO_CLEAR */
337341
/************************************************************************/
338-
void app_read_REG_DO_CLEAR(void)
339-
{
340-
//app_regs.REG_DO_CLEAR = 0;
341-
342-
}
343-
342+
void app_read_REG_DO_CLEAR(void) {}
344343
bool app_write_REG_DO_CLEAR(void *a)
345344
{
346-
uint16_t reg = *((uint16_t*)a);
345+
uint8_t reg = *((uint8_t*)a);
346+
347+
//PORTA_OUTCLR = reg & 0x0F;
347348

349+
app_regs.REG_DO_WRITE = PORTA_OUT & 0x0F;
348350
app_regs.REG_DO_CLEAR = reg;
349351
return true;
350352
}
@@ -353,16 +355,18 @@ bool app_write_REG_DO_CLEAR(void *a)
353355
/************************************************************************/
354356
/* REG_DO_TOGGLE */
355357
/************************************************************************/
356-
void app_read_REG_DO_TOGGLE(void)
357-
{
358-
//app_regs.REG_DO_TOGGLE = 0;
359-
360-
}
361-
358+
void app_read_REG_DO_TOGGLE(void) {}
362359
bool app_write_REG_DO_TOGGLE(void *a)
363360
{
364-
uint16_t reg = *((uint16_t*)a);
365-
361+
uint8_t reg = *((uint8_t*)a);
362+
363+
//if (!read_DO0)
364+
// if (reg & B_DO0)
365+
// pulse_counter_ms = app_regs.REG_DO0_PULSE + 1;
366+
367+
//PORTA_OUTTGL = reg & 0x0F;
368+
369+
app_regs.REG_DO_WRITE = PORTA_OUT & 0x0F;
366370
app_regs.REG_DO_TOGGLE = reg;
367371
return true;
368372
}
@@ -371,17 +375,17 @@ bool app_write_REG_DO_TOGGLE(void *a)
371375
/************************************************************************/
372376
/* REG_DO_WRITE */
373377
/************************************************************************/
374-
void app_read_REG_DO_WRITE(void)
375-
{
376-
//app_regs.REG_DO_WRITE = 0;
377-
378-
}
379-
378+
void app_read_REG_DO_WRITE(void) {}
380379
bool app_write_REG_DO_WRITE(void *a)
381380
{
382-
uint16_t reg = *((uint16_t*)a);
381+
uint8_t reg = *((uint8_t*)a);
382+
383+
//PORTA_OUT = (PORTA_OUT & (~0x0F)) | (reg & 0x0F);
384+
385+
//if (reg & B_DO0)
386+
// pulse_counter_ms = app_regs.REG_DO0_PULSE + 1;
383387

384-
app_regs.REG_DO_WRITE = reg;
388+
app_regs.REG_DO_WRITE = PORTA_OUT & 0x0F;
385389
return true;
386390
}
387391

@@ -425,15 +429,13 @@ bool app_write_REG_RESERVED2(void *a)
425429
/************************************************************************/
426430
/* REG_TRIGGER_DESTINY */
427431
/************************************************************************/
428-
void app_read_REG_TRIGGER_DESTINY(void)
429-
{
430-
//app_regs.REG_TRIGGER_DESTINY = 0;
431-
432-
}
433-
432+
void app_read_REG_TRIGGER_DESTINY(void) {}
434433
bool app_write_REG_TRIGGER_DESTINY(void *a)
435434
{
436-
int16_t reg = *((int16_t*)a);
435+
uint8_t reg = *((uint8_t*)a);
436+
437+
if (reg & (~MSK_TRIG_TO_DO0))
438+
return false;
437439

438440
app_regs.REG_TRIGGER_DESTINY = reg;
439441
return true;

Firmware/AnalogInput/app_funcs.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ void app_read_REG_START(void);
2424
void app_read_REG_ANALOG_INPUTS(void);
2525
void app_read_REG_DI0(void);
2626
void app_read_REG_RESERVED0(void);
27-
void app_read_REG_THRESHOLDS(void);
27+
void app_read_REG_RESERVED00(void);
2828
void app_read_REG_RANGE_AND_INPUT_FILTER(void);
2929
void app_read_REG_SAMPLE_FREQUENCY(void);
3030
void app_read_REG_DI0_CONF(void);
@@ -84,7 +84,7 @@ bool app_write_REG_START(void *a);
8484
bool app_write_REG_ANALOG_INPUTS(void *a);
8585
bool app_write_REG_DI0(void *a);
8686
bool app_write_REG_RESERVED0(void *a);
87-
bool app_write_REG_THRESHOLDS(void *a);
87+
bool app_write_REG_RESERVED00(void *a);
8888
bool app_write_REG_RANGE_AND_INPUT_FILTER(void *a);
8989
bool app_write_REG_SAMPLE_FREQUENCY(void *a);
9090
bool app_write_REG_DI0_CONF(void *a);

0 commit comments

Comments
 (0)