Post Go back to editing

How to add timestamp into waveform buffer?

Category: Hardware
Product Number: AD-PQMON-SL

Hardware: AD-PQMON-SL

 

Goal:

 

Array Index

Channel

0

Millisecond Epoch Timestamp

1

current0

2

voltage0

3

current1

4

voltage1

5

current2

6

voltage2

7

current3

 

Problem Description:

  1. Millisecond Epoch Timestamp is needed before every waveform acquisition, so we can cross-reference check with power quality events.
  2. But I don’t know how to add a timestamp to the waveform buffer.

 

Troubleshooting steps that I have taken:

  1. Add new timestamp attributes in iio_pqm.c I think is not suitable because there are so many timestamps in every waveform, it’s difficult for logging
  2. I try to add adi_pqlib_GetTime() in pqlib_afe.c

diff --git a/projects/eval-pqmon/pqlib_dir/include/adi_pqlib.h b/projects/eval-pqmon/pqlib_dir/include/adi_pqlib.h
index aec99dac..573274a6 100644
--- a/projects/eval-pqmon/pqlib_dir/include/adi_pqlib.h
+++ b/projects/eval-pqmon/pqlib_dir/include/adi_pqlib.h
@@ -33,7 +33,7 @@ extern "C" {
  */
 
 /** Total number of waveform channels in AFE output */
-#define ADI_PQLIB_TOTAL_WAVEFORM_CHANNELS 7
+#define ADI_PQLIB_TOTAL_WAVEFORM_CHANNELS 8
 
 /** Size required for a waveform buffer for one channel. */
 #define ADI_PQLIB_WAVEFORM_BLOCK_SIZE 256
diff --git a/projects/eval-pqmon/src/common/pqlib_afe.c b/projects/eval-pqmon/src/common/pqlib_afe.c
index f7dee1b2..6b3758f4 100644
--- a/projects/eval-pqmon/src/common/pqlib_afe.c
+++ b/projects/eval-pqmon/src/common/pqlib_afe.c
@@ -236,9 +236,13 @@ int get_afe_input()
 	}
 
 	if ((status == 0) && (pOneCycle->STATUS0 & BITM_STATUS0_COH_PAGE_RDY)) {
+		
 		status = afe_read_waveform(
 				 (uint16_t *) & (pqlibExample.inputWaveform.waveform),
 				 ADI_PQLIB_WAVEFORM_BLOCK_SIZE * ADI_PQLIB_TOTAL_WAVEFORM_CHANNELS);
+
+		adi_pqlib_GetTime(pqlibExample.hDevice, &pqlibExample.inputWaveform.waveform[256]);
+
 		pWaveform->isDataProcessed = 0;
 		pWaveform->sequenceNumber++;
 		if (pqlibExample.no_os_cb_desc && !processData) {