From ca6a4353cfe9c36350bd9c3b6abe96eaa5d38e89 Mon Sep 17 00:00:00 2001 From: jaseg Date: Tue, 24 Apr 2018 10:07:25 +0200 Subject: More pretty graphs, and initial correction calculation --- firmware/Run_analysis.ipynb | 274 +++++++++++++++++++++++++++++++++++--------- firmware/main.c | 30 ++--- firmware/offset_test.py | 51 ++++++--- firmware/olsndot.py | 4 +- firmware/results.sqlite3 | Bin 45056 -> 86016 bytes 5 files changed, 273 insertions(+), 86 deletions(-) (limited to 'firmware') diff --git a/firmware/Run_analysis.ipynb b/firmware/Run_analysis.ipynb index 3c4be49..b900f71 100644 --- a/firmware/Run_analysis.ipynb +++ b/firmware/Run_analysis.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 193, + "execution_count": 44, "metadata": { "collapsed": true }, @@ -13,13 +13,15 @@ "import numpy as np\n", "import numpy.polynomial.polynomial as poly\n", "\n", + "import statistics\n", + "import warnings\n", "import itertools\n", "import sqlite3" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": { "collapsed": true }, @@ -30,88 +32,198 @@ }, { "cell_type": "code", - "execution_count": 222, + "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [], "source": [ - "def fetch_run(name_or_id):\n", - " if type(name_or_id) is str:\n", - " runs = db.execute('SELECT run_id FROM runs WHERE name LIKE ?', (run_name,)).fetchall()\n", - " if len(runs) > 1:\n", - " raise ValueError('Ambiguous run name {} matches run ids {}'.format(run_name, runs))\n", - " \n", - " ((run_id,),), run_name = runs, name_or_id\n", - " else:\n", - " run_id, (run_name,) = name_or_id, db.execute('SELECT name FROM runs WHERE run_id == ?', (name_or_id,)).fetchone()\n", - " \n", - " data = db.execute('''\n", - " SELECT channel, duty_cycle, voltage, voltage_stdev FROM measurements\n", - " WHERE run_id == ?\n", - " ORDER BY channel ASC, duty_cycle ASC;\n", - " ''', (run_id,)).fetchall()\n", + "def fetch_run(names_or_ids):\n", + " run_info, grouped, cals = [], {}, {}\n", + " for name_or_id in names_or_ids:\n", + " if type(name_or_id) is str:\n", + " runs = db.execute('SELECT run_id FROM runs WHERE name LIKE ?', (run_name,)).fetchall()\n", + " if len(runs) > 1:\n", + " raise ValueError('Ambiguous run name {} matches run ids {}'.format(run_name, runs))\n", + "\n", + " ((run_id,),), run_name = runs, name_or_id\n", + " else:\n", + " run_id, (run_name,) = name_or_id, db.execute('SELECT name FROM runs WHERE run_id == ?', (name_or_id,)).fetchone()\n", + " run_info.append((run_id, run_name))\n", " \n", - " _ch, cal_duty, *cal = data[0]\n", - " assert cal_duty == 0\n", - " grouped = {ch: [(duty, volt, stdev) for _ch, duty, volt, stdev in data]\n", - " for ch, data in itertools.groupby(data, lambda elem: elem[0]) if ch != -1}\n", - " return (run_id, run_name), grouped, cal" + " data = db.execute('''\n", + " SELECT channel, duty_cycle, voltage, voltage_stdev FROM measurements\n", + " WHERE run_id == ?\n", + " ORDER BY channel ASC, duty_cycle ASC;\n", + " ''', (run_id,)).fetchall()\n", + " _ch, cal_duty, *cal = data[0]\n", + " assert cal_duty == 0\n", + " cals[run_id] = cal\n", + " for ch, data in itertools.groupby(data, lambda elem: elem[0]):\n", + " if ch == -1: # skip cal data\n", + " continue\n", + " if ch in grouped:\n", + " warnings.warn('Duplicate data: Channel {} found in more than one run!'.format(ch))\n", + " grouped[ch] = [(duty, volt, stdev) for _ch, duty, volt, stdev in data]\n", + " return run_info, grouped, next(iter(cals.values())) # for now just use some random cal value" ] }, { "cell_type": "code", - "execution_count": 243, + "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [], "source": [ - "def plot_run(name_or_id):\n", - " (run_id, run_name), data, cal = fetch_run(name_or_id)\n", + "def plot_run(figtitle, *names_or_ids, combine_plots=False):\n", + " run_info, data, cal = fetch_run(names_or_ids)\n", " \n", - " fig, ax = plt.subplots(figsize=(12,8))\n", - " ax.set_title('Run {} id {}'.format(run_name, run_id))\n", - " ax.set_xscale('log')\n", - " ax.set_yscale('log')\n", + " if combine_plots:\n", + " rows, cols = 1, 1\n", + " else:\n", + " rows = (len(data)+1)//2\n", + " cols = 2 if len(data) > 1 else 1\n", + " fig, axs = plt.subplots(rows, cols, figsize=(16,5*max(2, rows)), squeeze=False)\n", + " fig.suptitle(figtitle)\n", + " if combine_plots:\n", + " axs = np.array([axs[0,0]] * len(names_or_ids))\n", "\n", - " min_x = 1e9\n", - " max_y = 0\n", " cal_volt, cal_stdev = cal\n", - " for ch in data:\n", + " offsets = []\n", + " for ch, ax in zip(data, axs.flat):\n", " ch_data = data[ch]\n", " duty, volt, stdev = zip(*ch_data)\n", - " vref = volt[0] - cal_volt\n", - " volt = (np.array(volt) - cal_volt) / vref\n", - " stdev = np.array(stdev) / vref\n", - " max_y = max(max(volt), max_y)\n", - " min_x = min(min(duty), min_x)\n", - " ax.errorbar(duty, volt, yerr=stdev)\n", - " \n", - " # reuse latest duty cycles here\n", - " ax.set_xticks(duty)\n", - " ax.set_xticklabels([str(i) for i in range(len(duty))])\n", - " ax.set_xlabel('bit index')\n", - " ax.set_yticks([2**i for i in range(len(duty))])\n", - " ax.set_yticklabels([str(2**i) for i in range(len(duty))])\n", + " \n", + " duty = np.array(duty) / duty[0]\n", + " volt = np.array(volt) - cal_volt\n", + " vref = volt[0]\n", + " stdev = np.array(stdev)\n", + " \n", + " max_y = max(volt)/vref\n", + " min_x, max_x = min(duty), max(duty)\n", + " \n", + " offx, slope = fit_coefs = poly.polyfit(duty, volt, 1)\n", + " fit_func = poly.polyval(duty, fit_coefs)\n", + " ax.errorbar(duty, volt/vref, yerr=stdev/vref)\n", + " ax.plot(duty, fit_func/vref)\n", + " \n", + " ax.set_xscale('log')\n", + " ax.set_yscale('log')\n", + " bit_offx = offx/slope\n", + " offsets.append(bit_offx)\n", + " print('Channel {} offset: {:6.3f}lsb'.format(ch, bit_offx))\n", + " ax.set_title('Channel {}, offset={:.3f}lsb'.format(ch, bit_offx))\n", " \n", - " ax.set_xlim([min_x*0.9, 1.1])\n", - " ax.set_ylim([0, max_y*1.1])" + " # reuse latest duty cycles here\n", + " ax.set_xticks(duty)\n", + " ax.set_xticklabels([str(i) for i in range(len(duty))])\n", + " ax.set_xlabel('bit index')\n", + " ax.set_yticks([2**i for i in range(len(duty))])\n", + " ax.set_yticklabels([str(2**i) for i in range(len(duty))])\n", + "\n", + " ax.set_xlim([min_x*0.9, max_x*1.1])\n", + " ax.set_ylim([0, max_y*1.1])\n", + " print('Offset statistics: mean={:.4f}lsb, stdev={:.4f}lsb'.format(\n", + " statistics.mean(offsets), statistics.stdev(offsets)))" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def fetch_runs(*names):\n", + " return [run_id for name in names for run_id, in db.execute('''\n", + " SELECT DISTINCT runs.run_id\n", + " FROM runs JOIN measurements USING (run_id)\n", + " WHERE name LIKE ? AND channel != -1\n", + " ''', (name,)).fetchall() ]" ] }, { "cell_type": "code", - "execution_count": 245, + "execution_count": 67, "metadata": { "collapsed": false, "scrolled": false }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Channel 28 offset: 2.643lsb\n", + "Channel 29 offset: 2.616lsb\n", + "Channel 30 offset: 2.633lsb\n", + "Channel 31 offset: 2.681lsb\n", + "Offset statistics: mean=2.6432lsb, stdev=0.0276lsb\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_run('All channels, blue runs', *fetch_runs('green1', 'green2', 'green3', 'green4'))" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nhu/n2CypUZsyJQoQDR8e23TOOy/GfveAzp/qxuYaLc2tDQ52kvLy3/9Gu5W99oIll4wquFtuCX//\ne83u//lnWGSR2o1R866xJaIppd5ABbAMMBrolmXZLVVt1C4jVj3dlGXZBfPwno7Nkhqdc86JYoT7\n7RftWI47LvqEDxsGyy2Xd3TlzURUkqZz0UXw/vvxxHP77WHChHjyucQSeUemYjS2RLQ2pJSybt26\nWaRIUqPx5Zew2mpRCb9793hI/e9/w0472RO0GFOLFnXv3t1EVJIgluMedxw88QRssglssAFsthnc\neGPekalYJqLFc2yW1Jh88AF06QIbbhgzoUssEbOj++/vUtxScUZUkoBbb429Hn37RgECgIEDYaWV\n4kvlzUS0eI7NkhqD77+HkSPhlFNg883hrLOiJ+hyy8HTT+cdXcNiIiqp0cuyGGQuuiiW46rhMREt\nnmOzpMbg2GPh+uth2WXh44+heXN44IFYorvhhnlH17BUNza78llSg9a7N0yaFH3AfvoJtt0274gk\nSVJdm1r59osvoFcvePTR2APavHmc3223fONrjExEJTUIU6ZAk5k6I0+eDKefHlVuV1wRjjhi1msk\nSVLDdtNNUCjA8cfDzjvDaadN6yWu/PgrmaSy98svMeM5fPiMx594IhLQQiGeeB54YA7BSWWmsrKS\nQqGQdxiSVGM//TTnc7/+GtVwH3wQjjoqXp9ySt3F1lgVCgUqKyurvcY9opLK3p13Ru+vO++Ev/1t\n2vFdd4XOneGgg/KLTXXHPaLFc2yWVG6efhoOOABGjZr13NixUSn/66/jgfU998Cnn8JCC9V9nI2V\nxYokNWhbbhlLbjfcEK68Mo7dfTccfTR8/jksski+8alumIgWz7FZUjnJMth0U3jjDfjmG1hmmRnP\nH3RQ9Aq/5prYrvPJJ3G96o7FiiQ1WO+8E083+/SBf/wjjp12WlS/e/xxk1BJkhqir76Crl2jANEm\nm0RP0LZt49zf/w7jxsFDD0VV3CWXjOMzJ6rKl3tEJZWt116LpbcnnRRPON9/H0aMgJ494eWXfeop\nSVJDdeSRsPji8Oyz0Lp1JKIw7eH0iBFxzVJL5Run5swZUUllafhw2GknuO462GOPOLbuurEX5C9/\n8amnJEkNzU8/wRZbRA2IgQPho4+iGOFaa8GwYTELesopcPjhcP75sXRX9ZczopLK0g03wP77T0tC\n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\nc2cixYPLAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def bitslide(nbits, offx_lsb):\n", + " return [ sum((2**n + offx_lsb) if i&(2**n) else 0 for n in range(nbits)) for i in range(2**nbits) ]\n", + "\n", + "def plot_bitslide(data):\n", + " fig, (axl, axr) = plt.subplots(1, 2, figsize=(16, 6))\n", + " axl.plot(data)\n", + " axr.plot(data)\n", + " axr.set_yscale('log')\n", + " axr.set_xscale('log')\n", + " axl.set_xlim((0, len(data)))\n", + " axr.set_xlim((0, len(data)))\n", + "\n", + "plot_bitslide(bitslide(8, 2.5))" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\nAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -119,7 +231,65 @@ } ], "source": [ - "plot_run(37)" + "def cutoff_reference(nbits, offx_lsb, cutoff):\n", + " return [ sum((2**n + offx_lsb) if i&(2**n) else 0 for n in range(cutoff, nbits))\n", + " for i in range(2**nbits) ]\n", + "\n", + "plot_bitslide(cutoff_reference(8, 2.5, 3))" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def improved_bitslide1(nbits, offx_lsb, cutoff):\n", + " bs = sorted(bitslide(cutoff, offx_lsb))\n", + " return [ sum((2**n + offx_lsb) if i&(2**n) else 0 for n in range(cutoff, nbits))\n", + " + bs[i%(2**cutoff)] for i in range(2**nbits) ]\n", + "\n", + "plot_bitslide(improved_bitslide1(8, 2.5, 5))" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def improved_bitslide2(nbits, offx_lsb, cutoff):\n", + " bs = lambda x: min(bitslide(cutoff, offx_lsb), key=lambda y: abs(x-y))\n", + " return [ sum((2**n + offx_lsb) if i&(2**n) else 0 for n in range(cutoff, nbits))\n", + " + bs(i%(2**cutoff)) for i in range(2**nbits) ]\n", + "\n", + "plot_bitslide(improved_bitslide2(8, 2.5, 5))" ] } ], diff --git a/firmware/main.c b/firmware/main.c index ec1e576..7b9a627 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -77,20 +77,20 @@ uint32_t sys_time_seconds = 0; */ static uint16_t timer_period_lookup[NBITS] = { /* LSB here */ - A - C + (B<< 0), - A - C + (B<< 1), - A - C + (B<< 2), - A - C + (B<< 3), - A - C + (B<< 4), - A - C + (B<< 5), - A - C + (B<< 6), - A - C + (B<< 7), - A - C + (B<< 8), - A - C + (B<< 9), - A - C + (B<<10), - A - C + (B<<11), - A - C + (B<<12), - A - C + (B<<13), + A + (B<< 0) - C, + A + (B<< 1) - C, + A + (B<< 2) - C, + A + (B<< 3) - C, + A + (B<< 4) - C, + A + (B<< 5) - C, + A + (B<< 6) - C, + A + (B<< 7) - C, + A + (B<< 8) - C, + A + (B<< 9) - C, + A + (B<<10) - C, + A + (B<<11) - C, + A + (B<<12) - C, + A + (B<<13) - C, /* MSB here */ }; @@ -182,7 +182,7 @@ int main(void) { /* Configure TIM1 for display strobe generation */ TIM1->CR1 = TIM_CR1_ARPE; - TIM1->PSC = 1; /* Prescale by 2, resulting in a 16MHz timer frequency and 62.5ns timer step size. */ + TIM1->PSC = 1; /* Prescale by 2, resulting in a 15MHz timer frequency and 66.7ns timer step size. */ /* CH2 - clear/!MR, CH3 - strobe/STCP */ TIM1->CCMR2 = (6<CCER |= TIM_CCER_CC3E | TIM_CCER_CC3NE | TIM_CCER_CC3P | TIM_CCER_CC3NP | TIM_CCER_CC4E; diff --git a/firmware/offset_test.py b/firmware/offset_test.py index fca565b..63fd6ba 100644 --- a/firmware/offset_test.py +++ b/firmware/offset_test.py @@ -11,25 +11,17 @@ if __name__ == '__main__': import argparse parser = argparse.ArgumentParser() - parser.add_argument('channels', type=str, help='olsndot channels to test, format: 0-3,5,7,8-10') - parser.add_argument('run_name', nargs='?', default=None) + parser.add_argument('run_name', nargs='?', default='auto') parser.add_argument('olsndot_port', nargs='?', default='/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0') parser.add_argument('buspirate_port', nargs='?', default='/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AD01W1RF-if00-port0') + parser.add_argument('-c', '--channels', nargs='?', default='auto', help='olsndot channels to test, format: 0-3,5,7,8-10') parser.add_argument('-d', '--database', default='results.sqlite3', help='sqlite3 database file to store results in') parser.add_argument('-m', '--mac', type=int, default=0xDEBE10BB, help='olsndot MAC address') parser.add_argument('-w', '--wait', type=float, default=0.1, help='time to wait between samples in seconds') parser.add_argument('-o', '--oversample', type=int, default=16, help='oversampling ratio') + parser.add_argument('-b', '--bits', type=int, default=None, help='number of bits to sample') args = parser.parse_args() - def parse_channels(channels): - for spec in channels.split(','): - if str.isnumeric(spec): - yield int(spec) - else: - low, high = spec.split('-') - yield from range(int(low), int(high)+1) - channels = list(parse_channels(args.channels)) - db = sqlite3.connect(args.database) db.execute(""" CREATE TABLE IF NOT EXISTS runs ( @@ -55,18 +47,43 @@ if __name__ == '__main__': uut = Olsndot(args.mac) d = Driver(args.olsndot_port, devices=[uut]) - uut.send_framebuf([0]*uut.nchannels) print('Connected to uut:', uut) run_name = args.run_name - if args.run_name is None: - names = [ n[4:] for n, in db.execute('SELECT name FROM runs WHERE name LIKE "test%"').fetchall() ] - run_name = 'test{}'.format(1+max(int(n) if str.isnumeric(n) else 0 for n in names)) + if not str.isnumeric(args.run_name[-1]): + names = [ n[len(run_name):] for n, in db.execute( + 'SELECT name FROM runs WHERE name LIKE ?||"%"', (run_name,)).fetchall() ] + names.append('0') # in case we get no results + run_name += str(1+max(int(n) if str.isnumeric(n) else 0 for n in names)) with db: cur = db.cursor() cur.execute('INSERT INTO runs(name, uut_mac, timestamp) VALUES (?, ?, ?)', (run_name, args.mac, time.time())) run_id = cur.lastrowid + + nbits = args.bits if args.bits is not None else uut.nbits + + def parse_channels(channels): + for spec in channels.split(','): + if str.isnumeric(spec): + yield int(spec) + else: + low, high = spec.split('-') + yield from range(int(low), int(high)+1) + if args.channels == 'auto': + for i in range(uut.nchannels): + fb = [0]*uut.nchannels + fb[i] = 0xffff; + uut.send_framebuf(fb) + time.sleep(0.2) + if bp.adc_value > 0.5: + break; + else: + raise ValueError('Cannot find active channel') + channels = [i] + else: + channels = list(parse_channels(args.channels)) + print('Starting run {} "{}" at {:%y-%m-%d %H:%M:%S:%f}'.format(run_id, run_name, datetime.now())) print('mac={:08x} channels={}'.format(args.mac, ','.join('{:02d}'.format(ch) for ch in channels))) print('[measurement id] " " [hex setpoint value] "(" [float duty cycle] ")" " " [reading (V)]') @@ -84,7 +101,7 @@ if __name__ == '__main__': print('Zero cal: {:5.4f}V stdev={:5.4f}V'.format(mean, stdev)) for ch in channels: - for i in range(uut.nbits): + for i in range(nbits): fb = [0]*uut.nchannels val = 1<'.format( - self.addr, self.fw_ver, self.hw_ver, self.nchannels, self.channel_format, + return ''.format( + self.fw_ver, self.hw_ver, self.addr, self.nchannels, self.channel_format, st.uptime_s, st.vcc_mv/1000, st.temp_celsius) @property diff --git a/firmware/results.sqlite3 b/firmware/results.sqlite3 index 8b61d71..b7d9dd1 100644 Binary files a/firmware/results.sqlite3 and b/firmware/results.sqlite3 differ -- cgit