From: Jan Metzger Date: Fri, 14 Feb 2020 07:38:27 +0000 (+0100) Subject: zeroplus-logic-cube: Enable edge-triggering capabilities. X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=88daa0536cb4107ac4d8ddaacedd06fa39d55cc0;p=libsigrok.git zeroplus-logic-cube: Enable edge-triggering capabilities. This fixes bug #1334. --- diff --git a/src/hardware/zeroplus-logic-cube/analyzer.c b/src/hardware/zeroplus-logic-cube/analyzer.c index 321b17c0..2130692f 100644 --- a/src/hardware/zeroplus-logic-cube/analyzer.c +++ b/src/hardware/zeroplus-logic-cube/analyzer.c @@ -62,7 +62,7 @@ enum { TRIGGER_STATUS5, TRIGGER_STATUS6, TRIGGER_STATUS7, - TRIGGER_STATUS8, + TRIGGER_EDGE, TRIGGER_COUNT0 = 0x50, TRIGGER_COUNT1, @@ -108,7 +108,8 @@ enum { READ_RAM_STATUS = 0xa0, }; -static int g_trigger_status[9] = { 0 }; +static int g_trigger_status[8] = { 0 }; +static int g_trigger_edge = 0; static int g_trigger_count = 1; static int g_filter_status[8] = { 0 }; static int g_filter_enable = 0; @@ -461,8 +462,9 @@ SR_PRIV void analyzer_configure(libusb_device_handle *devh) gl_reg_write(devh, CLOCK_SOURCE, 0x03); /* Set_Trigger_Status */ - for (i = 0; i < 9; i++) + for (i = 0; i < 8; i++) gl_reg_write(devh, TRIGGER_STATUS0 + i, g_trigger_status[i]); + gl_reg_write(devh, TRIGGER_EDGE, g_trigger_edge); __analyzer_set_trigger_count(devh, g_trigger_count); @@ -519,6 +521,15 @@ SR_PRIV int analyzer_add_triggers(const struct sr_dev_inst *sdi) case SR_TRIGGER_ONE: g_trigger_status[channel / 4] |= 1 << (channel % 4 * 2); break; + case SR_TRIGGER_RISING: + g_trigger_edge = 0x40 | (channel & 0x1F); + break; + case SR_TRIGGER_FALLING: + g_trigger_edge = 0x80 | (channel & 0x1F); + break; + case SR_TRIGGER_EDGE: + g_trigger_edge = 0xc0 | (channel & 0x1F); + break; default: sr_err("Unsupported match %d", match->match); return SR_ERR; diff --git a/src/hardware/zeroplus-logic-cube/api.c b/src/hardware/zeroplus-logic-cube/api.c index 7a4041a1..36aef795 100644 --- a/src/hardware/zeroplus-logic-cube/api.c +++ b/src/hardware/zeroplus-logic-cube/api.c @@ -71,6 +71,9 @@ static const uint32_t devopts[] = { static const int32_t trigger_matches[] = { SR_TRIGGER_ZERO, SR_TRIGGER_ONE, + SR_TRIGGER_RISING, + SR_TRIGGER_FALLING, + SR_TRIGGER_EDGE, }; /*