Problem with comparison.
/Modules/Sensors/IMU01A/SW/Python/.ipynb_checkpoints/IMU_test-checkpoint.ipynb |
---|
0,0 → 1,572 |
{ |
"metadata": { |
"name": "" |
}, |
"nbformat": 3, |
"nbformat_minor": 0, |
"worksheets": [ |
{ |
"cells": [ |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Uk\u00e1zka pou\u017eit\u00ed n\u00e1stroje IPython na manipulaci se senzorov\u00fdmi daty modulu IMU01A\n", |
"=======\n", |
"\n", |
"P\u0159\u00edklad vyu\u017e\u00edv\u00e1 modulovou stavebnici MLAB a jej\u00ed knihovnu [pymlab](https://github.com/MLAB-project/MLAB-I2c-modules).\n", |
"Sn\u00edma\u010d je k po\u010d\u00edta\u010di p\u0159ipojen\u00fd p\u0159es rozhradn\u00ed USB a data jsou vy\u010d\u00edt\u00e1na p\u0159es [I\u00b2C](http://wiki.mlab.cz/doku.php?id=cs:i2c)\n", |
"\n", |
"Pou\u017eit\u00fd akcelerometr [MMA8451Q](http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA8451Q) m\u00e1 n\u00e1sleduj\u00edc\u00ed katalogov\u00e9 parametry: \n", |
"\n", |
"* \u00b12g/\u00b14g/\u00b18g dynamically selectable full-scale\n", |
"* Output data rates (ODR) from 1.56 Hz to 800 Hz\n", |
"* 99 \u03bcg/\u221aHz noise\n", |
"\n", |
"Zprovozn\u011bn\u00ed demo k\u00f3du\n", |
"---------------------\n", |
"\n", |
"Nejd\u0159\u00edve zjist\u00edme zda m\u00e1me p\u0159\u00edstup pro z\u00e1pis a \u010dten\u00ed do syst\u00e9mov\u00e9ho za\u0159\u00edzen\u00ed. A jak\u00e9 \u010d\u00edslo m\u00e1 I\u00b2C sb\u011brnice na kterou m\u00e1me p\u0159ipojen\u00e1 \u010didla. \n", |
"P\u0159\u00edpadn\u011b je mo\u017en\u00e9 tuto \u010d\u00e1st p\u0159esko\u010dit a vyu\u017e\u00edt p\u0159\u00edmo predem ulo\u017een\u00fd datov\u00fd set.\n" |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"!i2cdetect -l" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"i2c-0\ti2c \ti915 gmbus ssc \tI2C adapter\r\n", |
"i2c-1\ti2c \ti915 gmbus vga \tI2C adapter\r\n", |
"i2c-2\ti2c \ti915 gmbus panel \tI2C adapter\r\n", |
"i2c-3\ti2c \ti915 gmbus dpc \tI2C adapter\r\n", |
"i2c-4\ti2c \ti915 gmbus dpb \tI2C adapter\r\n", |
"i2c-5\ti2c \ti915 gmbus dpd \tI2C adapter\r\n", |
"i2c-6\ti2c \tDPDDC-B \tI2C adapter\r\n", |
"i2c-7\ti2c \ti2c-tiny-usb at bus 001 device 013\tI2C adapter\r\n" |
] |
} |
], |
"prompt_number": 2 |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Proto\u017ee pro p\u0159ipojen\u00ed \u010didel k po\u010d\u00edta\u010di pou\u017e\u00edv\u00e1me adapt\u00e9r i2c-tiny-usb. Vid\u00edme, \u017ee sb\u011brnice m\u00e1 aktu\u00e1ln\u011b ozna\u010den\u00ed nap\u0159\u00edklad i2c-8. \n", |
"\n", |
"V p\u0159\u00edpad\u011b, \u017ee v\u00fd\u0161e uveden\u00fd p\u0159\u00edklad vr\u00e1t\u00ed chybu, nebo pojmenov\u00e1n\u00ed \"unknown\" tak nem\u00e1me p\u0159\u00edstup k syst\u00e9mov\u00fdm rozhran\u00edm. Ten z\u00edsk\u00e1me vytvo\u0159en\u00edm souboru s n\u00e1sleduj\u00edc\u00edm obsahem ve slo\u017ece: /etc/udev/rules.d/i2c-devices.rules" |
] |
}, |
{ |
"cell_type": "raw", |
"metadata": {}, |
"source": [ |
"KERNEL==\"i2c-[0-9]*\", GROUP=\"i2c\"" |
] |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Toto ozna\u010den\u00ed budeme je\u0161t\u011b d\u00e1le pot\u0159ebovat, proto si jej ulo\u017e\u00edme da prom\u011bnn\u00e9. " |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"port = 7" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 2 |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Budeme pokra\u010dovat na\u010dten\u00edm pot\u0159ebn\u00fdch modul\u016f pro zach\u00e1zen\u00ed s I\u00b2C sn\u00edma\u010di." |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"import time\n", |
"import datetime\n", |
"import sys\n", |
"\n", |
"from pymlab import config\n", |
"import matplotlib.pyplot as plt\n", |
"import numpy as np" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": "*" |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Nyn\u00ed si nadefinujeme strukturu p\u0159ipojen\u00ed jednotliv\u00fdch \u010didel na I\u00b2C sb\u011brnici." |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"cfg = config.Config(\n", |
" i2c = {\n", |
" \"port\": port,\n", |
" },\n", |
" bus = [\n", |
" {\n", |
" \"type\": \"i2chub\",\n", |
" \"address\": 0x72,\n", |
" \n", |
" \"children\": [\n", |
" {\"name\": \"acc\", \"type\": \"imu01_acc\", \"sensitivity\": 4.0, \"channel\": 0, }, \n", |
" ],\n", |
" },\n", |
" ],\n", |
")" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 30 |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Tuto strukturu inicializujeme, aby jsme dos\u00e1hli definovan\u00e9 konfigurace \u010didel." |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"cfg.initialize()\n", |
"acc = cfg.get_device(\"acc\")\n", |
"time.sleep(0.5)" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stderr", |
"text": [ |
"WARNING:pymlab.sensors.iic:HID device does not exist, we will try SMBus directly...\n" |
] |
} |
], |
"prompt_number": "*" |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"\u010cten\u00ed dat z akcelerometru\n", |
"-------------------------\n", |
"\n", |
"Nyn\u00ed u\u017e m\u016f\u017eeme p\u0159\u00edmo komunikovat se za\u0159\u00edzen\u00edm pojmenovan\u00fdm jako acc." |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"import sys\n", |
"import time\n", |
"from IPython.display import clear_output\n", |
"\n", |
"MEASUREMENTS = 1000\n", |
"list_meas = []\n", |
"# acc.route() V p\u0159\u00edpad\u011b v\u00edce \u010didel je pot\u0159eba ke ka\u017ed\u00e9mu p\u0159ed jeho pou\u017eit\u00edm nechat vyroutovat cesutu na sb\u011brnici.\n", |
"\n", |
"for n in range(MEASUREMENTS):\n", |
" clear_output()\n", |
" (x, y, z) = acc.axes()\n", |
" list_meas.append([x, y, z])\n", |
" print (n, list_meas[n])\n", |
" sys.stdout.flush()" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"(999, [0.038024999999999996, -0.00975, 0.966225])\n" |
] |
} |
], |
"prompt_number": 7 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"np.savez(\"calibration_data_3Dset\", data=list_meas)" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 8 |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Kalibrace akcelerometru\n", |
"-----------------------\n", |
"\n", |
"Nam\u011b\u0159en\u00e1 data m\u016f\u017eeme tak\u00e9 z\u00edskat z p\u0159edem ulo\u017een\u00e9ho souboru. V n\u00e1sleduj\u00edc\u00edm bloku je otev\u0159en soubor s referen\u010dn\u00edmi daty, kter\u00fd se nach\u00e1z\u00ed v dokumenta\u010dn\u00ed slo\u017ece mudulu IMU01A. \n" |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"data = np.load('./calibration_data_set.npz')\n", |
"x=data['x']\n", |
"y=data['y']\n", |
"z=data['z']" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 1 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"from mpl_toolkits.mplot3d.axes3d import Axes3D\n", |
"#%pylab qt\n", |
"%pylab inline\n", |
"fig = plt.figure()\n", |
"ax = Axes3D(fig)\n", |
"p = ax.scatter(x, y, z)\n", |
"#pyplot.show()\n" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"Populating the interactive namespace from numpy and matplotlib\n" |
] |
}, |
{ |
"metadata": {}, |
"output_type": "display_data", |
"png": "iVBORw0KGgoAAAANSUhEUgAAAb4AAAEuCAYAAADx63eqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4FNX6gN+Z7SW9NzoovXdpghV7QeQq/Cx4RVGv1y6I\nBcGG2NCr2HtDxAICKggivYcaIJQkhJBCdpPtOzO/P+Kum0YSCIGQeZ/HJw+PuztndmfOO+ec73yf\noCiKgoqKioqKShNBPN0NUFFRUVFRaUhU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKio\nNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU\n8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amo\nqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKio\nNCm0p7sBKiqnElmWcbvd+Hw+dDodGo0GjUaDKIoIgoAgCKe7iSoqKg2MKj6VsxJZlvH7/UiShKIo\nyLKM1+tFUZRysguIUBWiikrTQRWfyllFqPAABEFAFMXgf6EEhBh4bSgBEWq12uB7VSGqqJwdqOJT\nafQoioKiKPh8PmRZBignKUVRqnxfdSILCNHn8+H1ejEajcHXi6KoClFFpZGjik+l0RIqPKfTiSAI\nGI3GKiVUFzEFRBaYFtVoNMHjBUaIXq+33OtVIaqoNB5U8ak0OgIC8vv9wRFegFMpmppGiNUJUavV\nBtcPVSGqqJx+VPGpNBoqCi8gkFMlkcCorzavO54QPR5PpddXJcSKa5AqKiqnBlV8Kmc8iqIgSRKS\nJFUrvJokVTGasyGoSoiBNlYnxIoRphqNRh0dqqjUM6r4VM5YAsLz+/1BcdV1hOfz+XC5XPj9/nIj\nq9M17Rg4VnVCDJxvxfdUXD9UhaiicuKo4lM546hKeHWdBgwIT5ZljEYjOp0OKBtpBfb0BdYHQ0UY\nupevIamrEBVFKRdQU3ENUUVFpXpU8amcMZyM8ARBQJKkcsIzmUzo9XoAvF5vuQjNwPEC63CB/yqu\nHwaiRk+XVGorxMD35ff70Wq1lbLUqEJUUfkHVXwqp52THeEF3u/z+fD7/UHh1XYfX1Ub2wOf6fF4\n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\n2LTpIE5nP2R5JCpVGjpdFnp9Lb76ajuNG/8bcDFv3mvUqBFLhw7tvH3p1asHX3zxFBUVw66nJczj\nqadG0LlzJzZs2IlWOw5RvJudO9fzyCPjWLt20S2H6JtMJl544VnvvorL5cJgMNwwbr82cZw8eZKH\nHhqD09kIScqkefMQJk+eh1qt9hYo9vHxqRJ9+NNVvCRJOJ0eq7lycqkkwso/tzNpJSYm3rB4AI8F\nFB2dTlbWMVQqIw7HRTp1qn2TK/zxqFGjBjVq1PjF/y8oKCA5OZlNm85w6lQOstwHUWyP212O251P\nWdlmBKE6JSUVGI17EcVQ0tLe5amnJrFy5QIA1q49SEDAw/j4RKPRfAo0oKysnPr1a5GTE8/48V2I\ni4tj1KiXyMsrplmzOvTp04FRo17Hz28iFosOSSrH5SrBaByGIDzI2rV7yc9fREJCNTZs+BCrteJ6\nPb4CjEaPvq0giMhyHXbt+o4DB5xoNI/gcl3j4MG3+Pe/J/9ulQoEQfiftQ4rcbtFaP8q+EcQ339C\npeKFy+VCq9V63WN/Bn4L8S1cuJSPPlqHQhGDy5WCQqGmrKwJGk0o+flfcN99ng+5c+cO15OJFyKK\nMmPH9iE+Pp6UlBS02nb06DGCjRu/Ax4iJeUlVKqp13PYNnD8+E4CAwOpWXMkhYXnUasfpKQkB7W6\nHSkpg1EqjUhSXxSKQNRqDVbrA3z//dEqxBcTE8OSJe+yfPk6ysvP06fPWDp27MDx48cxmwPx8xuK\nLEsoFCPIyNhITk7OdUWaX0dl/qQsy16FnJKSkirP81ZW5888Mx2r9RW02l6IooujRweyfv36X7U2\nf+4qrYQkSaxZs4ZTp1KpXj2C+++/7wYS/Okq/uc4ffocBw6k43bLJCZWp3Hjht7jFAoF3bu34cKF\nDCyWa4SH165Si/B/BT/88AP/+tdbWCxxmM2XcDrTkaT3UCrbAhVIUhlW60yMRhGNpg8KhWfBplIN\n5+TJBd7reMZOgSCIREc3Iy3tc+z2PpjN6fj4/EBcXHsmTvwASRqDj08dkpPXc+XKcsCIWm3C17cN\nNlsyxcW1iYjogq9vdXx8Yli//lHi4++iUaM+pKSswGiUSUpqRkrKhzidz2C3n0el2khqai18fKZi\nMHjqM+bmFrJr157bKup8u/gjrcM7dXX+3QSq4R9OfG63m4qKChwOByqVCoVCcVu11X5P3O5LeeHC\n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\nAElFTkSuQmCC\n", |
"text": [ |
"<matplotlib.figure.Figure at 0xb5c440c>" |
] |
} |
], |
"prompt_number": 4 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"import scipy\n", |
"from scipy import optimize\n", |
"import calibration_utils\n", |
"\n", |
"sensor_ref = 9.81\n", |
"sensor_res = 10\n", |
"noise_window = 20\n", |
"noise_threshold = 40" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 19 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"measurements = np.array(list_meas)" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 20 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"meas_median=scipy.median(scipy.array([scipy.linalg.norm(v) for v in measurements]))\n", |
"noise_threshold = meas_median * 0.1\n", |
"print noise_threshold\n", |
"flt_meas, flt_idx = calibration_utils.filter_meas(measurements, noise_window, noise_threshold)\n", |
"print(\"remaining \"+str(len(flt_meas))+\" after filtering\")" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"0.0973014827316\n", |
"remaining 703 after filtering" |
] |
}, |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"\n" |
] |
} |
], |
"prompt_number": 21 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
" p0 = calibration_utils.get_min_max_guess(flt_meas, sensor_ref)\n", |
" cp0, np0 = calibration_utils.scale_measurements(flt_meas, p0)\n", |
" print(\"initial guess : avg \"+str(np0.mean())+\" std \"+str(np0.std()))\n", |
"\n", |
" def err_func(p, meas, y):\n", |
" cp, np = calibration_utils.scale_measurements(meas, p)\n", |
" err = y*scipy.ones(len(meas)) - np\n", |
" return err" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"initial guess : avg 9.55977014083 std 0.17596103611\n" |
] |
} |
], |
"prompt_number": 22 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
" p1, cov, info, msg, success = optimize.leastsq(err_func, p0[:], args=(flt_meas, sensor_ref), full_output=1)\n", |
" if not success in [1, 2, 3, 4]:\n", |
" print(\"Optimization error: \", msg)\n", |
" print(\"Please try to provide a clean logfile.\")\n", |
" sys.exit(1)\n", |
"\n", |
" cp1, np1 = calibration_utils.scale_measurements(flt_meas, p1)\n", |
" print(\"optimized guess : avg \"+str(np1.mean())+\" std \"+str(np1.std()))" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"optimized guess : avg 9.80797237599 std 0.141020849641\n" |
] |
} |
], |
"prompt_number": 23 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"#%pylab qt\n", |
"%pylab inline\n", |
"calibration_utils.plot_results(True, measurements, flt_idx, flt_meas, cp0, np0, cp1, np1, sensor_ref)" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"Populating the interactive namespace from numpy and matplotlib\n" |
] |
}, |
{ |
"metadata": {}, |
"output_type": "display_data", |
"png": "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\nctAxpREAAAAASUVORK5CYII=\n", |
"text": [ |
"<matplotlib.figure.Figure at 0x7f7113c306d0>" |
] |
} |
], |
"prompt_number": 26 |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"\u010cten\u00ed dat z gyroskopu\n", |
"---------------------\n", |
"\n" |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"cfg = config.Config(\n", |
" i2c = {\n", |
" \"port\": port,\n", |
" },\n", |
"\n", |
"\tbus = [\n", |
"\t\t{\n", |
" \"type\": \"i2chub\",\n", |
" \"address\": 0x72,\n", |
" \n", |
" \"children\": [\n", |
" {\"name\": \"gyro\", \"type\": \"imu01_gyro\", \"channel\": 0, }\n", |
" ],\n", |
"\t\t},\n", |
"\t],\n", |
")\n", |
"\n", |
"cfg.initialize()\n", |
"#acc = cfg.get_device(\"acc\")\n", |
"gyro = cfg.get_device(\"gyro\")\n", |
"sys.stdout.write(\" MLAB accelerometer sensor IMU01A module example \\r\\n\")\n", |
"time.sleep(0.5)\n", |
"gyro.route()" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": "*" |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"import sys\n", |
"import time\n", |
"from IPython.display import clear_output\n", |
"\n", |
"MEASUREMENTS = 100\n", |
"list_meas = []\n", |
"# acc.route() V p\u0159\u00edpad\u011b v\u00edce \u010didel je pot\u0159eba ke ka\u017ed\u00e9mu p\u0159ed jeho pou\u017eit\u00edm nechat vyroutovat cesutu na sb\u011brnici.\n", |
"\n", |
"for n in range(MEASUREMENTS):\n", |
" clear_output()\n", |
" (x, y, z) = gyro.axes()\n", |
" list_meas.append([x, y, z])\n", |
" print (n, list_meas[n])\n", |
" sys.stdout.flush()" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": "*" |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"measurements = np.array(list_meas)\n", |
"\n", |
"%pylab qt\n", |
"plt.subplot(1, 1, 1)\n", |
"plt.plot(measurements[:, 0])\n", |
"plt.plot(measurements[:, 1])\n", |
"plt.plot(measurements[:, 2])\n", |
"plt.xlabel('sample number')\n", |
"plt.ylabel('ADC')\n", |
"plt.title('Raw sensors')" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"Populating the interactive namespace from numpy and matplotlib\n" |
] |
}, |
{ |
"metadata": {}, |
"output_type": "pyout", |
"prompt_number": 5, |
"text": [ |
"<matplotlib.text.Text at 0x7f67ec372650>" |
] |
} |
], |
"prompt_number": "*" |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"help(map)" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"Help on built-in function map in module __builtin__:\n", |
"\n", |
"map(...)\n", |
" map(function, sequence[, sequence, ...]) -> list\n", |
" \n", |
" Return a list of the results of applying the function to the items of\n", |
" the argument sequence(s). If more than one sequence is given, the\n", |
" function is called with an argument list consisting of the corresponding\n", |
" item of each sequence, substituting None for missing values when not all\n", |
" sequences have the same length. If the function is None, return a list of\n", |
" the items of the sequence (or a list of tuples if more than one sequence).\n", |
"\n" |
] |
} |
], |
"prompt_number": 10 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [], |
"language": "python", |
"metadata": {}, |
"outputs": [] |
} |
], |
"metadata": {} |
} |
] |
} |
/Modules/Sensors/IMU01A/SW/Python/IMU_test.ipynb |
---|
0,0 → 1,603 |
{ |
"metadata": { |
"name": "" |
}, |
"nbformat": 3, |
"nbformat_minor": 0, |
"worksheets": [ |
{ |
"cells": [ |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Uk\u00e1zka pou\u017eit\u00ed n\u00e1stroje IPython na manipulaci se senzorov\u00fdmi daty modulu IMU01A\n", |
"=======\n", |
"\n", |
"P\u0159\u00edklad vyu\u017e\u00edv\u00e1 modulovou stavebnici MLAB a jej\u00ed knihovnu [pymlab](https://github.com/MLAB-project/MLAB-I2c-modules).\n", |
"Sn\u00edma\u010d je k po\u010d\u00edta\u010di p\u0159ipojen\u00fd p\u0159es rozhradn\u00ed USB a data jsou vy\u010d\u00edt\u00e1na p\u0159es [I\u00b2C](http://wiki.mlab.cz/doku.php?id=cs:i2c)\n", |
"\n", |
"Pou\u017eit\u00fd akcelerometr [MMA8451Q](http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA8451Q) m\u00e1 n\u00e1sleduj\u00edc\u00ed katalogov\u00e9 parametry: \n", |
"\n", |
"* \u00b12g/\u00b14g/\u00b18g dynamically selectable full-scale\n", |
"* Output data rates (ODR) from 1.56 Hz to 800 Hz\n", |
"* 99 \u03bcg/\u221aHz noise\n", |
"\n", |
"Zprovozn\u011bn\u00ed demo k\u00f3du\n", |
"---------------------\n", |
"\n", |
"Nejd\u0159\u00edve zjist\u00edme zda m\u00e1me p\u0159\u00edstup pro z\u00e1pis a \u010dten\u00ed do syst\u00e9mov\u00e9ho za\u0159\u00edzen\u00ed. A jak\u00e9 \u010d\u00edslo m\u00e1 I\u00b2C sb\u011brnice na kterou m\u00e1me p\u0159ipojen\u00e1 \u010didla. \n", |
"P\u0159\u00edpadn\u011b je mo\u017en\u00e9 tuto \u010d\u00e1st p\u0159esko\u010dit a vyu\u017e\u00edt p\u0159\u00edmo predem ulo\u017een\u00fd datov\u00fd set.\n" |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"!i2cdetect -l" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"i2c-0\ti2c \ti915 gmbus ssc \tI2C adapter\r\n", |
"i2c-1\ti2c \ti915 gmbus vga \tI2C adapter\r\n", |
"i2c-2\ti2c \ti915 gmbus panel \tI2C adapter\r\n", |
"i2c-3\ti2c \ti915 gmbus dpc \tI2C adapter\r\n", |
"i2c-4\ti2c \ti915 gmbus dpb \tI2C adapter\r\n", |
"i2c-5\ti2c \ti915 gmbus dpd \tI2C adapter\r\n", |
"i2c-6\ti2c \tDPDDC-B \tI2C adapter\r\n", |
"i2c-7\ti2c \ti2c-tiny-usb at bus 001 device 025\tI2C adapter\r\n" |
] |
} |
], |
"prompt_number": 1 |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Proto\u017ee pro p\u0159ipojen\u00ed \u010didel k po\u010d\u00edta\u010di pou\u017e\u00edv\u00e1me adapt\u00e9r i2c-tiny-usb. Vid\u00edme, \u017ee sb\u011brnice m\u00e1 aktu\u00e1ln\u011b ozna\u010den\u00ed nap\u0159\u00edklad i2c-8. \n", |
"\n", |
"V p\u0159\u00edpad\u011b, \u017ee v\u00fd\u0161e uveden\u00fd p\u0159\u00edklad vr\u00e1t\u00ed chybu, nebo pojmenov\u00e1n\u00ed \"unknown\" tak nem\u00e1me p\u0159\u00edstup k syst\u00e9mov\u00fdm rozhran\u00edm. Ten z\u00edsk\u00e1me vytvo\u0159en\u00edm souboru s n\u00e1sleduj\u00edc\u00edm obsahem ve slo\u017ece: /etc/udev/rules.d/i2c-devices.rules" |
] |
}, |
{ |
"cell_type": "raw", |
"metadata": {}, |
"source": [ |
"KERNEL==\"i2c-[0-9]*\", GROUP=\"i2c\"" |
] |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Toto ozna\u010den\u00ed budeme je\u0161t\u011b d\u00e1le pot\u0159ebovat, proto si jej ulo\u017e\u00edme da prom\u011bnn\u00e9. " |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"port = 7" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 2 |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Budeme pokra\u010dovat na\u010dten\u00edm pot\u0159ebn\u00fdch modul\u016f pro zach\u00e1zen\u00ed s I\u00b2C sn\u00edma\u010di." |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"import time\n", |
"import datetime\n", |
"import sys\n", |
"\n", |
"from pymlab import config\n", |
"import matplotlib.pyplot as plt\n", |
"import numpy as np" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 3 |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Nyn\u00ed si nadefinujeme strukturu p\u0159ipojen\u00ed jednotliv\u00fdch \u010didel na I\u00b2C sb\u011brnici." |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"cfg = config.Config(\n", |
" i2c = {\n", |
" \"port\": port,\n", |
" },\n", |
" bus = [\n", |
" {\n", |
" \"type\": \"i2chub\",\n", |
" \"address\": 0x72,\n", |
" \n", |
" \"children\": [\n", |
" {\"name\": \"acc\", \"type\": \"imu01_acc\", \"sensitivity\": 4.0, \"channel\": 0, }, \n", |
" ],\n", |
" },\n", |
" ],\n", |
")" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 30 |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Tuto strukturu inicializujeme, aby jsme dos\u00e1hli definovan\u00e9 konfigurace \u010didel." |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"cfg.initialize()\n", |
"acc = cfg.get_device(\"acc\")\n", |
"time.sleep(0.5)" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stderr", |
"text": [ |
"WARNING:pymlab.sensors.iic:HID device does not exist, we will try SMBus directly...\n" |
] |
} |
], |
"prompt_number": "*" |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"\u010cten\u00ed dat z akcelerometru\n", |
"-------------------------\n", |
"\n", |
"Nyn\u00ed u\u017e m\u016f\u017eeme p\u0159\u00edmo komunikovat se za\u0159\u00edzen\u00edm pojmenovan\u00fdm jako acc." |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"import sys\n", |
"import time\n", |
"from IPython.display import clear_output\n", |
"\n", |
"MEASUREMENTS = 1000\n", |
"list_meas = []\n", |
"# acc.route() V p\u0159\u00edpad\u011b v\u00edce \u010didel je pot\u0159eba ke ka\u017ed\u00e9mu p\u0159ed jeho pou\u017eit\u00edm nechat vyroutovat cesutu na sb\u011brnici.\n", |
"\n", |
"for n in range(MEASUREMENTS):\n", |
" clear_output()\n", |
" (x, y, z) = acc.axes()\n", |
" list_meas.append([x, y, z])\n", |
" print (n, list_meas[n])\n", |
" sys.stdout.flush()" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"(999, [0.038024999999999996, -0.00975, 0.966225])\n" |
] |
} |
], |
"prompt_number": 7 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"np.savez(\"calibration_data_3Dset\", data=list_meas)" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 8 |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"Kalibrace akcelerometru\n", |
"-----------------------\n", |
"\n", |
"Nam\u011b\u0159en\u00e1 data m\u016f\u017eeme tak\u00e9 z\u00edskat z p\u0159edem ulo\u017een\u00e9ho souboru. V n\u00e1sleduj\u00edc\u00edm bloku je otev\u0159en soubor s referen\u010dn\u00edmi daty, kter\u00fd se nach\u00e1z\u00ed v dokumenta\u010dn\u00ed slo\u017ece mudulu IMU01A. \n" |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"data = np.load('./calibration_data_set.npz')\n", |
"x=data['x']\n", |
"y=data['y']\n", |
"z=data['z']" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 1 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"from mpl_toolkits.mplot3d.axes3d import Axes3D\n", |
"#%pylab qt\n", |
"%pylab inline\n", |
"fig = plt.figure()\n", |
"ax = Axes3D(fig)\n", |
"p = ax.scatter(x, y, z)\n", |
"#pyplot.show()\n" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"Populating the interactive namespace from numpy and matplotlib\n" |
] |
}, |
{ |
"metadata": {}, |
"output_type": "display_data", |
"png": "iVBORw0KGgoAAAANSUhEUgAAAb4AAAEuCAYAAADx63eqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4FNX6gN+Z7SW9NzoovXdpghV7QeQq/Cx4RVGv1y6I\nBcGG2NCr2HtDxAICKggivYcaIJQkhJBCdpPtOzO/P+Kum0YSCIGQeZ/HJw+PuztndmfOO+ec73yf\noCiKgoqKioqKShNBPN0NUFFRUVFRaUhU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKio\nNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU\n8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amo\nqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKioNClU8amoqKio\nNCm0p7sBKiqnElmWcbvd+Hw+dDodGo0GjUaDKIoIgoAgCKe7iSoqKg2MKj6VsxJZlvH7/UiShKIo\nyLKM1+tFUZRysguIUBWiikrTQRWfyllFqPAABEFAFMXgf6EEhBh4bSgBEWq12uB7VSGqqJwdqOJT\nafQoioKiKPh8PmRZBignKUVRqnxfdSILCNHn8+H1ejEajcHXi6KoClFFpZGjik+l0RIqPKfTiSAI\nGI3GKiVUFzEFRBaYFtVoNMHjBUaIXq+33OtVIaqoNB5U8ak0OgIC8vv9wRFegFMpmppGiNUJUavV\nBtcPVSGqqJx+VPGpNBoqCi8gkFMlkcCorzavO54QPR5PpddXJcSKa5AqKiqnBlV8Kmc8iqIgSRKS\nJFUrvJokVTGasyGoSoiBNlYnxIoRphqNRh0dqqjUM6r4VM5YAsLz+/1BcdV1hOfz+XC5XPj9/nIj\nq9M17Rg4VnVCDJxvxfdUXD9UhaiicuKo4lM546hKeHWdBgwIT5ZljEYjOp0OKBtpBfb0BdYHQ0UY\nupevIamrEBVFKRdQU3ENUUVFpXpU8amcMZyM8ARBQJKkcsIzmUzo9XoAvF5vuQjNwPEC63CB/yqu\nHwaiRk+XVGorxMD35ff70Wq1lbLUqEJUUfkHVXwqp52THeEF3u/z+fD7/UHh1XYfX1Ub2wOf6fF4\n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\n2LTpIE5nP2R5JCpVGjpdFnp9Lb76ajuNG/8bcDFv3mvUqBFLhw7tvH3p1asHX3zxFBUVw66nJczj\nqadG0LlzJzZs2IlWOw5RvJudO9fzyCPjWLt20S2H6JtMJl544VnvvorL5cJgMNwwbr82cZw8eZKH\nHhqD09kIScqkefMQJk+eh1qt9hYo9vHxqRJ9+NNVvCRJOJ0eq7lycqkkwso/tzNpJSYm3rB4AI8F\nFB2dTlbWMVQqIw7HRTp1qn2TK/zxqFGjBjVq1PjF/y8oKCA5OZlNm85w6lQOstwHUWyP212O251P\nWdlmBKE6JSUVGI17EcVQ0tLe5amnJrFy5QIA1q49SEDAw/j4RKPRfAo0oKysnPr1a5GTE8/48V2I\ni4tj1KiXyMsrplmzOvTp04FRo17Hz28iFosOSSrH5SrBaByGIDzI2rV7yc9fREJCNTZs+BCrteJ6\nPb4CjEaPvq0giMhyHXbt+o4DB5xoNI/gcl3j4MG3+Pe/J/9ulQoEQfiftQ4rcbtFaP8q+EcQ339C\npeKFy+VCq9V63WN/Bn4L8S1cuJSPPlqHQhGDy5WCQqGmrKwJGk0o+flfcN99ng+5c+cO15OJFyKK\nMmPH9iE+Pp6UlBS02nb06DGCjRu/Ax4iJeUlVKqp13PYNnD8+E4CAwOpWXMkhYXnUasfpKQkB7W6\nHSkpg1EqjUhSXxSKQNRqDVbrA3z//dEqxBcTE8OSJe+yfPk6ysvP06fPWDp27MDx48cxmwPx8xuK\nLEsoFCPIyNhITk7OdUWaX0dl/qQsy16FnJKSkirP81ZW5888Mx2r9RW02l6IooujRweyfv36X7U2\nf+4qrYQkSaxZs4ZTp1KpXj2C+++/7wYS/Okq/uc4ffocBw6k43bLJCZWp3Hjht7jFAoF3bu34cKF\nDCyWa4SH165Si/B/BT/88AP/+tdbWCxxmM2XcDrTkaT3UCrbAhVIUhlW60yMRhGNpg8KhWfBplIN\n5+TJBd7reMZOgSCIREc3Iy3tc+z2PpjN6fj4/EBcXHsmTvwASRqDj08dkpPXc+XKcsCIWm3C17cN\nNlsyxcW1iYjogq9vdXx8Yli//lHi4++iUaM+pKSswGiUSUpqRkrKhzidz2C3n0el2khqai18fKZi\nMHjqM+bmFrJr157bKup8u/gjrcM7dXX+3QSq4R9OfG63m4qKChwOByqVCoVCcVu11X5P3O5LeeHC\n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\nAElFTkSuQmCC\n", |
"text": [ |
"<matplotlib.figure.Figure at 0xb5c440c>" |
] |
} |
], |
"prompt_number": 4 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"import scipy\n", |
"from scipy import optimize\n", |
"import calibration_utils\n", |
"\n", |
"sensor_ref = 9.81\n", |
"sensor_res = 10\n", |
"noise_window = 20\n", |
"noise_threshold = 40" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 19 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"measurements = np.array(list_meas)" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [], |
"prompt_number": 20 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"meas_median=scipy.median(scipy.array([scipy.linalg.norm(v) for v in measurements]))\n", |
"noise_threshold = meas_median * 0.1\n", |
"print noise_threshold\n", |
"flt_meas, flt_idx = calibration_utils.filter_meas(measurements, noise_window, noise_threshold)\n", |
"print(\"remaining \"+str(len(flt_meas))+\" after filtering\")" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"0.0973014827316\n", |
"remaining 703 after filtering" |
] |
}, |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"\n" |
] |
} |
], |
"prompt_number": 21 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
" p0 = calibration_utils.get_min_max_guess(flt_meas, sensor_ref)\n", |
" cp0, np0 = calibration_utils.scale_measurements(flt_meas, p0)\n", |
" print(\"initial guess : avg \"+str(np0.mean())+\" std \"+str(np0.std()))\n", |
"\n", |
" def err_func(p, meas, y):\n", |
" cp, np = calibration_utils.scale_measurements(meas, p)\n", |
" err = y*scipy.ones(len(meas)) - np\n", |
" return err" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"initial guess : avg 9.55977014083 std 0.17596103611\n" |
] |
} |
], |
"prompt_number": 22 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
" p1, cov, info, msg, success = optimize.leastsq(err_func, p0[:], args=(flt_meas, sensor_ref), full_output=1)\n", |
" if not success in [1, 2, 3, 4]:\n", |
" print(\"Optimization error: \", msg)\n", |
" print(\"Please try to provide a clean logfile.\")\n", |
" sys.exit(1)\n", |
"\n", |
" cp1, np1 = calibration_utils.scale_measurements(flt_meas, p1)\n", |
" print(\"optimized guess : avg \"+str(np1.mean())+\" std \"+str(np1.std()))" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"optimized guess : avg 9.80797237599 std 0.141020849641\n" |
] |
} |
], |
"prompt_number": 23 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"#%pylab qt\n", |
"%pylab inline\n", |
"calibration_utils.plot_results(True, measurements, flt_idx, flt_meas, cp0, np0, cp1, np1, sensor_ref)" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"Populating the interactive namespace from numpy and matplotlib\n" |
] |
}, |
{ |
"metadata": {}, |
"output_type": "display_data", |
"png": "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\nctAxpREAAAAASUVORK5CYII=\n", |
"text": [ |
"<matplotlib.figure.Figure at 0x7f7113c306d0>" |
] |
} |
], |
"prompt_number": 26 |
}, |
{ |
"cell_type": "markdown", |
"metadata": {}, |
"source": [ |
"\u010cten\u00ed dat z gyroskopu\n", |
"---------------------\n", |
"\n" |
] |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"cfg = config.Config(\n", |
" i2c = {\n", |
" \"port\": port,\n", |
" },\n", |
"\n", |
"\tbus = [\n", |
"\t\t{\n", |
" \"type\": \"i2chub\",\n", |
" \"address\": 0x72,\n", |
" \n", |
" \"children\": [\n", |
" {\"name\": \"gyro\", \"type\": \"imu01_gyro\", \"channel\": 0, }\n", |
" ],\n", |
"\t\t},\n", |
"\t],\n", |
")\n", |
"\n", |
"cfg.initialize()\n", |
"#acc = cfg.get_device(\"acc\")\n", |
"gyro = cfg.get_device(\"gyro\")\n", |
"sys.stdout.write(\" MLAB accelerometer sensor IMU01A module example \\r\\n\")\n", |
"time.sleep(0.5)\n", |
"gyro.route()" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stderr", |
"text": [ |
"WARNING:pymlab.sensors.iic:HID device does not exist, we will try SMBus directly...\n" |
] |
}, |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
" MLAB accelerometer sensor IMU01A module example \r\n" |
] |
}, |
{ |
"metadata": {}, |
"output_type": "pyout", |
"prompt_number": 4, |
"text": [ |
"True" |
] |
} |
], |
"prompt_number": 4 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"import sys\n", |
"import time\n", |
"from IPython.display import clear_output\n", |
"\n", |
"MEASUREMENTS = 100\n", |
"list_meas = []\n", |
"# acc.route() V p\u0159\u00edpad\u011b v\u00edce \u010didel je pot\u0159eba ke ka\u017ed\u00e9mu p\u0159ed jeho pou\u017eit\u00edm nechat vyroutovat cesutu na sb\u011brnici.\n", |
"\n", |
"for n in range(MEASUREMENTS):\n", |
" clear_output()\n", |
" (x, y, z) = gyro.axes()\n", |
" list_meas.append([x, y, z])\n", |
" print (n, list_meas[n])\n", |
" sys.stdout.flush()" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"(99, [195, -118, 7])\n" |
] |
} |
], |
"prompt_number": 5 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"measurements = np.array(list_meas)\n", |
"\n", |
"%pylab qt\n", |
"plt.subplot(1, 1, 1)\n", |
"plt.plot(measurements[:, 0])\n", |
"plt.plot(measurements[:, 1])\n", |
"plt.plot(measurements[:, 2])\n", |
"plt.xlabel('sample number')\n", |
"plt.ylabel('ADC')\n", |
"plt.title('Raw sensors')" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"Populating the interactive namespace from numpy and matplotlib\n" |
] |
}, |
{ |
"metadata": {}, |
"output_type": "pyout", |
"prompt_number": 6, |
"text": [ |
"<matplotlib.text.Text at 0x7f5b38053450>" |
] |
} |
], |
"prompt_number": 6 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [ |
"help(map)" |
], |
"language": "python", |
"metadata": {}, |
"outputs": [ |
{ |
"output_type": "stream", |
"stream": "stdout", |
"text": [ |
"Help on built-in function map in module __builtin__:\n", |
"\n", |
"map(...)\n", |
" map(function, sequence[, sequence, ...]) -> list\n", |
" \n", |
" Return a list of the results of applying the function to the items of\n", |
" the argument sequence(s). If more than one sequence is given, the\n", |
" function is called with an argument list consisting of the corresponding\n", |
" item of each sequence, substituting None for missing values when not all\n", |
" sequences have the same length. If the function is None, return a list of\n", |
" the items of the sequence (or a list of tuples if more than one sequence).\n", |
"\n" |
] |
} |
], |
"prompt_number": 10 |
}, |
{ |
"cell_type": "code", |
"collapsed": false, |
"input": [], |
"language": "python", |
"metadata": {}, |
"outputs": [] |
} |
], |
"metadata": {} |
} |
] |
} |
/Modules/Sensors/IMU01A/SW/Python/calibration_data_3Dset.npz |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Modules/Sensors/IMU01A/SW/Python/calibration_utils.py |
---|
0,0 → 1,270 |
# Copyright (C) 2010 Antoine Drouin |
# |
# This file is part of Paparazzi. |
# |
# Paparazzi is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 2, or (at your option) |
# any later version. |
# |
# Paparazzi is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with Paparazzi; see the file COPYING. If not, write to |
# the Free Software Foundation, 59 Temple Place - Suite 330, |
# Boston, MA 02111-1307, USA. |
# |
from __future__ import print_function, division |
import re |
import numpy as np |
from numpy import sin, cos |
from scipy import linalg, stats |
import matplotlib |
import matplotlib.pyplot as plt |
from mpl_toolkits.mplot3d import Axes3D |
def get_ids_in_log(filename): |
"""Returns available ac_id from a log.""" |
f = open(filename, 'r') |
ids = [] |
pattern = re.compile("\S+ (\S+)") |
while True: |
line = f.readline().strip() |
if line == '': |
break |
m = re.match(pattern, line) |
if m: |
ac_id = m.group(1) |
if not ac_id in ids: |
ids.append(ac_id) |
return ids |
def read_log(ac_id, filename, sensor): |
"""Extracts raw sensor measurements from a log.""" |
f = open(filename, 'r') |
pattern = re.compile("(\S+) "+ac_id+" IMU_"+sensor+"_RAW (\S+) (\S+) (\S+)") |
list_meas = [] |
while True: |
line = f.readline().strip() |
if line == '': |
break |
m = re.match(pattern, line) |
if m: |
list_meas.append([float(m.group(2)), float(m.group(3)), float(m.group(4))]) |
return np.array(list_meas) |
def read_log_mag_current(ac_id, filename): |
"""Extracts raw magnetometer and current measurements from a log.""" |
f = open(filename, 'r') |
pattern = re.compile("(\S+) "+ac_id+" IMU_MAG_CURRENT_CALIBRATION (\S+) (\S+) (\S+) (\S+)") |
list_meas = [] |
while True: |
line = f.readline().strip() |
if line == '': |
break |
m = re.match(pattern, line) |
if m: |
list_meas.append([float(m.group(2)), float(m.group(3)), float(m.group(4)), float(m.group(5))]) |
return np.array(list_meas) |
def filter_meas(meas, window_size, noise_threshold): |
"""Select only non-noisy data.""" |
filtered_meas = [] |
filtered_idx = [] |
for i in range(window_size, len(meas)-window_size): |
noise = meas[i-window_size:i+window_size, :].std(axis=0) |
if linalg.norm(noise) < noise_threshold: |
filtered_meas.append(meas[i, :]) |
filtered_idx.append(i) |
return np.array(filtered_meas), filtered_idx |
def get_min_max_guess(meas, scale): |
"""Initial boundary based calibration.""" |
max_meas = meas[:, :].max(axis=0) |
min_meas = meas[:, :].min(axis=0) |
n = (max_meas + min_meas) / 2 |
sf = 2*scale/(max_meas - min_meas) |
return np.array([n[0], n[1], n[2], sf[0], sf[1], sf[2]]) |
def scale_measurements(meas, p): |
"""Scale the set of measurements.""" |
l_comp = [] |
l_norm = [] |
for m in meas[:, ]: |
sm = (m - p[0:3])*p[3:6] |
l_comp.append(sm) |
l_norm.append(linalg.norm(sm)) |
return np.array(l_comp), np.array(l_norm) |
def estimate_mag_current_relation(meas): |
"""Calculate linear coefficient of magnetometer-current relation.""" |
coefficient = [] |
for i in range(0, 3): |
gradient, intercept, r_value, p_value, std_err = stats.linregress(meas[:, 3], meas[:, i]) |
coefficient.append(gradient) |
return coefficient |
def print_xml(p, sensor, res): |
"""Print xml for airframe file.""" |
print("") |
print("<define name=\""+sensor+"_X_NEUTRAL\" value=\""+str(int(round(p[0])))+"\"/>") |
print("<define name=\""+sensor+"_Y_NEUTRAL\" value=\""+str(int(round(p[1])))+"\"/>") |
print("<define name=\""+sensor+"_Z_NEUTRAL\" value=\""+str(int(round(p[2])))+"\"/>") |
print("<define name=\""+sensor+"_X_SENS\" value=\""+str(p[3]*2**res)+"\" integer=\"16\"/>") |
print("<define name=\""+sensor+"_Y_SENS\" value=\""+str(p[4]*2**res)+"\" integer=\"16\"/>") |
print("<define name=\""+sensor+"_Z_SENS\" value=\""+str(p[5]*2**res)+"\" integer=\"16\"/>") |
def plot_results(block, measurements, flt_idx, flt_meas, cp0, np0, cp1, np1, sensor_ref): |
"""Plot calibration results.""" |
plt.subplot(3, 1, 1) |
plt.plot(measurements[:, 0]) |
plt.plot(measurements[:, 1]) |
plt.plot(measurements[:, 2]) |
plt.plot(flt_idx, flt_meas[:, 0], 'ro') |
plt.plot(flt_idx, flt_meas[:, 1], 'ro') |
plt.plot(flt_idx, flt_meas[:, 2], 'ro') |
plt.xlabel('time (s)') |
plt.ylabel('ADC') |
plt.title('Raw sensors') |
plt.subplot(3, 2, 3) |
plt.plot(cp0[:, 0]) |
plt.plot(cp0[:, 1]) |
plt.plot(cp0[:, 2]) |
plt.plot(-sensor_ref*np.ones(len(flt_meas))) |
plt.plot(sensor_ref*np.ones(len(flt_meas))) |
plt.subplot(3, 2, 4) |
plt.plot(np0) |
plt.plot(sensor_ref*np.ones(len(flt_meas))) |
plt.subplot(3, 2, 5) |
plt.plot(cp1[:, 0]) |
plt.plot(cp1[:, 1]) |
plt.plot(cp1[:, 2]) |
plt.plot(-sensor_ref*np.ones(len(flt_meas))) |
plt.plot(sensor_ref*np.ones(len(flt_meas))) |
plt.subplot(3, 2, 6) |
plt.plot(np1) |
plt.plot(sensor_ref*np.ones(len(flt_meas))) |
# if we want to have another plot we only draw the figure (non-blocking) |
# also in matplotlib before 1.0.0 there is only one call to show possible |
if block: |
plt.show() |
else: |
plt.draw() |
def plot_mag_3d(measured, calibrated, p): |
"""Plot magnetometer measurements on 3D sphere.""" |
# set up points for sphere and ellipsoid wireframes |
u = np.r_[0:2 * np.pi:20j] |
v = np.r_[0:np.pi:20j] |
wx = np.outer(cos(u), sin(v)) |
wy = np.outer(sin(u), sin(v)) |
wz = np.outer(np.ones(np.size(u)), cos(v)) |
ex = p[0] * np.ones(np.size(u)) + np.outer(cos(u), sin(v)) / p[3] |
ey = p[1] * np.ones(np.size(u)) + np.outer(sin(u), sin(v)) / p[4] |
ez = p[2] * np.ones(np.size(u)) + np.outer(np.ones(np.size(u)), cos(v)) / p[5] |
# measurements |
mx = measured[:, 0] |
my = measured[:, 1] |
mz = measured[:, 2] |
# calibrated values |
cx = calibrated[:, 0] |
cy = calibrated[:, 1] |
cz = calibrated[:, 2] |
# axes size |
left = 0.02 |
bottom = 0.05 |
width = 0.46 |
height = 0.9 |
rect_l = [left, bottom, width, height] |
rect_r = [left/2+0.5, bottom, width, height] |
fig = plt.figure(figsize=plt.figaspect(0.5)) |
if matplotlib.__version__.startswith('0'): |
ax = Axes3D(fig, rect=rect_l) |
else: |
ax = fig.add_subplot(1, 2, 1, position=rect_l, projection='3d') |
# plot measurements |
ax.scatter(mx, my, mz) |
plt.hold(True) |
# plot line from center to ellipsoid center |
ax.plot([0.0, p[0]], [0.0, p[1]], [0.0, p[2]], color='black', marker='+', markersize=10) |
# plot ellipsoid |
ax.plot_wireframe(ex, ey, ez, color='grey', alpha=0.5) |
# Create cubic bounding box to simulate equal aspect ratio |
max_range = np.array([mx.max() - mx.min(), my.max() - my.min(), mz.max() - mz.min()]).max() |
Xb = 0.5 * max_range * np.mgrid[-1:2:2, -1:2:2, -1:2:2][0].flatten() + 0.5 * (mx.max() + mx.min()) |
Yb = 0.5 * max_range * np.mgrid[-1:2:2, -1:2:2, -1:2:2][1].flatten() + 0.5 * (my.max() + my.min()) |
Zb = 0.5 * max_range * np.mgrid[-1:2:2, -1:2:2, -1:2:2][2].flatten() + 0.5 * (mz.max() + mz.min()) |
# add the fake bounding box: |
for xb, yb, zb in zip(Xb, Yb, Zb): |
ax.plot([xb], [yb], [zb], 'w') |
ax.set_title('MAG raw with fitted ellipsoid and center offset') |
ax.set_xlabel('x') |
ax.set_ylabel('y') |
ax.set_zlabel('z') |
if matplotlib.__version__.startswith('0'): |
ax = Axes3D(fig, rect=rect_r) |
else: |
ax = fig.add_subplot(1, 2, 2, position=rect_r, projection='3d') |
ax.plot_wireframe(wx, wy, wz, color='grey', alpha=0.5) |
plt.hold(True) |
ax.scatter(cx, cy, cz) |
ax.set_title('MAG calibrated on unit sphere') |
ax.set_xlabel('x') |
ax.set_ylabel('y') |
ax.set_zlabel('z') |
ax.set_xlim3d(-1, 1) |
ax.set_ylim3d(-1, 1) |
ax.set_zlim3d(-1, 1) |
plt.show() |
def read_turntable_log(ac_id, tt_id, filename, _min, _max): |
""" Read a turntable log. |
return an array which first column is turnatble and next 3 are gyro |
""" |
f = open(filename, 'r') |
pattern_g = re.compile("(\S+) "+str(ac_id)+" IMU_GYRO_RAW (\S+) (\S+) (\S+)") |
pattern_t = re.compile("(\S+) "+str(tt_id)+" IMU_TURNTABLE (\S+)") |
last_tt = None |
list_tt = [] |
while True: |
line = f.readline().strip() |
if line == '': |
break |
m = re.match(pattern_t, line) |
if m: |
last_tt = float(m.group(2)) |
m = re.match(pattern_g, line) |
if m and last_tt and _min < last_tt < _max: |
list_tt.append([last_tt, float(m.group(2)), float(m.group(3)), float(m.group(4))]) |
return np.array(list_tt) |
/Modules/Sensors/IMU01A/SW/Python/calibration_data_set.npz |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.bak |
---|
0,0 → 1,20 |
#include "C:\Users\Honza\Documents\pic\I2C_gyrsokop\main.h" |
void main() |
{ |
setup_adc_ports(NO_ANALOGS|VSS_VDD); |
setup_adc(ADC_CLOCK_DIV_2); |
setup_spi(SPI_SS_DISABLED); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
setup_timer_1(T1_DISABLED); |
setup_timer_2(T2_DISABLED,0,1); |
setup_ccp1(CCP_OFF); |
setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard |
//TODO: User Code |
} |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.c |
---|
0,0 → 1,70 |
#include "C:\Users\Honza\Documents\pic\I2C_magnetometr\main.h" |
#define EEPROM_SDA PIN_B0 |
#define EEPROM_SCL PIN_B1 |
#use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL) |
#use rs232(baud=9600,parity=N,xmit=PIN_B3,rcv=PIN_B2,bits=8) //rcv TXD xmit RXD |
void main() |
{ |
setup_adc_ports(NO_ANALOGS|VSS_VDD); |
setup_adc(ADC_CLOCK_DIV_2); |
setup_spi(SPI_SS_DISABLED); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
setup_timer_1(T1_DISABLED); |
setup_timer_2(T2_DISABLED,0,1); |
setup_ccp1(CCP_OFF); |
setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard |
printf("Simple Thermomether \r\n",); |
int STAV1; |
unsigned int data1; |
while(TRUE) |
{ |
//akcelerometr |
int1 ack; |
i2c_start(); // If the write command is acknowledged, |
ack = i2c_write(0xD1);// then the device is ready. |
i2c_stop(); |
ack=!ack; |
i2c_stop(); |
i2c_start(); |
I2C_Write(0xD0); |
I2C_write(0x28); |
i2c_stop(); |
i2c_start(); |
I2C_Write(0xD1); |
STAV1=i2c_read(0); |
i2c_stop(); |
i2c_start(); |
I2C_Write(0xD0); |
I2C_write(0x0F); |
i2c_stop(); |
i2c_start(); |
I2C_Write(0xD1); |
data1=i2c_read(0); |
i2c_stop(); |
printf("Stav: %d (procenta)\r\n", ack); |
printf("Stav: %d (procenta)\r\n", STAV1); |
printf("Stav: %du(procenta)\r\n", data1); |
delay_ms (2000); |
} |
} |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.cof |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.err |
---|
0,0 → 1,2 |
Memory usage: ROM=10% RAM=2% - 5% |
0 Errors, 0 Warnings. |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.esym |
---|
0,0 → 1,417 |
D G "__PCM__" 0 72 ""4.106"" |
D G "__DEVICE__" 0 72 "887" |
D G "__DATE__" 0 72 ""02-4-13"" |
D G "__TIME__" 0 72 ""10:53:48"" "Standard Header file for the PIC16F887 device ////////////////" |
d G "PIN_A0" 2 20 "40" |
d G "PIN_A1" 2 21 "41" |
d G "PIN_A2" 2 22 "42" |
d G "PIN_A3" 2 23 "43" |
d G "PIN_A4" 2 24 "44" |
d G "PIN_A5" 2 25 "45" |
d G "PIN_A6" 2 26 "46" |
d G "PIN_A7" 2 27 "47" |
d G "PIN_B0" 2 29 "48" |
d G "PIN_B1" 2 30 "49" |
d G "PIN_B2" 2 31 "50" |
d G "PIN_B3" 2 32 "51" |
d G "PIN_B4" 2 33 "52" |
d G "PIN_B5" 2 34 "53" |
d G "PIN_B6" 2 35 "54" |
d G "PIN_B7" 2 36 "55" |
d G "PIN_C0" 2 38 "56" |
d G "PIN_C1" 2 39 "57" |
d G "PIN_C2" 2 40 "58" |
d G "PIN_C3" 2 41 "59" |
d G "PIN_C4" 2 42 "60" |
d G "PIN_C5" 2 43 "61" |
d G "PIN_C6" 2 44 "62" |
d G "PIN_C7" 2 45 "63" |
d G "PIN_D0" 2 47 "64" |
d G "PIN_D1" 2 48 "65" |
d G "PIN_D2" 2 49 "66" |
d G "PIN_D3" 2 50 "67" |
d G "PIN_D4" 2 51 "68" |
d G "PIN_D5" 2 52 "69" |
d G "PIN_D6" 2 53 "70" |
d G "PIN_D7" 2 54 "71" |
d G "PIN_E0" 2 56 "72" |
d G "PIN_E1" 2 57 "73" |
d G "PIN_E2" 2 58 "74" |
d G "PIN_E3" 2 59 "75" |
d G "FALSE" 2 62 "0" |
d G "TRUE" 2 63 "1" |
d G "BYTE" 2 65 "int8" |
d G "BOOLEAN" 2 66 "int1" |
d G "getc" 2 68 "getch" |
d G "fgetc" 2 69 "getch" |
d G "getchar" 2 70 "getch" |
d G "putc" 2 71 "putchar" |
d G "fputc" 2 72 "putchar" |
d G "fgets" 2 73 "gets" |
d G "fputs" 2 74 "puts" |
d G "WDT_FROM_SLEEP" 2 79 "3" |
d G "WDT_TIMEOUT" 2 80 "11" |
d G "MCLR_FROM_SLEEP" 2 81 "19" |
d G "MCLR_FROM_RUN" 2 82 "27" |
d G "NORMAL_POWER_UP" 2 83 "25" |
d G "BROWNOUT_RESTART" 2 84 "26" |
d G "T0_INTERNAL" 2 91 "0" |
d G "T0_EXT_L_TO_H" 2 92 "32" |
d G "T0_EXT_H_TO_L" 2 93 "48" |
d G "T0_DIV_1" 2 95 "8" |
d G "T0_DIV_2" 2 96 "0" |
d G "T0_DIV_4" 2 97 "1" |
d G "T0_DIV_8" 2 98 "2" |
d G "T0_DIV_16" 2 99 "3" |
d G "T0_DIV_32" 2 100 "4" |
d G "T0_DIV_64" 2 101 "5" |
d G "T0_DIV_128" 2 102 "6" |
d G "T0_DIV_256" 2 103 "7" |
d G "T0_8_BIT" 2 106 "0" |
d G "RTCC_INTERNAL" 2 108 "0" "The following are provided for compatibility" |
d G "RTCC_EXT_L_TO_H" 2 109 "32" "with older compiler versions" |
d G "RTCC_EXT_H_TO_L" 2 110 "48" |
d G "RTCC_DIV_1" 2 111 "8" |
d G "RTCC_DIV_2" 2 112 "0" |
d G "RTCC_DIV_4" 2 113 "1" |
d G "RTCC_DIV_8" 2 114 "2" |
d G "RTCC_DIV_16" 2 115 "3" |
d G "RTCC_DIV_32" 2 116 "4" |
d G "RTCC_DIV_64" 2 117 "5" |
d G "RTCC_DIV_128" 2 118 "6" |
d G "RTCC_DIV_256" 2 119 "7" |
d G "RTCC_8_BIT" 2 120 "0" |
d G "WDT_18MS" 2 132 "8" |
d G "WDT_36MS" 2 133 "9" |
d G "WDT_72MS" 2 134 "10" |
d G "WDT_144MS" 2 135 "11" |
d G "WDT_288MS" 2 136 "12" |
d G "WDT_576MS" 2 137 "13" |
d G "WDT_1152MS" 2 138 "14" |
d G "WDT_2304MS" 2 139 "15" |
d G "WDT_ON" 2 143 "0x4100" |
d G "WDT_OFF" 2 144 "0" |
d G "WDT_DIV_16" 2 145 "0x100" |
d G "WDT_DIV_8" 2 146 "0x300" |
d G "WDT_DIV_4" 2 147 "0x500" |
d G "WDT_DIV_2" 2 148 "0x700" |
d G "WDT_TIMES_1" 2 149 "0x900" "Default" |
d G "WDT_TIMES_2" 2 150 "0xB00" |
d G "WDT_TIMES_4" 2 151 "0xD00" |
d G "WDT_TIMES_8" 2 152 "0xF00" |
d G "WDT_TIMES_16" 2 153 "0x1100" |
d G "WDT_TIMES_32" 2 154 "0x1300" |
d G "WDT_TIMES_64" 2 155 "0x1500" |
d G "WDT_TIMES_128" 2 156 "0x1700" |
d G "T1_DISABLED" 2 162 "0" |
d G "T1_INTERNAL" 2 163 "5" |
d G "T1_EXTERNAL" 2 164 "7" |
d G "T1_EXTERNAL_SYNC" 2 165 "3" |
d G "T1_CLK_OUT" 2 167 "8" |
d G "T1_DIV_BY_1" 2 169 "0" |
d G "T1_DIV_BY_2" 2 170 "0x10" |
d G "T1_DIV_BY_4" 2 171 "0x20" |
d G "T1_DIV_BY_8" 2 172 "0x30" |
d G "T1_GATE" 2 174 "0x40" |
d G "T1_GATE_INVERTED" 2 175 "0xC0" |
d G "T2_DISABLED" 2 180 "0" |
d G "T2_DIV_BY_1" 2 181 "4" |
d G "T2_DIV_BY_4" 2 182 "5" |
d G "T2_DIV_BY_16" 2 183 "6" |
d G "CCP_OFF" 2 189 "0" |
d G "CCP_CAPTURE_FE" 2 190 "4" |
d G "CCP_CAPTURE_RE" 2 191 "5" |
d G "CCP_CAPTURE_DIV_4" 2 192 "6" |
d G "CCP_CAPTURE_DIV_16" 2 193 "7" |
d G "CCP_COMPARE_SET_ON_MATCH" 2 194 "8" |
d G "CCP_COMPARE_CLR_ON_MATCH" 2 195 "9" |
d G "CCP_COMPARE_INT" 2 196 "0xA" |
d G "CCP_COMPARE_RESET_TIMER" 2 197 "0xB" |
d G "CCP_PWM" 2 198 "0xC" |
d G "CCP_PWM_PLUS_1" 2 199 "0x1c" |
d G "CCP_PWM_PLUS_2" 2 200 "0x2c" |
d G "CCP_PWM_PLUS_3" 2 201 "0x3c" |
d G "CCP_PWM_H_H" 2 206 "0x0c" |
d G "CCP_PWM_H_L" 2 207 "0x0d" |
d G "CCP_PWM_L_H" 2 208 "0x0e" |
d G "CCP_PWM_L_L" 2 209 "0x0f" |
d G "CCP_PWM_FULL_BRIDGE" 2 211 "0x40" |
d G "CCP_PWM_FULL_BRIDGE_REV" 2 212 "0xC0" |
d G "CCP_PWM_HALF_BRIDGE" 2 213 "0x80" |
d G "CCP_SHUTDOWN_ON_COMP1" 2 215 "0x100000" |
d G "CCP_SHUTDOWN_ON_COMP2" 2 216 "0x200000" |
d G "CCP_SHUTDOWN_ON_COMP" 2 217 "0x300000" |
d G "CCP_SHUTDOWN_ON_INT0" 2 218 "0x400000" |
d G "CCP_SHUTDOWN_ON_COMP1_INT0" 2 219 "0x500000" |
d G "CCP_SHUTDOWN_ON_COMP2_INT0" 2 220 "0x600000" |
d G "CCP_SHUTDOWN_ON_COMP_INT0" 2 221 "0x700000" |
d G "CCP_SHUTDOWN_AC_L" 2 223 "0x000000" |
d G "CCP_SHUTDOWN_AC_H" 2 224 "0x040000" |
d G "CCP_SHUTDOWN_AC_F" 2 225 "0x080000" |
d G "CCP_SHUTDOWN_BD_L" 2 227 "0x000000" |
d G "CCP_SHUTDOWN_BD_H" 2 228 "0x010000" |
d G "CCP_SHUTDOWN_BD_F" 2 229 "0x020000" |
d G "CCP_SHUTDOWN_RESTART" 2 231 "0x80000000" |
d G "CCP_PULSE_STEERING_A" 2 233 "0x01000000" |
d G "CCP_PULSE_STEERING_B" 2 234 "0x02000000" |
d G "CCP_PULSE_STEERING_C" 2 235 "0x04000000" |
d G "CCP_PULSE_STEERING_D" 2 236 "0x08000000" |
d G "CCP_PULSE_STEERING_SYNC" 2 237 "0x10000000" |
d G "SPI_MASTER" 2 245 "0x20" |
d G "SPI_SLAVE" 2 246 "0x24" |
d G "SPI_L_TO_H" 2 247 "0" |
d G "SPI_H_TO_L" 2 248 "0x10" |
d G "SPI_CLK_DIV_4" 2 249 "0" |
d G "SPI_CLK_DIV_16" 2 250 "1" |
d G "SPI_CLK_DIV_64" 2 251 "2" |
d G "SPI_CLK_T2" 2 252 "3" |
d G "SPI_SS_DISABLED" 2 253 "1" |
d G "SPI_SAMPLE_AT_END" 2 255 "0x8000" |
d G "SPI_XMIT_L_TO_H" 2 256 "0x4000" |
d G "UART_ADDRESS" 2 262 "2" |
d G "UART_DATA" 2 263 "4" |
d G "UART_AUTODETECT" 2 264 "8" |
d G "UART_AUTODETECT_NOWAIT" 2 265 "9" |
d G "UART_WAKEUP_ON_RDA" 2 266 "10" |
d G "UART_SEND_BREAK" 2 267 "13" |
d G "NC_NC_NC_NC" 2 273 "0x00" |
d G "NC_NC" 2 274 "0x00" |
d G "CP1_A0_A3" 2 277 "0x00090080" |
d G "CP1_A1_A3" 2 278 "0x000A0081" |
d G "CP1_B3_A3" 2 279 "0x00880082" |
d G "CP1_B1_A3" 2 280 "0x00280083" |
d G "CP1_A0_VREF" 2 281 "0x00010084" |
d G "CP1_A1_VREF" 2 282 "0x00020085" |
d G "CP1_B3_VREF" 2 283 "0x00800086" |
d G "CP1_B1_VREF" 2 284 "0x00200087" |
d G "CP1_OUT_ON_A4" 2 286 "0x00000020" |
d G "CP1_INVERT" 2 287 "0x00000010" |
d G "CP1_ABSOLUTE_VREF" 2 288 "0x20000000" |
d G "CP2_A0_A2" 2 291 "0x00058000" |
d G "CP2_A1_A2" 2 292 "0x00068100" |
d G "CP2_B3_A2" 2 293 "0x00848200" |
d G "CP2_B1_A2" 2 294 "0x00248300" |
d G "CP2_A0_VREF" 2 295 "0x00018400" |
d G "CP2_A1_VREF" 2 296 "0x00028500" |
d G "CP2_B3_VREF" 2 297 "0x00808600" |
d G "CP2_B1_VREF" 2 298 "0x00208700" |
d G "CP2_OUT_ON_A5" 2 300 "0x00002000" |
d G "CP2_INVERT" 2 301 "0x00001000" |
d G "CP2_ABSOLUTE_VREF" 2 302 "0x10000000" |
d G "CP2_T1_SYNC" 2 305 "0x01000000" |
d G "CP2_T1_GATE" 2 306 "0x02000000" |
d G "VREF_LOW" 2 315 "0xa0" |
d G "VREF_HIGH" 2 316 "0x80" |
d G "OSC_31KHZ" 2 322 "1" |
d G "OSC_125KHZ" 2 323 "0x11" |
d G "OSC_250KHZ" 2 324 "0x21" |
d G "OSC_500KHZ" 2 325 "0x31" |
d G "OSC_1MHZ" 2 326 "0x41" |
d G "OSC_2MHZ" 2 327 "0x51" |
d G "OSC_4MHZ" 2 328 "0x61" |
d G "OSC_8MHZ" 2 329 "0x71" |
d G "OSC_INTRC" 2 330 "1" |
d G "OSC_NORMAL" 2 331 "0" |
d G "OSC_STATE_STABLE" 2 333 "4" |
d G "OSC_31KHZ_STABLE" 2 334 "2" |
d G "ADC_OFF" 2 342 "0" "ADC Off" |
d G "ADC_CLOCK_DIV_2" 2 343 "0x100" |
d G "ADC_CLOCK_DIV_8" 2 344 "0x40" |
d G "ADC_CLOCK_DIV_32" 2 345 "0x80" |
d G "ADC_CLOCK_INTERNAL" 2 346 "0xc0" "Internal 2-6us" |
d G "sAN0" 2 350 "1" "| A0" |
d G "sAN1" 2 351 "2" "| A1" |
d G "sAN2" 2 352 "4" "| A2" |
d G "sAN3" 2 353 "8" "| A3" |
d G "sAN4" 2 354 "16" "| A5" |
d G "sAN5" 2 355 "32" "| E0" |
d G "sAN6" 2 356 "64" "| E1" |
d G "sAN7" 2 357 "128" "| E2" |
d G "sAN8" 2 358 "0x10000" "| B2" |
d G "sAN9" 2 359 "0x20000" "| B3" |
d G "sAN10" 2 360 "0x40000" "| B1" |
d G "sAN11" 2 361 "0x80000" "| B4" |
d G "sAN12" 2 362 "0x100000" "| B0" |
d G "sAN13" 2 363 "0x200000" "| B5" |
d G "NO_ANALOGS" 2 364 "0" "None" |
d G "ALL_ANALOG" 2 365 "0x1F00FF" "A0 A1 A2 A3 A5 E0 E1 E2 B0 B1 B2 B3 B4 B5" |
d G "VSS_VDD" 2 368 "0x0000" "| Range 0-Vdd" |
d G "VSS_VREF" 2 369 "0x1000" "| Range 0-Vref" |
d G "VREF_VREF" 2 370 "0x3000" "| Range Vref-Vref" |
d G "VREF_VDD" 2 371 "0x2000" "| Range Vref-Vdd" |
d G "ADC_START_AND_READ" 2 375 "7" "This is the default if nothing is specified" |
d G "ADC_START_ONLY" 2 376 "1" |
d G "ADC_READ_ONLY" 2 377 "6" |
d G "L_TO_H" 2 389 "0x40" |
d G "H_TO_L" 2 390 "0" |
d G "GLOBAL" 2 392 "0x0BC0" |
d G "INT_RTCC" 2 393 "0x000B20" |
d G "INT_RB" 2 394 "0x01FF0B08" |
d G "INT_EXT_L2H" 2 395 "0x50000B10" |
d G "INT_EXT_H2L" 2 396 "0x60000B10" |
d G "INT_EXT" 2 397 "0x000B10" |
d G "INT_AD" 2 398 "0x008C40" |
d G "INT_TBE" 2 399 "0x008C10" |
d G "INT_RDA" 2 400 "0x008C20" |
d G "INT_TIMER1" 2 401 "0x008C01" |
d G "INT_TIMER2" 2 402 "0x008C02" |
d G "INT_CCP1" 2 403 "0x008C04" |
d G "INT_CCP2" 2 404 "0x008D01" |
d G "INT_SSP" 2 405 "0x008C08" |
d G "INT_BUSCOL" 2 406 "0x008D08" |
d G "INT_EEPROM" 2 407 "0x008D10" |
d G "INT_TIMER0" 2 408 "0x000B20" |
d G "INT_OSC_FAIL" 2 409 "0x008D80" |
d G "INT_COMP" 2 410 "0x008D20" |
d G "INT_COMP2" 2 411 "0x008D40" |
d G "INT_ULPWU" 2 412 "0x008D04" |
d G "INT_RB0" 2 413 "0x0010B08" |
d G "INT_RB1" 2 414 "0x0020B08" |
d G "INT_RB2" 2 415 "0x0040B08" |
d G "INT_RB3" 2 416 "0x0080B08" |
d G "INT_RB4" 2 417 "0x0100B08" |
d G "INT_RB5" 2 418 "0x0200B08" |
d G "INT_RB6" 2 419 "0x0400B08" |
d G "INT_RB7" 2 420 "0x0800B08" |
D G "EEPROM_SDA" 0 2 "PIN_B0" |
D G "EEPROM_SCL" 0 3 "PIN_B1" |
F G "main" 0 8 "void()" |
C L "main" 0 18 1 "FUNCTION" |
V L "STAV1" 0 22 "int8" |
V L "data1" 0 23 "int8" |
C L "main" 0 18 1 "FUNCTION" |
V L "ack" 0 32 "int1" |
C L "main" 0 18 1 "FUNCTION" |
C L "main" 0 18 1 "FUNCTION" |
F B "reset_cpu" 0 0 |
F B "abs" 1 0 |
F B "sleep_ulpwu" 1 0 |
F B "sleep" 0 0 |
F B "delay_cycles" 1 0 |
F B "read_bank" 2 0 |
F B "write_bank" 3 0 |
F B "shift_left" 2 2 |
F B "shift_right" 2 2 |
F B "rotate_left" 2 0 |
F B "rotate_right" 2 0 |
F B "_mul" 2 0 |
F B "memset" 3 0 |
F B "isamoung" 2 0 |
F B "isamong" 2 0 |
F B "bit_set" 2 0 |
F B "bit_clear" 2 0 |
F B "bit_test" 2 0 |
F B "toupper" 1 0 |
F B "tolower" 1 0 |
F B "swap" 1 0 |
F B "printf" 1 255 |
F B "fprintf" 1 255 |
F B "sprintf" 1 255 |
F B "make8" 2 0 |
F B "make16" 2 0 |
F B "make32" 1 255 |
F B "label_address" 1 1 |
F B "goto_address" 1 0 |
F B "_va_arg" 1 0 |
F B "offsetofbit" 2 2 |
F B "enable_interrupts" 1 0 |
F B "disable_interrupts" 1 0 |
F B "interrupt_active" 1 0 |
F B "clear_interrupt" 1 0 |
F B "jump_to_isr" 1 0 |
F B "ext_int_edge" 1 2 |
F B "read_eeprom" 1 0 |
F B "write_eeprom" 2 0 |
F B "read_program_eeprom" 1 0 |
F B "write_program_eeprom" 2 0 |
F B "write_program_memory" 4 0 |
F B "write_program_memory8" 4 0 |
F B "read_program_memory" 4 0 |
F B "read_program_memory8" 4 0 |
F B "erase_program_eeprom" 1 0 |
F B "strcpy" 2 0 |
F B "memcpy" 3 0 |
F B "strstr100" 2 0 |
F B "output_high" 1 0 |
F B "output_low" 1 0 |
F B "input" 1 0 |
F B "input_state" 1 0 |
F B "output_float" 1 0 |
F B "output_drive" 1 0 |
F B "output_bit" 1 1 |
F B "output_toggle" 1 0 |
F B "output_a" 1 0 |
F B "output_b" 1 0 |
F B "output_c" 1 0 |
F B "output_d" 1 0 |
F B "output_e" 1 0 |
F B "input_a" 0 0 |
F B "input_b" 0 0 |
F B "input_c" 0 0 |
F B "input_d" 0 0 |
F B "input_e" 0 0 |
F B "set_tris_a" 1 0 |
F B "set_tris_b" 1 0 |
F B "set_tris_c" 1 0 |
F B "set_tris_d" 1 0 |
F B "set_tris_e" 1 0 |
F B "get_tris_a" 0 0 |
F B "get_tris_b" 0 0 |
F B "get_tris_c" 0 0 |
F B "get_tris_d" 0 0 |
F B "get_tris_e" 0 0 |
F B "input_change_a" 0 0 |
F B "input_change_b" 0 0 |
F B "input_change_c" 0 0 |
F B "input_change_d" 0 0 |
F B "input_change_e" 0 0 |
F B "port_b_pullups" 1 0 |
F B "setup_counters" 2 0 |
F B "setup_wdt" 1 0 |
F B "restart_cause" 0 0 |
F B "restart_wdt" 0 0 |
F B "get_rtcc" 0 0 |
F B "set_rtcc" 1 0 |
F B "get_timer0" 0 0 |
F B "set_timer0" 1 0 |
F B "setup_comparator" 1 0 |
F B "setup_port_a" 1 0 |
F B "setup_adc_ports" 1 0 |
F B "setup_adc" 1 0 |
F B "set_adc_channel" 1 0 |
F B "read_adc" 0 1 |
F B "adc_done" 0 0 |
F B "setup_timer_0" 1 0 |
F B "setup_vref" 1 0 |
F B "setup_timer_1" 1 0 |
F B "get_timer1" 0 0 |
F B "set_timer1" 1 0 |
F B "setup_timer_2" 3 0 |
F B "get_timer2" 0 0 |
F B "set_timer2" 1 0 |
F B "setup_ccp1" 1 2 |
F B "set_pwm1_duty" 1 0 |
F B "setup_ccp2" 1 0 |
F B "set_pwm2_duty" 1 0 |
F B "setup_oscillator" 1 2 |
F B "setup_spi" 1 0 |
F B "spi_read" 0 1 |
F B "spi_write" 1 0 |
F B "spi_data_is_in" 0 0 |
F B "setup_spi2" 1 0 |
F B "spi_read2" 0 1 |
F B "spi_write2" 1 0 |
F B "spi_data_is_in2" 0 0 |
F B "brownout_enable" 1 0 |
F B "delay_ms" 1 0 |
F B "delay_us" 1 0 |
F B "i2c_read" 0 2 |
F B "i2c_write" 1 2 |
F B "i2c_start" 0 2 |
F B "i2c_stop" 0 1 |
F B "i2c_isr_state" 0 1 |
F B "putchar" 1 2 |
F B "puts" 1 2 |
F B "getch" 0 1 |
F B "gets" 1 3 |
F B "kbhit" 0 1 |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.h |
---|
0,0 → 1,19 |
#include <16F887.h> |
#device adc=8 |
#FUSES NOWDT //No Watch Dog Timer |
#FUSES INTRC //Internal RC Osc |
#FUSES NOPUT //No Power Up Timer |
#FUSES MCLR //Master Clear pin enabled |
#FUSES NOPROTECT //Code not protected from reading |
#FUSES NOCPD //No EE protection |
#FUSES NOBROWNOUT //No brownout reset |
#FUSES IESO //Internal External Switch Over mode enabled |
#FUSES FCMEN //Fail-safe clock monitor enabled |
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O |
#FUSES NODEBUG //No Debug mode for ICD |
#FUSES NOWRT //Program memory not write protected |
#FUSES BORV40 //Brownout reset at 4.0V |
#use delay(clock=8000000) |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.hex |
---|
0,0 → 1,112 |
:1000000001308A00E1290000D3346D38EC32202A17 |
:10001000E832F236EF36653AE8327210A0060A008E |
:10002000533A613B3A10253220147039EF3165376D |
:10003000F430A9060A00533A613B3A1025322014E5 |
:100040007039EF316537F430A9060A00533A613B45 |
:100050003A10253275147039EF316537F430A9063E |
:100060000A0083168611831286110830F80038289A |
:100070000000F8174928F813AB0C03188615031C69 |
:100080008611781749287813F80B3C284728000078 |
:1000900086153F308400840B4B280000F81B3B285A |
:1000A000781B43280800831603178C170C140000D4 |
:1000B000000083120C087F39031997280313A4004A |
:1000C00003170D080313A50003170F080313A60059 |
:1000D0002408AB003120250803178D0003132608E0 |
:1000E00003178F0083168C170C1400000000831276 |
:1000F0000C0D0E0D7F39031997280313A400031765 |
:100100000D080313A50003170F080313A600240806 |
:10011000AB003120250803178D00031326080317B1 |
:100120008F008D0A03198F0A031353280317031333 |
:100130008A110A12492A0830F80000008610831636 |
:10014000861000008312A40D0610031CAA28831633 |
:10015000061483120318AF28831606108312831621 |
:1001600086148312861CB228F80B9D280000861086 |
:100170008316861000000614000000008614831207 |
:10018000861CC028F8010000061878148610831613 |
:10019000861083120610831606108312080008309A |
:1001A000A5007708A60083160614000086148312A3 |
:1001B000861CD82806180314061C0310F80D00002E |
:1001C0008316861083128610A50BD3288316061477 |
:1001D00000008312061026080319F1288316061062 |
:1001E00083120000831686148312861CF5280000F3 |
:1001F00086108316861000008312061083160610E0 |
:1002000083120800831603178C170C1400000000DB |
:100210000318312983120C087F390313A600031732 |
:100220000D080313A70003170F080313A8002608DF |
:10023000AB003120270803178D000313280803178C |
:100240008F0083168C170C14000000008312031318 |
:10025000A50B2B292E298316031731295029831624 |
:10026000031783120C0D0E0D7F390313A60003171D |
:100270000D080313A70003170F080313A80026088F |
:10028000AB003120270803178D000313280803173C |
:100290008F008D0A03198F0A03100313A50B02297F |
:1002A00008002C08F8012B02031859292B08F70025 |
:1002B0006529F7010830AD00AB0DF70D2C0877026A |
:1002C0000318F700F80DAD0B5C2908002030261E3E |
:1002D0003030A7002508F700A51F7529F709F70A90 |
:1002E0007708A5002D30A700A6172508AB006430BD |
:1002F000AC0051217708A50030307807A800250808 |
:10030000AB000A30AC00512130307707AA00303002 |
:100310007807A9002708F700A61D9029A61F261117 |
:10032000261A9D29A61FB8292619B8297708A800DA |
:10033000A618B8297708A900B82930302802031D6B |
:10034000B8297708A8002030A700A61DAB292611E0 |
:10035000A614A61FA61030302902031DB82977085D |
:10036000A9002030A800A61DAB29A610A61F2610A4 |
:10037000261DBD292708AB003120A61CC22928084C |
:10038000AB003120261CC7292908AB0031202A08E0 |
:10039000AB003120080025308400831300080319C6 |
:1003A000DE290230F800F701F70BD429F80BD32926 |
:1003B0009730F700F70BDA29800BD1298A110A123E |
:1003C000572B840183131F308305713083168F00F0 |
:1003D0000F08861183128615831603170908C03982 |
:1003E000890003131F129F12003003178800831225 |
:1003F000870188018901FF300313A00083160317CA |
:100400000908C039890003131F129F120030031717 |
:100410008800831203131F139F1383169F138312E5 |
:100420001F149412A012200883168700831220162E |
:100430002008831687008312A011200883168700E6 |
:100440000130831294000030831694000108C739EC |
:1004500008388100831290010030F80092000030CB |
:1004600083169200831220152008831687008312BA |
:10047000970183169B019C0101309D008312031795 |
:1004800087018801890104308D0000308F0003133B |
:1004900053288316061400008614000083120610E9 |
:1004A0008316061000008312861083168610D13042 |
:1004B0008312A4009B207808231078182314831635 |
:1004C0000610000086148312861C642A0000682A25 |
:1004D000000083160614000001308312A306831661 |
:1004E0000610000086148312861C742A0000782AE5 |
:1004F0000000831606140000061400008614000095 |
:1005000083120610831606100000831286108316CD |
:100510008610D0308312A4009B202830A4009B209A |
:1005200083160610000086148312861C952A00008C |
:10053000992A000083160614000006140000861491 |
:100540000000831206108316061000008312861026 |
:1005500083168610D1308312A4009B20F701CF2090 |
:100560007808A10083160610000086148312861CEA |
:10057000B72A0000BB2A00008316061400000614E8 |
:100580000000861400008312061083160610000077 |
:100590008312861083168610D0308312A4009B200D |
:1005A0000F30A4009B2083160610000086148312CF |
:1005B000861CD82A0000DC2A0000831606140000DE |
:1005C000061400008614000083120610831606101D |
:1005D00000008312861083168610D1308312A40087 |
:1005E0009B20F701CF207808A20083160610000098 |
:1005F00086148312861CFA2A0000FE2A0000831645 |
:10060000061400000030831223180130A4001030BB |
:1006100003178D0000308F00031006300313A50070 |
:1006200002212408A5001F30A600662114300317FC |
:100630008D0000308F0003100D300313A500022140 |
:100640001B3003178D0000308F000310063003139A |
:10065000A50002212108A5001F30A60066211F3039 |
:1006600003178D0000308F0003100D300313A50019 |
:100670000221263003178D0000308F000310063052 |
:100680000313A50002212208A5001F30A600662141 |
:100690002A3003178D0000308F0003100D30031334 |
:1006A000A50002210830A400FA30A500CB29A40B34 |
:0606B000542B492A6300EF |
:04400E00F52CFF3F4F |
:00000001FF |
;PIC16F887 |
;CRC=CFC6 CREATED="02-4-13 10:53" |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.lst |
---|
0,0 → 1,652 |
CCS PCM C Compiler, Version 4.106, 47914 02-4-13 10:53 |
Filename: C:\Users\Honza\Documents\pic\I2C_gyrsokop\main.lst |
ROM used: 859 words (10%) |
Largest free fragment is 2048 |
RAM used: 7 (2%) at main() level |
19 (5%) worst case |
Stack: 2 locations |
* |
0000: MOVLW 01 |
0001: MOVWF 0A |
0002: GOTO 1E1 |
0003: NOP |
.................... #include "C:\Users\Honza\Documents\pic\I2C_magnetometr\main.h" |
.................... #include <16F887.h> |
.................... //////// Standard Header file for the PIC16F887 device //////////////// |
.................... #device PIC16F887 |
.................... #list |
.................... |
.................... #device adc=8 |
.................... |
.................... #FUSES NOWDT //No Watch Dog Timer |
.................... #FUSES INTRC //Internal RC Osc |
.................... #FUSES NOPUT //No Power Up Timer |
.................... #FUSES MCLR //Master Clear pin enabled |
.................... #FUSES NOPROTECT //Code not protected from reading |
.................... #FUSES NOCPD //No EE protection |
.................... #FUSES NOBROWNOUT //No brownout reset |
.................... #FUSES IESO //Internal External Switch Over mode enabled |
.................... #FUSES FCMEN //Fail-safe clock monitor enabled |
.................... #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O |
.................... #FUSES NODEBUG //No Debug mode for ICD |
.................... #FUSES NOWRT //Program memory not write protected |
.................... #FUSES BORV40 //Brownout reset at 4.0V |
.................... |
.................... #use delay(clock=8000000) |
* |
01CB: MOVLW 25 |
01CC: MOVWF 04 |
01CD: BCF 03.7 |
01CE: MOVF 00,W |
01CF: BTFSC 03.2 |
01D0: GOTO 1DE |
01D1: MOVLW 02 |
01D2: MOVWF 78 |
01D3: CLRF 77 |
01D4: DECFSZ 77,F |
01D5: GOTO 1D4 |
01D6: DECFSZ 78,F |
01D7: GOTO 1D3 |
01D8: MOVLW 97 |
01D9: MOVWF 77 |
01DA: DECFSZ 77,F |
01DB: GOTO 1DA |
01DC: DECFSZ 00,F |
01DD: GOTO 1D1 |
01DE: BCF 0A.3 |
01DF: BCF 0A.4 |
01E0: GOTO 357 (RETURN) |
.................... |
.................... |
.................... #define EEPROM_SDA PIN_B0 |
.................... #define EEPROM_SCL PIN_B1 |
.................... #use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL) |
* |
009B: MOVLW 08 |
009C: MOVWF 78 |
009D: NOP |
009E: BCF 06.1 |
009F: BSF 03.5 |
00A0: BCF 06.1 |
00A1: NOP |
00A2: BCF 03.5 |
00A3: RLF 24,F |
00A4: BCF 06.0 |
00A5: BTFSS 03.0 |
00A6: GOTO 0AA |
00A7: BSF 03.5 |
00A8: BSF 06.0 |
00A9: BCF 03.5 |
00AA: BTFSC 03.0 |
00AB: GOTO 0AF |
00AC: BSF 03.5 |
00AD: BCF 06.0 |
00AE: BCF 03.5 |
00AF: BSF 03.5 |
00B0: BSF 06.1 |
00B1: BCF 03.5 |
00B2: BTFSS 06.1 |
00B3: GOTO 0B2 |
00B4: DECFSZ 78,F |
00B5: GOTO 09D |
00B6: NOP |
00B7: BCF 06.1 |
00B8: BSF 03.5 |
00B9: BCF 06.1 |
00BA: NOP |
00BB: BSF 06.0 |
00BC: NOP |
00BD: NOP |
00BE: BSF 06.1 |
00BF: BCF 03.5 |
00C0: BTFSS 06.1 |
00C1: GOTO 0C0 |
00C2: CLRF 78 |
00C3: NOP |
00C4: BTFSC 06.0 |
00C5: BSF 78.0 |
00C6: BCF 06.1 |
00C7: BSF 03.5 |
00C8: BCF 06.1 |
00C9: BCF 03.5 |
00CA: BCF 06.0 |
00CB: BSF 03.5 |
00CC: BCF 06.0 |
00CD: BCF 03.5 |
00CE: RETURN |
00CF: MOVLW 08 |
00D0: MOVWF 25 |
00D1: MOVF 77,W |
00D2: MOVWF 26 |
00D3: BSF 03.5 |
00D4: BSF 06.0 |
00D5: NOP |
00D6: BSF 06.1 |
00D7: BCF 03.5 |
00D8: BTFSS 06.1 |
00D9: GOTO 0D8 |
00DA: BTFSC 06.0 |
00DB: BSF 03.0 |
00DC: BTFSS 06.0 |
00DD: BCF 03.0 |
00DE: RLF 78,F |
00DF: NOP |
00E0: BSF 03.5 |
00E1: BCF 06.1 |
00E2: BCF 03.5 |
00E3: BCF 06.1 |
00E4: DECFSZ 25,F |
00E5: GOTO 0D3 |
00E6: BSF 03.5 |
00E7: BSF 06.0 |
00E8: NOP |
00E9: BCF 03.5 |
00EA: BCF 06.0 |
00EB: MOVF 26,W |
00EC: BTFSC 03.2 |
00ED: GOTO 0F1 |
00EE: BSF 03.5 |
00EF: BCF 06.0 |
00F0: BCF 03.5 |
00F1: NOP |
00F2: BSF 03.5 |
00F3: BSF 06.1 |
00F4: BCF 03.5 |
00F5: BTFSS 06.1 |
00F6: GOTO 0F5 |
00F7: NOP |
00F8: BCF 06.1 |
00F9: BSF 03.5 |
00FA: BCF 06.1 |
00FB: NOP |
00FC: BCF 03.5 |
00FD: BCF 06.0 |
00FE: BSF 03.5 |
00FF: BCF 06.0 |
0100: BCF 03.5 |
0101: RETURN |
.................... #use rs232(baud=9600,parity=N,xmit=PIN_B3,rcv=PIN_B2,bits=8) //rcv TXD xmit RXD |
* |
0031: BSF 03.5 |
0032: BCF 06.3 |
0033: BCF 03.5 |
0034: BCF 06.3 |
0035: MOVLW 08 |
0036: MOVWF 78 |
0037: GOTO 038 |
0038: NOP |
0039: BSF 78.7 |
003A: GOTO 049 |
003B: BCF 78.7 |
003C: RRF 2B,F |
003D: BTFSC 03.0 |
003E: BSF 06.3 |
003F: BTFSS 03.0 |
0040: BCF 06.3 |
0041: BSF 78.6 |
0042: GOTO 049 |
0043: BCF 78.6 |
0044: DECFSZ 78,F |
0045: GOTO 03C |
0046: GOTO 047 |
0047: NOP |
0048: BSF 06.3 |
0049: MOVLW 3F |
004A: MOVWF 04 |
004B: DECFSZ 04,F |
004C: GOTO 04B |
004D: NOP |
004E: BTFSC 78.7 |
004F: GOTO 03B |
0050: BTFSC 78.6 |
0051: GOTO 043 |
0052: RETURN |
.................... |
.................... |
.................... void main() |
.................... { |
* |
01E1: CLRF 04 |
01E2: BCF 03.7 |
01E3: MOVLW 1F |
01E4: ANDWF 03,F |
01E5: MOVLW 71 |
01E6: BSF 03.5 |
01E7: MOVWF 0F |
01E8: MOVF 0F,W |
01E9: BCF 06.3 |
01EA: BCF 03.5 |
01EB: BSF 06.3 |
01EC: BSF 03.5 |
01ED: BSF 03.6 |
01EE: MOVF 09,W |
01EF: ANDLW C0 |
01F0: MOVWF 09 |
01F1: BCF 03.6 |
01F2: BCF 1F.4 |
01F3: BCF 1F.5 |
01F4: MOVLW 00 |
01F5: BSF 03.6 |
01F6: MOVWF 08 |
01F7: BCF 03.5 |
01F8: CLRF 07 |
01F9: CLRF 08 |
01FA: CLRF 09 |
.................... |
.................... setup_adc_ports(NO_ANALOGS|VSS_VDD); |
* |
01FE: BSF 03.5 |
01FF: BSF 03.6 |
0200: MOVF 09,W |
0201: ANDLW C0 |
0202: MOVWF 09 |
0203: BCF 03.6 |
0204: BCF 1F.4 |
0205: BCF 1F.5 |
0206: MOVLW 00 |
0207: BSF 03.6 |
0208: MOVWF 08 |
.................... setup_adc(ADC_CLOCK_DIV_2); |
0209: BCF 03.5 |
020A: BCF 03.6 |
020B: BCF 1F.6 |
020C: BCF 1F.7 |
020D: BSF 03.5 |
020E: BCF 1F.7 |
020F: BCF 03.5 |
0210: BSF 1F.0 |
.................... setup_spi(SPI_SS_DISABLED); |
0211: BCF 14.5 |
0212: BCF 20.5 |
0213: MOVF 20,W |
0214: BSF 03.5 |
0215: MOVWF 07 |
0216: BCF 03.5 |
0217: BSF 20.4 |
0218: MOVF 20,W |
0219: BSF 03.5 |
021A: MOVWF 07 |
021B: BCF 03.5 |
021C: BCF 20.3 |
021D: MOVF 20,W |
021E: BSF 03.5 |
021F: MOVWF 07 |
0220: MOVLW 01 |
0221: BCF 03.5 |
0222: MOVWF 14 |
0223: MOVLW 00 |
0224: BSF 03.5 |
0225: MOVWF 14 |
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
0226: MOVF 01,W |
0227: ANDLW C7 |
0228: IORLW 08 |
0229: MOVWF 01 |
.................... setup_timer_1(T1_DISABLED); |
022A: BCF 03.5 |
022B: CLRF 10 |
.................... setup_timer_2(T2_DISABLED,0,1); |
022C: MOVLW 00 |
022D: MOVWF 78 |
022E: MOVWF 12 |
022F: MOVLW 00 |
0230: BSF 03.5 |
0231: MOVWF 12 |
.................... setup_ccp1(CCP_OFF); |
0232: BCF 03.5 |
0233: BSF 20.2 |
0234: MOVF 20,W |
0235: BSF 03.5 |
0236: MOVWF 07 |
0237: BCF 03.5 |
0238: CLRF 17 |
0239: BSF 03.5 |
023A: CLRF 1B |
023B: CLRF 1C |
023C: MOVLW 01 |
023D: MOVWF 1D |
.................... setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard |
023E: BCF 03.5 |
023F: BSF 03.6 |
0240: CLRF 07 |
0241: CLRF 08 |
0242: CLRF 09 |
.................... |
.................... printf("Simple Thermomether \r\n",); |
0243: MOVLW 04 |
0244: MOVWF 0D |
0245: MOVLW 00 |
0246: MOVWF 0F |
0247: BCF 03.6 |
0248: GOTO 053 |
.................... |
.................... int STAV1; |
.................... unsigned int data1; |
.................... |
.................... |
.................... while(TRUE) |
.................... { |
.................... |
.................... |
.................... |
.................... //akcelerometr |
.................... int1 ack; |
.................... i2c_start(); // If the write command is acknowledged, |
0249: BSF 03.5 |
024A: BSF 06.0 |
024B: NOP |
024C: BSF 06.1 |
024D: NOP |
024E: BCF 03.5 |
024F: BCF 06.0 |
0250: BSF 03.5 |
0251: BCF 06.0 |
0252: NOP |
0253: BCF 03.5 |
0254: BCF 06.1 |
0255: BSF 03.5 |
0256: BCF 06.1 |
.................... ack = i2c_write(0xD1);// then the device is ready. |
0257: MOVLW D1 |
0258: BCF 03.5 |
0259: MOVWF 24 |
025A: CALL 09B |
025B: MOVF 78,W |
025C: BCF 23.0 |
025D: BTFSC 78.0 |
025E: BSF 23.0 |
.................... i2c_stop(); |
025F: BSF 03.5 |
0260: BCF 06.0 |
0261: NOP |
0262: BSF 06.1 |
0263: BCF 03.5 |
0264: BTFSS 06.1 |
0265: GOTO 264 |
0266: NOP |
0267: GOTO 268 |
0268: NOP |
0269: BSF 03.5 |
026A: BSF 06.0 |
026B: NOP |
.................... ack=!ack; |
026C: MOVLW 01 |
026D: BCF 03.5 |
026E: XORWF 23,F |
.................... |
.................... |
.................... |
.................... i2c_stop(); |
026F: BSF 03.5 |
0270: BCF 06.0 |
0271: NOP |
0272: BSF 06.1 |
0273: BCF 03.5 |
0274: BTFSS 06.1 |
0275: GOTO 274 |
0276: NOP |
0277: GOTO 278 |
0278: NOP |
0279: BSF 03.5 |
027A: BSF 06.0 |
027B: NOP |
.................... |
.................... i2c_start(); |
027C: BSF 06.0 |
027D: NOP |
027E: BSF 06.1 |
027F: NOP |
0280: BCF 03.5 |
0281: BCF 06.0 |
0282: BSF 03.5 |
0283: BCF 06.0 |
0284: NOP |
0285: BCF 03.5 |
0286: BCF 06.1 |
0287: BSF 03.5 |
0288: BCF 06.1 |
.................... I2C_Write(0xD0); |
0289: MOVLW D0 |
028A: BCF 03.5 |
028B: MOVWF 24 |
028C: CALL 09B |
.................... I2C_write(0x28); |
028D: MOVLW 28 |
028E: MOVWF 24 |
028F: CALL 09B |
.................... i2c_stop(); |
0290: BSF 03.5 |
0291: BCF 06.0 |
0292: NOP |
0293: BSF 06.1 |
0294: BCF 03.5 |
0295: BTFSS 06.1 |
0296: GOTO 295 |
0297: NOP |
0298: GOTO 299 |
0299: NOP |
029A: BSF 03.5 |
029B: BSF 06.0 |
029C: NOP |
.................... i2c_start(); |
029D: BSF 06.0 |
029E: NOP |
029F: BSF 06.1 |
02A0: NOP |
02A1: BCF 03.5 |
02A2: BCF 06.0 |
02A3: BSF 03.5 |
02A4: BCF 06.0 |
02A5: NOP |
02A6: BCF 03.5 |
02A7: BCF 06.1 |
02A8: BSF 03.5 |
02A9: BCF 06.1 |
.................... I2C_Write(0xD1); |
02AA: MOVLW D1 |
02AB: BCF 03.5 |
02AC: MOVWF 24 |
02AD: CALL 09B |
.................... STAV1=i2c_read(0); |
02AE: CLRF 77 |
02AF: CALL 0CF |
02B0: MOVF 78,W |
02B1: MOVWF 21 |
.................... i2c_stop(); |
02B2: BSF 03.5 |
02B3: BCF 06.0 |
02B4: NOP |
02B5: BSF 06.1 |
02B6: BCF 03.5 |
02B7: BTFSS 06.1 |
02B8: GOTO 2B7 |
02B9: NOP |
02BA: GOTO 2BB |
02BB: NOP |
02BC: BSF 03.5 |
02BD: BSF 06.0 |
02BE: NOP |
.................... |
.................... i2c_start(); |
02BF: BSF 06.0 |
02C0: NOP |
02C1: BSF 06.1 |
02C2: NOP |
02C3: BCF 03.5 |
02C4: BCF 06.0 |
02C5: BSF 03.5 |
02C6: BCF 06.0 |
02C7: NOP |
02C8: BCF 03.5 |
02C9: BCF 06.1 |
02CA: BSF 03.5 |
02CB: BCF 06.1 |
.................... I2C_Write(0xD0); |
02CC: MOVLW D0 |
02CD: BCF 03.5 |
02CE: MOVWF 24 |
02CF: CALL 09B |
.................... I2C_write(0x0F); |
02D0: MOVLW 0F |
02D1: MOVWF 24 |
02D2: CALL 09B |
.................... i2c_stop(); |
02D3: BSF 03.5 |
02D4: BCF 06.0 |
02D5: NOP |
02D6: BSF 06.1 |
02D7: BCF 03.5 |
02D8: BTFSS 06.1 |
02D9: GOTO 2D8 |
02DA: NOP |
02DB: GOTO 2DC |
02DC: NOP |
02DD: BSF 03.5 |
02DE: BSF 06.0 |
02DF: NOP |
.................... i2c_start(); |
02E0: BSF 06.0 |
02E1: NOP |
02E2: BSF 06.1 |
02E3: NOP |
02E4: BCF 03.5 |
02E5: BCF 06.0 |
02E6: BSF 03.5 |
02E7: BCF 06.0 |
02E8: NOP |
02E9: BCF 03.5 |
02EA: BCF 06.1 |
02EB: BSF 03.5 |
02EC: BCF 06.1 |
.................... I2C_Write(0xD1); |
02ED: MOVLW D1 |
02EE: BCF 03.5 |
02EF: MOVWF 24 |
02F0: CALL 09B |
.................... data1=i2c_read(0); |
02F1: CLRF 77 |
02F2: CALL 0CF |
02F3: MOVF 78,W |
02F4: MOVWF 22 |
.................... i2c_stop(); |
02F5: BSF 03.5 |
02F6: BCF 06.0 |
02F7: NOP |
02F8: BSF 06.1 |
02F9: BCF 03.5 |
02FA: BTFSS 06.1 |
02FB: GOTO 2FA |
02FC: NOP |
02FD: GOTO 2FE |
02FE: NOP |
02FF: BSF 03.5 |
0300: BSF 06.0 |
0301: NOP |
.................... |
.................... |
.................... |
.................... |
.................... |
.................... printf("Stav: %d (procenta)\r\n", ack); |
0302: MOVLW 00 |
0303: BCF 03.5 |
0304: BTFSC 23.0 |
0305: MOVLW 01 |
0306: MOVWF 24 |
0307: MOVLW 10 |
0308: BSF 03.6 |
0309: MOVWF 0D |
030A: MOVLW 00 |
030B: MOVWF 0F |
030C: BCF 03.0 |
030D: MOVLW 06 |
030E: BCF 03.6 |
030F: MOVWF 25 |
0310: CALL 102 |
0311: MOVF 24,W |
0312: MOVWF 25 |
0313: MOVLW 1F |
0314: MOVWF 26 |
0315: CALL 166 |
0316: MOVLW 14 |
0317: BSF 03.6 |
0318: MOVWF 0D |
0319: MOVLW 00 |
031A: MOVWF 0F |
031B: BCF 03.0 |
031C: MOVLW 0D |
031D: BCF 03.6 |
031E: MOVWF 25 |
031F: CALL 102 |
.................... printf("Stav: %d (procenta)\r\n", STAV1); |
0320: MOVLW 1B |
0321: BSF 03.6 |
0322: MOVWF 0D |
0323: MOVLW 00 |
0324: MOVWF 0F |
0325: BCF 03.0 |
0326: MOVLW 06 |
0327: BCF 03.6 |
0328: MOVWF 25 |
0329: CALL 102 |
032A: MOVF 21,W |
032B: MOVWF 25 |
032C: MOVLW 1F |
032D: MOVWF 26 |
032E: CALL 166 |
032F: MOVLW 1F |
0330: BSF 03.6 |
0331: MOVWF 0D |
0332: MOVLW 00 |
0333: MOVWF 0F |
0334: BCF 03.0 |
0335: MOVLW 0D |
0336: BCF 03.6 |
0337: MOVWF 25 |
0338: CALL 102 |
.................... printf("Stav: %du(procenta)\r\n", data1); |
0339: MOVLW 26 |
033A: BSF 03.6 |
033B: MOVWF 0D |
033C: MOVLW 00 |
033D: MOVWF 0F |
033E: BCF 03.0 |
033F: MOVLW 06 |
0340: BCF 03.6 |
0341: MOVWF 25 |
0342: CALL 102 |
0343: MOVF 22,W |
0344: MOVWF 25 |
0345: MOVLW 1F |
0346: MOVWF 26 |
0347: CALL 166 |
0348: MOVLW 2A |
0349: BSF 03.6 |
034A: MOVWF 0D |
034B: MOVLW 00 |
034C: MOVWF 0F |
034D: BCF 03.0 |
034E: MOVLW 0D |
034F: BCF 03.6 |
0350: MOVWF 25 |
0351: CALL 102 |
.................... delay_ms (2000); |
0352: MOVLW 08 |
0353: MOVWF 24 |
0354: MOVLW FA |
0355: MOVWF 25 |
0356: GOTO 1CB |
0357: DECFSZ 24,F |
0358: GOTO 354 |
.................... |
.................... } |
0359: GOTO 249 |
.................... } |
035A: SLEEP |
Configuration Fuses: |
Word 1: 2CF5 INTRC NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUG |
Word 2: 3FFF NOWRT BORV40 |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.pjt |
---|
0,0 → 1,24 |
[PROJECT] |
Target=C:\Users\Honza\Documents\pic\I2C_gyrsokop\main.hex |
Development_Mode= |
Processor_Text=PIC16F887 |
ToolSuite=CCS |
Processor=0x887F |
[C:\Users\Honza\Documents\pic\I2C_gyrsokop\main] |
Type=4 |
Path= |
FileList= |
BuildTool= |
OptionString= |
AdditionalOptionString= |
[mru-list] |
1=C:\Users\Honza\Documents\pic\I2C_gyrsokop\main.c |
[Windows] |
0=0000 %S 0 0 796 451 3 0 |
[Units] |
Link=0 |
Count=1 |
1=C:\Users\Honza\Documents\pic\I2C_gyrsokop\main |
[Opened Files] |
1=main.c |
2= |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.sta |
---|
0,0 → 1,58 |
ROM used: 859 (10%) |
859 (10%) including unused fragments |
2 Average locations per line |
23 Average locations per statement |
RAM used: 7 (2%) at main() level |
19 (5%) worst case |
Stack used: 2 worst case (out of 8 total available) |
Lines Stmts % Files |
----- ----- --- ----- |
71 37 100 main.c |
20 0 0 ..\I2C_magnetometr\main.h |
423 0 0 ..\..\..\..\..\Program Files (x86)\PICC\devices\16F887.h |
----- ----- |
514 37 Total |
Page ROM % RAM Vol Diff Functions: |
---- --- --- --- --- ---- ---------- |
0 22 3 1 @delay_ms1 |
0 51 6 3 @I2C_READ_1 |
0 52 6 1 @I2C_WRITE_1 |
0 34 4 1 @PUTCHAR_1_ |
0 378 44 1 1045 3.9 main |
0 12 1 0 @const78 |
0 72 8 3 @PSTRINGC7_68 |
0 11 1 0 @const83 |
0 79 9 4 @PSTRINGCN7_68 |
0 21 2 3 @DIV88 |
0 101 12 6 @PRINTF_D_68 |
0 11 1 0 @const92 |
0 11 1 0 @const93 |
Program metrics: |
Functions 1 |
Statements 37 |
Comments 87 |
Volume (V) 1076 |
Difficilty (D) 3.4 |
Effort to implement (E) 3626 |
Time to implement (T) 3 minutes |
Est Delivered Bugs (B) 0 |
Cyclomatic Complexity 1 |
Maintainability (MI) 124 |
Segment Used Free |
----------- ---- ---- |
00000-00003 4 0 |
00004-007FF 855 1189 |
00800-00FFF 0 2048 |
01000-017FF 0 2048 |
01800-01FFF 0 2048 |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.sym |
---|
0,0 → 1,95 |
004 @WRITE_PROGRAM_MEMORY8.P1 |
004-005 @READ_PROGRAM_MEMORY8.P2 |
015 CCP_1_LOW |
015 CCP_1 |
016 CCP_1_HIGH |
01B CCP_2 |
01B CCP_2_LOW |
01C CCP_2_HIGH |
020 @TRIS_C |
021 main.STAV1 |
022 main.data1 |
023.0 ack |
024 @I2C_READ_1.P1 |
024 @I2C_WRITE_1.P2 |
024 main.@SCRATCH1 |
024 @PSTRINGC7_68.@SCRATCH1 |
025 @delay_ms1.P1 |
025 @PRINTF_D_68.P2 |
025 @PSTRINGCN7_68.P3 |
025 @I2C_READ_1.@SCRATCH1 |
025 @PSTRINGC7_68.@SCRATCH2 |
026 @PRINTF_D_68.P1 |
026 @I2C_READ_1.@SCRATCH2 |
026 @PSTRINGC7_68.@SCRATCH3 |
026 @PSTRINGCN7_68.@SCRATCH1 |
027 @PSTRINGCN7_68.@SCRATCH2 |
027 @PRINTF_D_68.@SCRATCH1 |
028 @PSTRINGCN7_68.@SCRATCH3 |
028 @PRINTF_D_68.@SCRATCH2 |
029 @PRINTF_D_68.@SCRATCH3 |
02A @PRINTF_D_68.@SCRATCH4 |
02B @PUTCHAR_1_.P1 |
02B @DIV88.P2 |
02C @DIV88.P1 |
02D @DIV88.@SCRATCH1 |
077 @SCRATCH |
078 @SCRATCH |
078 _RETURN_ |
079 @SCRATCH |
07A @SCRATCH |
107.6 C1OUT |
108.6 C2OUT |
10D-10E @READ_PROGRAM_MEMORY8.P1 |
10D-10E @WRITE_PROGRAM_MEMORY8.P2 |
ROM Allocation: |
01CB @delay_ms1 |
00CF @I2C_READ_1 |
009B @I2C_WRITE_1 |
0031 @PUTCHAR_1_ |
01E1 main |
0004 @const78 |
0053 @PSTRINGC7_68 |
0010 @const83 |
0102 @PSTRINGCN7_68 |
0151 @DIV88 |
0166 @PRINTF_D_68 |
001B @const92 |
0026 @const93 |
01E1 @cinit |
User Memory space: |
User Memory space: |
Project Directory: |
C:\Users\Honza\Documents\pic\I2C_gyrsokop\ |
Project Files: |
main.c |
..\I2C_magnetometr\main.h |
..\..\..\..\..\Program Files (x86)\PICC\devices\16F887.h |
Units: |
C:\Users\Honza\Documents\pic\I2C_gyrsokop\main (main) |
Compiler Settings: |
Processor: PIC16F887 |
Pointer Size: 16 |
ADC Range: 0-255 |
Opt Level: 9 |
Short,Int,Long: UNSIGNED: 1,8,16 |
Float,Double: 32,32 |
Output Files: |
Errors: main.err |
Ext Symbols: main.esym |
INHX8: main.hex |
Symbols: main.sym |
List: main.lst |
Debug/COFF: main.cof |
Project: main.PJT |
Call Tree: main.tre |
Statistics: main.sta |
/Modules/Sensors/IMU01A/SW/PIC16F887/Gyroskop/main.tre |
---|
0,0 → 1,55 |
ÀÄmain |
ÀÄmain 0/378 Ram=1 |
ÃÄ??0?? |
ÃÄ@PSTRINGC7_68 0/72 Ram=3 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/34 Ram=1 |
ÃÄ@I2C_WRITE_1 0/52 Ram=1 |
ÃÄ@I2C_WRITE_1 0/52 Ram=1 |
ÃÄ@I2C_WRITE_1 0/52 Ram=1 |
ÃÄ@I2C_WRITE_1 0/52 Ram=1 |
ÃÄ@I2C_READ_1 0/51 Ram=3 |
ÃÄ@I2C_WRITE_1 0/52 Ram=1 |
ÃÄ@I2C_WRITE_1 0/52 Ram=1 |
ÃÄ@I2C_WRITE_1 0/52 Ram=1 |
ÃÄ@I2C_READ_1 0/51 Ram=3 |
ÃÄ@PSTRINGCN7_68 0/79 Ram=4 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/34 Ram=1 |
ÃÄ@PRINTF_D_68 0/101 Ram=6 |
³ ÃÄ@DIV88 0/21 Ram=3 |
³ ÃÄ@DIV88 0/21 Ram=3 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/34 Ram=1 |
ÃÄ@PSTRINGCN7_68 0/79 Ram=4 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/34 Ram=1 |
ÃÄ@PSTRINGCN7_68 0/79 Ram=4 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/34 Ram=1 |
ÃÄ@PRINTF_D_68 0/101 Ram=6 |
³ ÃÄ@DIV88 0/21 Ram=3 |
³ ÃÄ@DIV88 0/21 Ram=3 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/34 Ram=1 |
ÃÄ@PSTRINGCN7_68 0/79 Ram=4 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/34 Ram=1 |
ÃÄ@PSTRINGCN7_68 0/79 Ram=4 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/34 Ram=1 |
ÃÄ@PRINTF_D_68 0/101 Ram=6 |
³ ÃÄ@DIV88 0/21 Ram=3 |
³ ÃÄ@DIV88 0/21 Ram=3 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/34 Ram=1 |
ÃÄ@PSTRINGCN7_68 0/79 Ram=4 |
³ ÃÄ@PUTCHAR_1_ 0/34 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/34 Ram=1 |
ÀÄ@delay_ms1 0/22 Ram=1 |
/Modules/Sensors/IMU01A/SW/PIC16F887/MMA8451Q.h |
---|
0,0 → 1,14 |
//Adresa obvodu |
#define AK_W 0x38 //adresa akcelerometru zápis |
#define AK_R 0x39 //adresa akcelerometru ètení |
#define AK_XH 0x01 //osa X MSB |
#define AK_XL 0x02 //osa X LSB |
#define AK_YH 0x03 //osa Y MSB |
#define AK_YL 0x04 //osa Y LSB |
#define AK_ZH 0x05 //osa Z MSB |
#define AK_ZL 0x06 //osa Z LSB |
#include "MMA8451Q.c" |
/Modules/Sensors/IMU01A/SW/PIC16F887/MMA8451Q.c |
---|
0,0 → 1,59 |
void setAK (void) //nastaveni akcelerometru |
{ |
i2c_start(); |
I2C_Write(AK_W); |
I2C_write(0x2A); |
I2C_write(0x01); //nastavi aktivni stav |
i2c_stop(); |
} |
int16 akR (int8 H, int8 L) //vycitani hodnot z akcelerometru |
{ |
unsigned int8 XL=0,XH=0; |
signed int16 x; |
i2c_start(); |
I2C_Write(AK_W); |
I2C_write(H); |
i2c_start(); |
I2C_Write(AK_R); |
XH=i2c_read(0); |
i2c_stop(); |
i2c_start(); |
I2C_Write(AK_W); |
I2C_write(L); |
i2c_start(); |
I2C_Write(AK_R); |
XL=i2c_read(0); |
i2c_stop(); |
x = (((unsigned int16) XH << 8) + XL ); //prevod na 16bit hodnotu |
x=x/4; |
return x; |
} |
int16 akX (void) |
{ |
int16 X; |
X= akR (AK_XH, AK_XL); |
return X; |
} |
int16 akY (void) |
{ |
int16 Y; |
Y= akR (AK_YH, AK_YL); |
return Y; |
} |
int16 akZ (void) |
{ |
int16 Z; |
Z= akR (AK_ZH, AK_ZL); |
return Z; |
} |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.bak |
---|
0,0 → 1,56 |
//Akcelerometr IMU01A |
//(c) MLAB Jan Chroust 2013 |
#include <main.h> |
#define PIN_SDA PIN_C4 |
#define PIN_SCL PIN_C3 |
#use i2c(master, sda=PIN_SDA, scl=PIN_SCL) //I2C |
#use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD |
#include <math.h> |
#include <MMA8451Q.h> |
//Akcelerometr |
#define AK_W 0x38 //adresa akcelerometru zápis |
#define AK_R 0x39 //adresa akcelerometru ètení |
#define AK_XH 0x01 //osa X LSB |
#define AK_XL 0x02 //osa X MSB |
#define AK_YH 0x03 //osa Y LSB |
#define AK_YL 0x04 //osa Y MSB |
#define AK_ZH 0x05 //osa Z LSB |
#define AK_ZL 0x06 //osa Z MSB |
signed int16 X, Y, Z; //promenne pro akcelerometr |
void main() |
{ |
setup_adc_ports(NO_ANALOGS|VSS_VDD); |
setup_adc(ADC_CLOCK_DIV_2); |
setup_spi(SPI_SS_DISABLED); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
setup_timer_1(T1_DISABLED); |
setup_timer_2(T2_DISABLED,0,1); |
setup_ccp1(CCP_OFF); |
setup_comparator(NC_NC_NC_NC); |
setAK(); //nastaveni akcelerometru |
printf("Akcelerometr IMU01A - MMA8451Q \r\n",); |
printf("(c) MLAB JACHO 2013 \r\n",); |
while(TRUE) |
{ |
X=akX (); |
Y=akY (); |
Z=akZ (); |
printf("Namerene hodnoty: \r\n",); |
printf("Osa X: %Ld \r\n",X); |
printf("Osa Y: %Ld \r\n",Y); |
printf("Osa Z: %Ld \r\n",Z); |
delay_ms (2000); |
} |
} |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.c |
---|
0,0 → 1,45 |
//Akcelerometr IMU01A |
//(c) MLAB Jan Chroust 2013 |
#include <main.h> |
#define PIN_SDA PIN_C4 |
#define PIN_SCL PIN_C3 |
#use i2c(master, sda=PIN_SDA, scl=PIN_SCL) //I2C |
#use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD |
#include <math.h> |
#include <MMA8451Q.h> |
signed int16 X, Y, Z; //promenne pro akcelerometr |
void main() |
{ |
setup_adc_ports(NO_ANALOGS|VSS_VDD); |
setup_adc(ADC_CLOCK_DIV_2); |
setup_spi(SPI_SS_DISABLED); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
setup_timer_1(T1_DISABLED); |
setup_timer_2(T2_DISABLED,0,1); |
setup_ccp1(CCP_OFF); |
setup_comparator(NC_NC_NC_NC); |
setAK(); //nastaveni akcelerometru |
printf("Akcelerometr IMU01A - MMA8451Q \r\n",); |
printf("(c) MLAB JACHO 2013 \r\n",); |
while(TRUE) |
{ |
X=akX (); |
Y=akY (); |
Z=akZ (); |
printf("Namerene hodnoty: \r\n",); |
printf("Osa X: %Ld \r\n",X); |
printf("Osa Y: %Ld \r\n",Y); |
printf("Osa Z: %Ld \r\n",Z); |
delay_ms (2000); |
} |
} |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.cof |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.err |
---|
0,0 → 1,2 |
Memory usage: ROM=14% RAM=4% - 7% |
0 Errors, 0 Warnings. |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.esym |
---|
0,0 → 1,590 |
D G "__PCM__" 0 58 ""4.106"" |
D G "__DEVICE__" 0 58 "887" |
D G "__DATE__" 0 58 ""11-5-13"" |
D G "__TIME__" 0 58 ""10:50:06"" "Akcelerometr IMU01A" |
d G "PIN_A0" 2 20 "40" |
d G "PIN_A1" 2 21 "41" |
d G "PIN_A2" 2 22 "42" |
d G "PIN_A3" 2 23 "43" |
d G "PIN_A4" 2 24 "44" |
d G "PIN_A5" 2 25 "45" |
d G "PIN_A6" 2 26 "46" |
d G "PIN_A7" 2 27 "47" |
d G "PIN_B0" 2 29 "48" |
d G "PIN_B1" 2 30 "49" |
d G "PIN_B2" 2 31 "50" |
d G "PIN_B3" 2 32 "51" |
d G "PIN_B4" 2 33 "52" |
d G "PIN_B5" 2 34 "53" |
d G "PIN_B6" 2 35 "54" |
d G "PIN_B7" 2 36 "55" |
d G "PIN_C0" 2 38 "56" |
d G "PIN_C1" 2 39 "57" |
d G "PIN_C2" 2 40 "58" |
d G "PIN_C3" 2 41 "59" |
d G "PIN_C4" 2 42 "60" |
d G "PIN_C5" 2 43 "61" |
d G "PIN_C6" 2 44 "62" |
d G "PIN_C7" 2 45 "63" |
d G "PIN_D0" 2 47 "64" |
d G "PIN_D1" 2 48 "65" |
d G "PIN_D2" 2 49 "66" |
d G "PIN_D3" 2 50 "67" |
d G "PIN_D4" 2 51 "68" |
d G "PIN_D5" 2 52 "69" |
d G "PIN_D6" 2 53 "70" |
d G "PIN_D7" 2 54 "71" |
d G "PIN_E0" 2 56 "72" |
d G "PIN_E1" 2 57 "73" |
d G "PIN_E2" 2 58 "74" |
d G "PIN_E3" 2 59 "75" |
d G "FALSE" 2 62 "0" |
d G "TRUE" 2 63 "1" |
d G "BYTE" 2 65 "int8" |
d G "BOOLEAN" 2 66 "int1" |
d G "getc" 2 68 "getch" |
d G "fgetc" 2 69 "getch" |
d G "getchar" 2 70 "getch" |
d G "putc" 2 71 "putchar" |
d G "fputc" 2 72 "putchar" |
d G "fgets" 2 73 "gets" |
d G "fputs" 2 74 "puts" |
d G "WDT_FROM_SLEEP" 2 79 "3" |
d G "WDT_TIMEOUT" 2 80 "11" |
d G "MCLR_FROM_SLEEP" 2 81 "19" |
d G "MCLR_FROM_RUN" 2 82 "27" |
d G "NORMAL_POWER_UP" 2 83 "25" |
d G "BROWNOUT_RESTART" 2 84 "26" |
d G "T0_INTERNAL" 2 91 "0" |
d G "T0_EXT_L_TO_H" 2 92 "32" |
d G "T0_EXT_H_TO_L" 2 93 "48" |
d G "T0_DIV_1" 2 95 "8" |
d G "T0_DIV_2" 2 96 "0" |
d G "T0_DIV_4" 2 97 "1" |
d G "T0_DIV_8" 2 98 "2" |
d G "T0_DIV_16" 2 99 "3" |
d G "T0_DIV_32" 2 100 "4" |
d G "T0_DIV_64" 2 101 "5" |
d G "T0_DIV_128" 2 102 "6" |
d G "T0_DIV_256" 2 103 "7" |
d G "T0_8_BIT" 2 106 "0" |
d G "RTCC_INTERNAL" 2 108 "0" "The following are provided for compatibility" |
d G "RTCC_EXT_L_TO_H" 2 109 "32" "with older compiler versions" |
d G "RTCC_EXT_H_TO_L" 2 110 "48" |
d G "RTCC_DIV_1" 2 111 "8" |
d G "RTCC_DIV_2" 2 112 "0" |
d G "RTCC_DIV_4" 2 113 "1" |
d G "RTCC_DIV_8" 2 114 "2" |
d G "RTCC_DIV_16" 2 115 "3" |
d G "RTCC_DIV_32" 2 116 "4" |
d G "RTCC_DIV_64" 2 117 "5" |
d G "RTCC_DIV_128" 2 118 "6" |
d G "RTCC_DIV_256" 2 119 "7" |
d G "RTCC_8_BIT" 2 120 "0" |
d G "WDT_18MS" 2 132 "8" |
d G "WDT_36MS" 2 133 "9" |
d G "WDT_72MS" 2 134 "10" |
d G "WDT_144MS" 2 135 "11" |
d G "WDT_288MS" 2 136 "12" |
d G "WDT_576MS" 2 137 "13" |
d G "WDT_1152MS" 2 138 "14" |
d G "WDT_2304MS" 2 139 "15" |
d G "WDT_ON" 2 143 "0x4100" |
d G "WDT_OFF" 2 144 "0" |
d G "WDT_DIV_16" 2 145 "0x100" |
d G "WDT_DIV_8" 2 146 "0x300" |
d G "WDT_DIV_4" 2 147 "0x500" |
d G "WDT_DIV_2" 2 148 "0x700" |
d G "WDT_TIMES_1" 2 149 "0x900" "Default" |
d G "WDT_TIMES_2" 2 150 "0xB00" |
d G "WDT_TIMES_4" 2 151 "0xD00" |
d G "WDT_TIMES_8" 2 152 "0xF00" |
d G "WDT_TIMES_16" 2 153 "0x1100" |
d G "WDT_TIMES_32" 2 154 "0x1300" |
d G "WDT_TIMES_64" 2 155 "0x1500" |
d G "WDT_TIMES_128" 2 156 "0x1700" |
d G "T1_DISABLED" 2 162 "0" |
d G "T1_INTERNAL" 2 163 "5" |
d G "T1_EXTERNAL" 2 164 "7" |
d G "T1_EXTERNAL_SYNC" 2 165 "3" |
d G "T1_CLK_OUT" 2 167 "8" |
d G "T1_DIV_BY_1" 2 169 "0" |
d G "T1_DIV_BY_2" 2 170 "0x10" |
d G "T1_DIV_BY_4" 2 171 "0x20" |
d G "T1_DIV_BY_8" 2 172 "0x30" |
d G "T1_GATE" 2 174 "0x40" |
d G "T1_GATE_INVERTED" 2 175 "0xC0" |
d G "T2_DISABLED" 2 180 "0" |
d G "T2_DIV_BY_1" 2 181 "4" |
d G "T2_DIV_BY_4" 2 182 "5" |
d G "T2_DIV_BY_16" 2 183 "6" |
d G "CCP_OFF" 2 189 "0" |
d G "CCP_CAPTURE_FE" 2 190 "4" |
d G "CCP_CAPTURE_RE" 2 191 "5" |
d G "CCP_CAPTURE_DIV_4" 2 192 "6" |
d G "CCP_CAPTURE_DIV_16" 2 193 "7" |
d G "CCP_COMPARE_SET_ON_MATCH" 2 194 "8" |
d G "CCP_COMPARE_CLR_ON_MATCH" 2 195 "9" |
d G "CCP_COMPARE_INT" 2 196 "0xA" |
d G "CCP_COMPARE_RESET_TIMER" 2 197 "0xB" |
d G "CCP_PWM" 2 198 "0xC" |
d G "CCP_PWM_PLUS_1" 2 199 "0x1c" |
d G "CCP_PWM_PLUS_2" 2 200 "0x2c" |
d G "CCP_PWM_PLUS_3" 2 201 "0x3c" |
d G "CCP_PWM_H_H" 2 206 "0x0c" |
d G "CCP_PWM_H_L" 2 207 "0x0d" |
d G "CCP_PWM_L_H" 2 208 "0x0e" |
d G "CCP_PWM_L_L" 2 209 "0x0f" |
d G "CCP_PWM_FULL_BRIDGE" 2 211 "0x40" |
d G "CCP_PWM_FULL_BRIDGE_REV" 2 212 "0xC0" |
d G "CCP_PWM_HALF_BRIDGE" 2 213 "0x80" |
d G "CCP_SHUTDOWN_ON_COMP1" 2 215 "0x100000" |
d G "CCP_SHUTDOWN_ON_COMP2" 2 216 "0x200000" |
d G "CCP_SHUTDOWN_ON_COMP" 2 217 "0x300000" |
d G "CCP_SHUTDOWN_ON_INT0" 2 218 "0x400000" |
d G "CCP_SHUTDOWN_ON_COMP1_INT0" 2 219 "0x500000" |
d G "CCP_SHUTDOWN_ON_COMP2_INT0" 2 220 "0x600000" |
d G "CCP_SHUTDOWN_ON_COMP_INT0" 2 221 "0x700000" |
d G "CCP_SHUTDOWN_AC_L" 2 223 "0x000000" |
d G "CCP_SHUTDOWN_AC_H" 2 224 "0x040000" |
d G "CCP_SHUTDOWN_AC_F" 2 225 "0x080000" |
d G "CCP_SHUTDOWN_BD_L" 2 227 "0x000000" |
d G "CCP_SHUTDOWN_BD_H" 2 228 "0x010000" |
d G "CCP_SHUTDOWN_BD_F" 2 229 "0x020000" |
d G "CCP_SHUTDOWN_RESTART" 2 231 "0x80000000" |
d G "CCP_PULSE_STEERING_A" 2 233 "0x01000000" |
d G "CCP_PULSE_STEERING_B" 2 234 "0x02000000" |
d G "CCP_PULSE_STEERING_C" 2 235 "0x04000000" |
d G "CCP_PULSE_STEERING_D" 2 236 "0x08000000" |
d G "CCP_PULSE_STEERING_SYNC" 2 237 "0x10000000" |
d G "SPI_MASTER" 2 245 "0x20" |
d G "SPI_SLAVE" 2 246 "0x24" |
d G "SPI_L_TO_H" 2 247 "0" |
d G "SPI_H_TO_L" 2 248 "0x10" |
d G "SPI_CLK_DIV_4" 2 249 "0" |
d G "SPI_CLK_DIV_16" 2 250 "1" |
d G "SPI_CLK_DIV_64" 2 251 "2" |
d G "SPI_CLK_T2" 2 252 "3" |
d G "SPI_SS_DISABLED" 2 253 "1" |
d G "SPI_SAMPLE_AT_END" 2 255 "0x8000" |
d G "SPI_XMIT_L_TO_H" 2 256 "0x4000" |
d G "UART_ADDRESS" 2 262 "2" |
d G "UART_DATA" 2 263 "4" |
d G "UART_AUTODETECT" 2 264 "8" |
d G "UART_AUTODETECT_NOWAIT" 2 265 "9" |
d G "UART_WAKEUP_ON_RDA" 2 266 "10" |
d G "UART_SEND_BREAK" 2 267 "13" |
d G "NC_NC_NC_NC" 2 273 "0x00" |
d G "NC_NC" 2 274 "0x00" |
d G "CP1_A0_A3" 2 277 "0x00090080" |
d G "CP1_A1_A3" 2 278 "0x000A0081" |
d G "CP1_B3_A3" 2 279 "0x00880082" |
d G "CP1_B1_A3" 2 280 "0x00280083" |
d G "CP1_A0_VREF" 2 281 "0x00010084" |
d G "CP1_A1_VREF" 2 282 "0x00020085" |
d G "CP1_B3_VREF" 2 283 "0x00800086" |
d G "CP1_B1_VREF" 2 284 "0x00200087" |
d G "CP1_OUT_ON_A4" 2 286 "0x00000020" |
d G "CP1_INVERT" 2 287 "0x00000010" |
d G "CP1_ABSOLUTE_VREF" 2 288 "0x20000000" |
d G "CP2_A0_A2" 2 291 "0x00058000" |
d G "CP2_A1_A2" 2 292 "0x00068100" |
d G "CP2_B3_A2" 2 293 "0x00848200" |
d G "CP2_B1_A2" 2 294 "0x00248300" |
d G "CP2_A0_VREF" 2 295 "0x00018400" |
d G "CP2_A1_VREF" 2 296 "0x00028500" |
d G "CP2_B3_VREF" 2 297 "0x00808600" |
d G "CP2_B1_VREF" 2 298 "0x00208700" |
d G "CP2_OUT_ON_A5" 2 300 "0x00002000" |
d G "CP2_INVERT" 2 301 "0x00001000" |
d G "CP2_ABSOLUTE_VREF" 2 302 "0x10000000" |
d G "CP2_T1_SYNC" 2 305 "0x01000000" |
d G "CP2_T1_GATE" 2 306 "0x02000000" |
d G "VREF_LOW" 2 315 "0xa0" |
d G "VREF_HIGH" 2 316 "0x80" |
d G "OSC_31KHZ" 2 322 "1" |
d G "OSC_125KHZ" 2 323 "0x11" |
d G "OSC_250KHZ" 2 324 "0x21" |
d G "OSC_500KHZ" 2 325 "0x31" |
d G "OSC_1MHZ" 2 326 "0x41" |
d G "OSC_2MHZ" 2 327 "0x51" |
d G "OSC_4MHZ" 2 328 "0x61" |
d G "OSC_8MHZ" 2 329 "0x71" |
d G "OSC_INTRC" 2 330 "1" |
d G "OSC_NORMAL" 2 331 "0" |
d G "OSC_STATE_STABLE" 2 333 "4" |
d G "OSC_31KHZ_STABLE" 2 334 "2" |
d G "ADC_OFF" 2 342 "0" "ADC Off" |
d G "ADC_CLOCK_DIV_2" 2 343 "0x100" |
d G "ADC_CLOCK_DIV_8" 2 344 "0x40" |
d G "ADC_CLOCK_DIV_32" 2 345 "0x80" |
d G "ADC_CLOCK_INTERNAL" 2 346 "0xc0" "Internal 2-6us" |
d G "sAN0" 2 350 "1" "| A0" |
d G "sAN1" 2 351 "2" "| A1" |
d G "sAN2" 2 352 "4" "| A2" |
d G "sAN3" 2 353 "8" "| A3" |
d G "sAN4" 2 354 "16" "| A5" |
d G "sAN5" 2 355 "32" "| E0" |
d G "sAN6" 2 356 "64" "| E1" |
d G "sAN7" 2 357 "128" "| E2" |
d G "sAN8" 2 358 "0x10000" "| B2" |
d G "sAN9" 2 359 "0x20000" "| B3" |
d G "sAN10" 2 360 "0x40000" "| B1" |
d G "sAN11" 2 361 "0x80000" "| B4" |
d G "sAN12" 2 362 "0x100000" "| B0" |
d G "sAN13" 2 363 "0x200000" "| B5" |
d G "NO_ANALOGS" 2 364 "0" "None" |
d G "ALL_ANALOG" 2 365 "0x1F00FF" "A0 A1 A2 A3 A5 E0 E1 E2 B0 B1 B2 B3 B4 B5" |
d G "VSS_VDD" 2 368 "0x0000" "| Range 0-Vdd" |
d G "VSS_VREF" 2 369 "0x1000" "| Range 0-Vref" |
d G "VREF_VREF" 2 370 "0x3000" "| Range Vref-Vref" |
d G "VREF_VDD" 2 371 "0x2000" "| Range Vref-Vdd" |
d G "ADC_START_AND_READ" 2 375 "7" "This is the default if nothing is specified" |
d G "ADC_START_ONLY" 2 376 "1" |
d G "ADC_READ_ONLY" 2 377 "6" |
d G "L_TO_H" 2 389 "0x40" |
d G "H_TO_L" 2 390 "0" |
d G "GLOBAL" 2 392 "0x0BC0" |
d G "INT_RTCC" 2 393 "0x000B20" |
d G "INT_RB" 2 394 "0x01FF0B08" |
d G "INT_EXT_L2H" 2 395 "0x50000B10" |
d G "INT_EXT_H2L" 2 396 "0x60000B10" |
d G "INT_EXT" 2 397 "0x000B10" |
d G "INT_AD" 2 398 "0x008C40" |
d G "INT_TBE" 2 399 "0x008C10" |
d G "INT_RDA" 2 400 "0x008C20" |
d G "INT_TIMER1" 2 401 "0x008C01" |
d G "INT_TIMER2" 2 402 "0x008C02" |
d G "INT_CCP1" 2 403 "0x008C04" |
d G "INT_CCP2" 2 404 "0x008D01" |
d G "INT_SSP" 2 405 "0x008C08" |
d G "INT_BUSCOL" 2 406 "0x008D08" |
d G "INT_EEPROM" 2 407 "0x008D10" |
d G "INT_TIMER0" 2 408 "0x000B20" |
d G "INT_OSC_FAIL" 2 409 "0x008D80" |
d G "INT_COMP" 2 410 "0x008D20" |
d G "INT_COMP2" 2 411 "0x008D40" |
d G "INT_ULPWU" 2 412 "0x008D04" |
d G "INT_RB0" 2 413 "0x0010B08" |
d G "INT_RB1" 2 414 "0x0020B08" |
d G "INT_RB2" 2 415 "0x0040B08" |
d G "INT_RB3" 2 416 "0x0080B08" |
d G "INT_RB4" 2 417 "0x0100B08" |
d G "INT_RB5" 2 418 "0x0200B08" |
d G "INT_RB6" 2 419 "0x0400B08" |
d G "INT_RB7" 2 420 "0x0800B08" |
D G "PIN_SDA" 0 7 "PIN_C4" |
D G "PIN_SCL" 0 8 "PIN_C3" |
D G "MATH_H" 3 21 "" |
D G "PI" 3 26 "3.1415926535897932" |
D G "SQRT2" 3 29 "1.4142135623730950" |
C L "CEIL_FLOOR" 3 2 3 "FUNCTION" |
F G "CEIL_FLOOR" 3 36 "float(float x,int8 n)" |
V L "x" 3 36 "float" |
V L "n" 3 36 "int8" |
V L "y" 3 38 "float" |
V L "res" 3 38 "float" |
V L "l" 3 39 "int16" |
V L "s" 3 40 "int1" |
C L "floor" 3 2 5 "FUNCTION" |
F G "floor" 3 192 "float(float x)" |
V L "x" 3 192 "float" |
C L "ceil" 3 2 5 "FUNCTION" |
F G "ceil" 3 218 "float(float x)" |
V L "x" 3 218 "float" |
D G "fabs" 3 244 "abs" |
C L "fmod" 3 2 6 "FUNCTION" |
F G "fmod" 3 256 "float(float x,float y)" |
V L "x" 3 256 "float" |
V L "y" 3 256 "float" |
V L "i" 3 258 "float" |
D G "LN2" 3 319 "0.6931471805599453" |
V G "pe" 3 321 "float[6]" |
F G "exp" 3 325 "float(float x)" |
V L "x" 3 325 "float" |
V L "y" 3 327 "float" |
V L "res" 3 327 "float" |
V L "r" 3 327 "float" |
V L "n" 3 331 "sint8" |
V L "s" 3 332 "int1" |
C L "exp" 3 2 1 "FUNCTION" |
V G "pl" 3 496 "float[4]" |
V G "ql" 3 497 "float[4]" |
C L "log" 3 2 3 "FUNCTION" |
F G "log" 3 505 "float(float x)" |
V L "x" 3 505 "float" |
V L "y" 3 507 "float" |
V L "res" 3 507 "float" |
V L "r" 3 507 "float" |
V L "y2" 3 507 "float" |
V L "n" 3 511 "sint8" |
C L "log" 3 2 1 "FUNCTION" |
D G "LN10" 3 729 "2.3025850929940456" |
C L "log10" 3 2 3 "FUNCTION" |
F G "log10" 3 737 "float(float x)" |
V L "x" 3 737 "float" |
V L "r" 3 739 "float" |
C L "modf" 3 2 8 "FUNCTION" |
F G "modf" 3 778 "float(float value,*float iptr)" |
V L "value" 3 778 "float" |
V L "iptr" 3 778 "*float" |
C L "pwr" 3 2 6 "FUNCTION" |
F G "pwr" 3 806 "float(float x,float y)" |
V L "x" 3 806 "float" |
V L "y" 3 806 "float" |
C L "pow" 3 2 7 "FUNCTION" |
F G "pow" 3 869 "float(float x,float y)" |
V L "x" 3 869 "float" |
V L "y" 3 869 "float" |
C L "sqrt" 3 2 5 "FUNCTION" |
F G "sqrt" 3 930 "float(float x)" |
V L "x" 3 930 "float" |
V L "y" 3 932 "float" |
V L "res" 3 932 "float" |
V L "p" 3 936 "*int8" |
D G "PI_DIV_BY_TWO" 3 1125 "1.5707963267948966" |
C L "cos" 3 2 3 "FUNCTION" |
F G "cos" 3 1136 "float(float x)" |
V L "x" 3 1136 "float" |
V L "y" 3 1138 "float" |
V L "t" 3 1138 "float" |
V L "t2" 3 1138 "float" |
V L "quad" 3 1139 "int8" |
V L "i" 3 1139 "int8" |
V L "frac" 3 1140 "float" |
V L "p" 3 1141 "float[6]" "by the series definition for cosine" |
C L "cos" 3 2 1 "FUNCTION" |
C L "cos" 3 2 2 "FUNCTION" |
C L "cos" 3 2 1 "FUNCTION" |
C L "cos" 3 2 1 "FUNCTION" |
C L "cos" 3 2 1 "FUNCTION" |
C L "cos" 3 2 1 "FUNCTION" |
C L "cos" 3 2 1 "FUNCTION" |
C L "cos" 3 2 1 "FUNCTION" |
C L "sin" 3 2 5 "FUNCTION" |
F G "sin" 3 1278 "float(float x)" |
V L "x" 3 1278 "float" |
C L "tan" 3 2 5 "FUNCTION" |
F G "tan" 3 1304 "float(float x)" |
V L "x" 3 1304 "float" |
V L "c" 3 1306 "float" |
V L "s" 3 1306 "float" |
V G "pas" 3 1344 "float[3]" |
V G "qas" 3 1345 "float[3]" |
F G "ASIN_COS" 3 1347 "float(float x,int8 n)" |
V L "x" 3 1347 "float" |
V L "n" 3 1347 "int8" |
V L "y" 3 1349 "float" |
V L "res" 3 1349 "float" |
V L "r" 3 1349 "float" |
V L "y2" 3 1349 "float" |
V L "s" 3 1350 "int1" |
C L "ASIN_COS" 3 2 1 "FUNCTION" |
C L "ASIN_COS" 3 2 1 "FUNCTION" |
C L "asin" 3 2 5 "FUNCTION" |
F G "asin" 3 1493 "float(float x)" |
V L "x" 3 1493 "float" |
V L "r" 3 1495 "float" |
C L "acos" 3 2 5 "FUNCTION" |
F G "acos" 3 1527 "float(float x)" |
V L "x" 3 1527 "float" |
V L "r" 3 1529 "float" |
V G "pat" 3 1555 "float[4]" |
V G "qat" 3 1556 "float[4]" |
C L "atan" 3 2 3 "FUNCTION" |
F G "atan" 3 1564 "float(float x)" |
V L "x" 3 1564 "float" |
V L "y" 3 1566 "float" |
V L "res" 3 1566 "float" |
V L "r" 3 1566 "float" |
V L "s" 3 1567 "int1" |
V L "flag" 3 1567 "int1" |
C L "atan" 3 2 1 "FUNCTION" |
C L "atan2" 3 2 7 "FUNCTION" |
F G "atan2" 3 1697 "float(float y,float x)" |
V L "y" 3 1697 "float" |
V L "x" 3 1697 "float" |
V L "z" 3 1699 "float" |
V L "sign" 3 1700 "int1" |
V L "quad" 3 1701 "int8" |
C L "atan2" 3 2 1 "FUNCTION" |
C L "atan2" 3 2 1 "FUNCTION" |
C L "cosh" 3 2 7 "FUNCTION" |
F G "cosh" 3 1919 "float(float x)" |
V L "x" 3 1919 "float" |
C L "sinh" 3 2 6 "FUNCTION" |
F G "sinh" 3 1946 "float(float x)" |
V L "x" 3 1946 "float" |
C L "tanh" 3 2 6 "FUNCTION" |
F G "tanh" 3 1976 "float(float x)" |
V L "x" 3 1976 "float" |
D G "LOG2" 3 2006 ".30102999566398119521" |
F G "frexp" 3 2007 "float(float x,*sint8 exp)" |
V L "x" 3 2007 "float" |
V L "exp" 3 2007 "*sint8" |
V L "res" 3 2009 "float" |
V L "sign" 3 2010 "int1" |
C L "ldexp" 3 2 6 "FUNCTION" |
F G "ldexp" 3 2152 "float(float value,sint8 exp)" |
V L "value" 3 2152 "float" |
V L "exp" 3 2152 "sint8" |
D G "AK_W" 4 2 "0x38" "adresa akcelerometru zápis" |
D G "AK_R" 4 3 "0x39" "adresa akcelerometru ètení" |
D G "AK_XH" 4 6 "0x01" "osa X LSB" |
D G "AK_XL" 4 7 "0x02" "osa X MSB" |
D G "AK_YH" 4 8 "0x03" "osa Y LSB" |
D G "AK_YL" 4 9 "0x04" "osa Y MSB" |
D G "AK_ZH" 4 10 "0x05" "osa Z LSB" |
D G "AK_ZL" 4 11 "0x06" "osa Z MSB" |
F G "setAK" 5 1 "void()" "nastaveni akcelerometru" |
C L "setAK" 5 6 1 "FUNCTION" |
F G "akR" 5 12 "int16(int8 H,int8 l)" |
V L "H" 5 12 "int8" |
V L "l" 5 12 "int8" "vycitani hodnot z akcelerometru" |
V L "XL" 5 14 "int8" |
V L "XH" 5 14 "int8" |
V L "x" 5 15 "sint16" |
C L "akR" 5 6 1 "FUNCTION" |
F G "akX" 5 39 "int16()" |
V L "x" 5 41 "int16" |
F G "akY" 5 46 "int16()" |
V L "y" 5 48 "int16" |
F G "akZ" 5 53 "int16()" |
V L "z" 5 55 "int16" |
V G "x" 0 14 "sint16" |
V G "y" 0 14 "sint16" |
V G "z" 0 14 "sint16" "promenne pro akcelerometr" |
F G "MAIN" 0 16 "void()" |
C L "MAIN" 0 27 1 "FUNCTION" |
F B "reset_cpu" 0 0 |
F B "abs" 1 0 |
F B "sleep_ulpwu" 1 0 |
F B "sleep" 0 0 |
F B "delay_cycles" 1 0 |
F B "read_bank" 2 0 |
F B "write_bank" 3 0 |
F B "shift_left" 2 2 |
F B "shift_right" 2 2 |
F B "rotate_left" 2 0 |
F B "rotate_right" 2 0 |
F B "_mul" 2 0 |
F B "memset" 3 0 |
F B "isamoung" 2 0 |
F B "isamong" 2 0 |
F B "bit_set" 2 0 |
F B "bit_clear" 2 0 |
F B "bit_test" 2 0 |
F B "toupper" 1 0 |
F B "tolower" 1 0 |
F B "swap" 1 0 |
F B "printf" 1 255 |
F B "fprintf" 1 255 |
F B "sprintf" 1 255 |
F B "make8" 2 0 |
F B "make16" 2 0 |
F B "make32" 1 255 |
F B "label_address" 1 1 |
F B "goto_address" 1 0 |
F B "_va_arg" 1 0 |
F B "offsetofbit" 2 2 |
F B "enable_interrupts" 1 0 |
F B "disable_interrupts" 1 0 |
F B "interrupt_active" 1 0 |
F B "clear_interrupt" 1 0 |
F B "jump_to_isr" 1 0 |
F B "ext_int_edge" 1 2 |
F B "read_eeprom" 1 0 |
F B "write_eeprom" 2 0 |
F B "read_program_eeprom" 1 0 |
F B "write_program_eeprom" 2 0 |
F B "write_program_memory" 4 0 |
F B "write_program_memory8" 4 0 |
F B "read_program_memory" 4 0 |
F B "read_program_memory8" 4 0 |
F B "erase_program_eeprom" 1 0 |
F B "strcpy" 2 0 |
F B "memcpy" 3 0 |
F B "strstr100" 2 0 |
F B "output_high" 1 0 |
F B "output_low" 1 0 |
F B "input" 1 0 |
F B "input_state" 1 0 |
F B "output_float" 1 0 |
F B "output_drive" 1 0 |
F B "output_bit" 1 1 |
F B "output_toggle" 1 0 |
F B "output_a" 1 0 |
F B "output_b" 1 0 |
F B "output_c" 1 0 |
F B "output_d" 1 0 |
F B "output_e" 1 0 |
F B "input_a" 0 0 |
F B "input_b" 0 0 |
F B "input_c" 0 0 |
F B "input_d" 0 0 |
F B "input_e" 0 0 |
F B "set_tris_a" 1 0 |
F B "set_tris_b" 1 0 |
F B "set_tris_c" 1 0 |
F B "set_tris_d" 1 0 |
F B "set_tris_e" 1 0 |
F B "get_tris_a" 0 0 |
F B "get_tris_b" 0 0 |
F B "get_tris_c" 0 0 |
F B "get_tris_d" 0 0 |
F B "get_tris_e" 0 0 |
F B "input_change_a" 0 0 |
F B "input_change_b" 0 0 |
F B "input_change_c" 0 0 |
F B "input_change_d" 0 0 |
F B "input_change_e" 0 0 |
F B "port_b_pullups" 1 0 |
F B "setup_counters" 2 0 |
F B "setup_wdt" 1 0 |
F B "restart_cause" 0 0 |
F B "restart_wdt" 0 0 |
F B "get_rtcc" 0 0 |
F B "set_rtcc" 1 0 |
F B "get_timer0" 0 0 |
F B "set_timer0" 1 0 |
F B "setup_comparator" 1 0 |
F B "setup_port_a" 1 0 |
F B "setup_adc_ports" 1 0 |
F B "setup_adc" 1 0 |
F B "set_adc_channel" 1 0 |
F B "read_adc" 0 1 |
F B "adc_done" 0 0 |
F B "setup_timer_0" 1 0 |
F B "setup_vref" 1 0 |
F B "setup_timer_1" 1 0 |
F B "get_timer1" 0 0 |
F B "set_timer1" 1 0 |
F B "setup_timer_2" 3 0 |
F B "get_timer2" 0 0 |
F B "set_timer2" 1 0 |
F B "setup_ccp1" 1 2 |
F B "set_pwm1_duty" 1 0 |
F B "setup_ccp2" 1 0 |
F B "set_pwm2_duty" 1 0 |
F B "setup_oscillator" 1 2 |
F B "setup_spi" 1 0 |
F B "spi_read" 0 1 |
F B "spi_write" 1 0 |
F B "spi_data_is_in" 0 0 |
F B "setup_spi2" 1 0 |
F B "spi_read2" 0 1 |
F B "spi_write2" 1 0 |
F B "spi_data_is_in2" 0 0 |
F B "brownout_enable" 1 0 |
F B "delay_ms" 1 0 |
F B "delay_us" 1 0 |
F B "i2c_read" 0 2 |
F B "i2c_write" 1 2 |
F B "i2c_start" 0 2 |
F B "i2c_stop" 0 1 |
F B "i2c_isr_state" 0 1 |
F B "putchar" 1 2 |
F B "puts" 1 2 |
F B "getch" 0 1 |
F B "gets" 1 3 |
F B "kbhit" 0 1 |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.h |
---|
0,0 → 1,19 |
#include <16F887.h> |
#device adc=8 |
#FUSES NOWDT //No Watch Dog Timer |
#FUSES INTRC //Internal RC Osc |
#FUSES NOPUT //No Power Up Timer |
#FUSES MCLR //Master Clear pin enabled |
#FUSES NOPROTECT //Code not protected from reading |
#FUSES NOCPD //No EE protection |
#FUSES NOBROWNOUT //No brownout reset |
#FUSES IESO //Internal External Switch Over mode enabled |
#FUSES FCMEN //Fail-safe clock monitor enabled |
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O |
#FUSES NODEBUG //No Debug mode for ICD |
#FUSES NOWRT //Program memory not write protected |
#FUSES BORV40 //Brownout reset at 4.0V |
#use delay(clock=8000000) |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.hex |
---|
0,0 → 1,148 |
:1000000003308A00972B0000C135E332EC32F2371F |
:10001000ED327439A024CD2AB01841102D10CD2610 |
:10002000411CB41AB128A0060A00A83129104D2697 |
:1000300041212025C121C8272019B0183310A0065E |
:100040000A00CE30ED32F232EE3220346F32EE372B |
:10005000F43C3A100D050001CF396110581DA01273 |
:100060004C32A0060A00CF396110591DA0124C3243 |
:10007000A0060A00CF3961105A1DA0124C32A0060A |
:100080000A000830F80000008711A011200883162C |
:10009000870000008312AF0D0712031C552820169D |
:1000A00020088316870059288312201220088316FF |
:1000B000870000008312A015200883168700831292 |
:1000C000871D6028F80B432800008711A011200825 |
:1000D00083168700000083122016200883168700ED |
:1000E000000000008312A0152008831687008312E9 |
:1000F000871D7828F8010000071A78148711A011CD |
:100100002008831687008312071220122008831606 |
:10011000870083120800201620088316870000003D |
:100120008312A0152008831687000000831207128F |
:100130002012200883168700000083128711A01167 |
:1001400020088316870038308312AF0041202A3000 |
:10015000AF0041200130AF0041202012200883165B |
:10016000870000008312A0152008831687008312E1 |
:10017000871DB8280000BC28000020162008831620 |
:100180008700000083128A110A12FF2BA013200897 |
:1001900083168700831287130830F800CF280000E9 |
:1001A000F817E028F813B00C03188717031C8713FF |
:1001B0007817E0287813F80BD328DE28000087177B |
:1001C0003F308400840BE2280000F81BD228781B03 |
:1001D000DA280800831603178C170C14000000009F |
:1001E00083120C087F3903192E290313A700031764 |
:1001F0000D080313A80003170F080313A90027080D |
:10020000B000C620280803178D0003132908031720 |
:100210008F0083168C170C140000000083120C0D45 |
:100220000E0D7F3903192E290313A70003170D089C |
:100230000313A80003170F080313A9002708B00031 |
:10024000C620280803178D000313290803178F0001 |
:100250008D0A03198F0A0313EA28031703130800F2 |
:100260000830B0007708B1002016200883168700F8 |
:1002700000008312A0152008831687008312871DB3 |
:100280003F29071A0314071E0310F80D0000A011E0 |
:1002900020088316870083128711B00B342920169B |
:1002A0002008831687000000831207123108031903 |
:1002B0005E29201220088316870083120000A015F3 |
:1002C0002008831687008312871D64290000871188 |
:1002D000A011200883168700000083120712201245 |
:1002E00020088316870083120800AB01AC0120169A |
:1002F00020088316870000008312A01520088316AB |
:10030000870000008312071220122008831687003E |
:10031000000083128711A01120088316870038304F |
:100320008312AF0041202908AF0041202016200889 |
:100330008316870000008312A0152008831687000B |
:1003400000008312871DA22907122012200883169D |
:100350008700000083128711A011200883168700F0 |
:1003600039308312AF004120F70130217808AC000A |
:10037000201220088316870000008312A015200891 |
:10038000831687008312871DC3290000C729000038 |
:1003900020162008831687000000831220162008EC |
:1003A0008316870000008312A0152008831687009B |
:1003B0000000831207122012200883168700000015 |
:1003C00083128711A011200883168700383083120A |
:1003D000AF0041202A08AF004120201620088316D4 |
:1003E000870000008312A0152008831687000000F4 |
:1003F0008312871DF929071220122008831687000F |
:10040000000083128711A01120088316870039305D |
:100410008312AF004120F70130217808AB00201291 |
:1004200020088316870000008312A0152008831679 |
:1004300087008312871D1A2A00001E2A000020163A |
:1004400020088316870000008312B0012C08AF003B |
:10045000B000AF012B082F07F8003008FA0003188E |
:10046000FA0A7808AD007A08AE002E08B0002D0810 |
:10047000AF00B2010430B100300832068039B40058 |
:10048000B01F472AAF09B009AF0A0319B00AB21F5B |
:100490004E2AB109B209B10A0319B20AF801F901E9 |
:1004A000F701FA013208031D582A31080319722A8C |
:1004B0001030B3000310AF0DB00DF70DFA0D320878 |
:1004C0007A02031D652A31087702031C6E2A31085F |
:1004D000F702031CFA033208FA020314F80DF90DAF |
:1004E000B30B5A2AB41F792AF809F909F80A031933 |
:1004F000F90A7908AE007808AD002D08F8002E083A |
:10050000F90008000130A9000230AA00752179081D |
:10051000A8007808A7002708F8002808F9008A1121 |
:100520000A120E2C0330A9000430AA0075217908A4 |
:10053000A8007808A7002708F8002808F9008A1101 |
:100540000A12132C0530A9000630AA00752179087B |
:10055000A8007808A7002708F8002808F9008A11E1 |
:100560000A12182C831603178C170C1400000000B5 |
:100570000318E12A83120C087F390313A80003171C |
:100580000D080313A90003170F080313AA00280876 |
:10059000B000C620290803178D0003132A0803178B |
:1005A0008F0083168C170C140000000083120313B5 |
:1005B000A70BDB2ADE2A83160317E12A002B8316FA |
:1005C000031783120C0D0E0D7F390313A8000317B8 |
:1005D0000D080313A90003170F080313AA00280826 |
:1005E000B000C620290803178D0003132A0803173B |
:1005F0008F008D0A03198F0A03100313A70BB22A69 |
:100600000800AF010408AE002F10831B2F14A81F91 |
:10061000112BAE172E1EAE0AA709A809A70A0319A7 |
:10062000A80A280EF038AA00AA07E23EAB00323E24 |
:10063000AD0028080F39AB07AB07AD07E93EAC00AA |
:10064000AC07AC07270E0F39AC07AD07AC0DAD0DED |
:10065000AD09AD0D27080F39AD07AA0D0730A90068 |
:100660000A30AD07AC03031C312BAC07AB03031CF2 |
:10067000352BAB07AA03031C392BAA07A903031CBC |
:100680003D2B29308400831307302E052E1384035D |
:100690002E05031D522B2E1A840A2E1A522B20309F |
:1006A000F7006F2B84072D30040203192E17000862 |
:1006B000F700031D632B2E1B632B2E1A7D2BAE1907 |
:1006C000632B20306E2BAE1F6B2B2D30F700840375 |
:1006D0002E13AE136F2BAE152E123030F707A80174 |
:1006E0000408A7002810831B28147708B000C62030 |
:1006F00027088400831328188317840A2E1F532B7E |
:10070000080028308400831300080319942B02305A |
:10071000F800F701F70B8A2BF80B892B9730F700BD |
:10072000F70B902B800B872B8A110A12762C8401F1 |
:1007300083131F308305713083168F000F088312D7 |
:10074000A0132008831687008312871783160317C8 |
:100750000908C039890003131F129F1200300317C4 |
:1007600088008312870188018901FF300313A000EC |
:10077000831603170908C039890003131F129F123B |
:10078000003003178800831203131F139F1383166F |
:100790009F1383121F149412A0122008831687003F |
:1007A000831220162008831687008312A0112008C8 |
:1007B0008316870001308312940000308316940062 |
:1007C0000108C73908388100831290010030F80011 |
:1007D00092000030831692008312201520088316A1 |
:1007E00087008312970183169B019C0101309D00B5 |
:1007F0008312031787018801890103138B280430B2 |
:1008000003178D0000308F000313EA201530031703 |
:100810008D0000308F000313EA20822A7908A2009D |
:100820007808A100922A7908A4007808A300A22AD7 |
:100830007908A6007808A500213003178D00003044 |
:100840008F000313EA202C3003178D0000308F0037 |
:10085000031007300313A700B222103084002208CF |
:10086000A8002108A70001232030B000C6200D30C9 |
:10087000B000C6200A30B000C620333003178D0008 |
:1008800000308F00031007300313A700B22210308E |
:1008900084002408A8002308A70001232030B0000A |
:1008A000C6200D30B000C6200A30B000C6203A3055 |
:1008B00003178D0000308F00031007300313A700CB |
:1008C000B222103084002608A8002508A7000123C2 |
:1008D0002030B000C6200D30B000C6200A30B00075 |
:1008E000C6200830A700FA30A800812BA70B732C74 |
:0408F0000D2C630068 |
:04400E00F52CFF3F4F |
:00000001FF |
;PIC16F887 |
;CRC=01BF CREATED="11-5-13 10:50" |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.lst |
---|
0,0 → 1,3085 |
CCS PCM C Compiler, Version 4.106, 47914 11-5-13 10:50 |
Filename: D:\Honza\MLAB\Modules\Sensors\IMU01A\SW\PIC16F887\main.lst |
ROM used: 1146 words (14%) |
Largest free fragment is 2048 |
RAM used: 13 (4%) at main() level |
26 (7%) worst case |
Stack: 3 locations |
* |
0000: MOVLW 03 |
0001: MOVWF 0A |
0002: GOTO 397 |
0003: NOP |
.................... //Akcelerometr IMU01A |
.................... //(c) MLAB Jan Chroust 2013 |
.................... |
.................... |
.................... #include <main.h> |
.................... #include <16F887.h> |
.................... //////// Standard Header file for the PIC16F887 device //////////////// |
.................... #device PIC16F887 |
.................... #list |
.................... |
.................... #device adc=8 |
.................... |
.................... #FUSES NOWDT //No Watch Dog Timer |
.................... #FUSES INTRC //Internal RC Osc |
.................... #FUSES NOPUT //No Power Up Timer |
.................... #FUSES MCLR //Master Clear pin enabled |
.................... #FUSES NOPROTECT //Code not protected from reading |
.................... #FUSES NOCPD //No EE protection |
.................... #FUSES NOBROWNOUT //No brownout reset |
.................... #FUSES IESO //Internal External Switch Over mode enabled |
.................... #FUSES FCMEN //Fail-safe clock monitor enabled |
.................... #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O |
.................... #FUSES NODEBUG //No Debug mode for ICD |
.................... #FUSES NOWRT //Program memory not write protected |
.................... #FUSES BORV40 //Brownout reset at 4.0V |
.................... |
.................... #use delay(clock=8000000) |
* |
0381: MOVLW 28 |
0382: MOVWF 04 |
0383: BCF 03.7 |
0384: MOVF 00,W |
0385: BTFSC 03.2 |
0386: GOTO 394 |
0387: MOVLW 02 |
0388: MOVWF 78 |
0389: CLRF 77 |
038A: DECFSZ 77,F |
038B: GOTO 38A |
038C: DECFSZ 78,F |
038D: GOTO 389 |
038E: MOVLW 97 |
038F: MOVWF 77 |
0390: DECFSZ 77,F |
0391: GOTO 390 |
0392: DECFSZ 00,F |
0393: GOTO 387 |
0394: BCF 0A.3 |
0395: BCF 0A.4 |
0396: GOTO 476 (RETURN) |
.................... |
.................... |
.................... |
.................... #define PIN_SDA PIN_C4 |
.................... #define PIN_SCL PIN_C3 |
.................... #use i2c(master, sda=PIN_SDA, scl=PIN_SCL) //I2C |
* |
0041: MOVLW 08 |
0042: MOVWF 78 |
0043: NOP |
0044: BCF 07.3 |
0045: BCF 20.3 |
0046: MOVF 20,W |
0047: BSF 03.5 |
0048: MOVWF 07 |
0049: NOP |
004A: BCF 03.5 |
004B: RLF 2F,F |
004C: BCF 07.4 |
004D: BTFSS 03.0 |
004E: GOTO 055 |
004F: BSF 20.4 |
0050: MOVF 20,W |
0051: BSF 03.5 |
0052: MOVWF 07 |
0053: GOTO 059 |
0054: BCF 03.5 |
0055: BCF 20.4 |
0056: MOVF 20,W |
0057: BSF 03.5 |
0058: MOVWF 07 |
0059: NOP |
005A: BCF 03.5 |
005B: BSF 20.3 |
005C: MOVF 20,W |
005D: BSF 03.5 |
005E: MOVWF 07 |
005F: BCF 03.5 |
0060: BTFSS 07.3 |
0061: GOTO 060 |
0062: DECFSZ 78,F |
0063: GOTO 043 |
0064: NOP |
0065: BCF 07.3 |
0066: BCF 20.3 |
0067: MOVF 20,W |
0068: BSF 03.5 |
0069: MOVWF 07 |
006A: NOP |
006B: BCF 03.5 |
006C: BSF 20.4 |
006D: MOVF 20,W |
006E: BSF 03.5 |
006F: MOVWF 07 |
0070: NOP |
0071: NOP |
0072: BCF 03.5 |
0073: BSF 20.3 |
0074: MOVF 20,W |
0075: BSF 03.5 |
0076: MOVWF 07 |
0077: BCF 03.5 |
0078: BTFSS 07.3 |
0079: GOTO 078 |
007A: CLRF 78 |
007B: NOP |
007C: BTFSC 07.4 |
007D: BSF 78.0 |
007E: BCF 07.3 |
007F: BCF 20.3 |
0080: MOVF 20,W |
0081: BSF 03.5 |
0082: MOVWF 07 |
0083: BCF 03.5 |
0084: BCF 07.4 |
0085: BCF 20.4 |
0086: MOVF 20,W |
0087: BSF 03.5 |
0088: MOVWF 07 |
0089: BCF 03.5 |
008A: RETURN |
* |
0130: MOVLW 08 |
0131: MOVWF 30 |
0132: MOVF 77,W |
0133: MOVWF 31 |
0134: BSF 20.4 |
0135: MOVF 20,W |
0136: BSF 03.5 |
0137: MOVWF 07 |
0138: NOP |
0139: BCF 03.5 |
013A: BSF 20.3 |
013B: MOVF 20,W |
013C: BSF 03.5 |
013D: MOVWF 07 |
013E: BCF 03.5 |
013F: BTFSS 07.3 |
0140: GOTO 13F |
0141: BTFSC 07.4 |
0142: BSF 03.0 |
0143: BTFSS 07.4 |
0144: BCF 03.0 |
0145: RLF 78,F |
0146: NOP |
0147: BCF 20.3 |
0148: MOVF 20,W |
0149: BSF 03.5 |
014A: MOVWF 07 |
014B: BCF 03.5 |
014C: BCF 07.3 |
014D: DECFSZ 30,F |
014E: GOTO 134 |
014F: BSF 20.4 |
0150: MOVF 20,W |
0151: BSF 03.5 |
0152: MOVWF 07 |
0153: NOP |
0154: BCF 03.5 |
0155: BCF 07.4 |
0156: MOVF 31,W |
0157: BTFSC 03.2 |
0158: GOTO 15E |
0159: BCF 20.4 |
015A: MOVF 20,W |
015B: BSF 03.5 |
015C: MOVWF 07 |
015D: BCF 03.5 |
015E: NOP |
015F: BSF 20.3 |
0160: MOVF 20,W |
0161: BSF 03.5 |
0162: MOVWF 07 |
0163: BCF 03.5 |
0164: BTFSS 07.3 |
0165: GOTO 164 |
0166: NOP |
0167: BCF 07.3 |
0168: BCF 20.3 |
0169: MOVF 20,W |
016A: BSF 03.5 |
016B: MOVWF 07 |
016C: NOP |
016D: BCF 03.5 |
016E: BCF 07.4 |
016F: BCF 20.4 |
0170: MOVF 20,W |
0171: BSF 03.5 |
0172: MOVWF 07 |
0173: BCF 03.5 |
0174: RETURN |
.................... #use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD |
* |
00C6: BCF 20.7 |
00C7: MOVF 20,W |
00C8: BSF 03.5 |
00C9: MOVWF 07 |
00CA: BCF 03.5 |
00CB: BCF 07.7 |
00CC: MOVLW 08 |
00CD: MOVWF 78 |
00CE: GOTO 0CF |
00CF: NOP |
00D0: BSF 78.7 |
00D1: GOTO 0E0 |
00D2: BCF 78.7 |
00D3: RRF 30,F |
00D4: BTFSC 03.0 |
00D5: BSF 07.7 |
00D6: BTFSS 03.0 |
00D7: BCF 07.7 |
00D8: BSF 78.6 |
00D9: GOTO 0E0 |
00DA: BCF 78.6 |
00DB: DECFSZ 78,F |
00DC: GOTO 0D3 |
00DD: GOTO 0DE |
00DE: NOP |
00DF: BSF 07.7 |
00E0: MOVLW 3F |
00E1: MOVWF 04 |
00E2: DECFSZ 04,F |
00E3: GOTO 0E2 |
00E4: NOP |
00E5: BTFSC 78.7 |
00E6: GOTO 0D2 |
00E7: BTFSC 78.6 |
00E8: GOTO 0DA |
00E9: RETURN |
.................... #include <math.h> |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... //// (C) Copyright 1996,2008 Custom Computer Services //// |
.................... //// This source code may only be used by licensed users of the CCS C //// |
.................... //// compiler. This source code may only be distributed to other //// |
.................... //// licensed users of the CCS C compiler. No other use, reproduction //// |
.................... //// or distribution is permitted without written permission. //// |
.................... //// Derivative programs created using this software in object code //// |
.................... //// form are not restricted in any way. //// |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... //// //// |
.................... //// History: //// |
.................... //// * 9/20/2001 : Improvments are made to sin/cos code. //// |
.................... //// The code now is small, much faster, //// |
.................... //// and more accurate. //// |
.................... //// * 2/21/2007 : Compiler handles & operator differently and does |
.................... //// not return generic (int8 *) so type cast is done //// |
.................... //// //// |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... |
.................... #ifndef MATH_H |
.................... #define MATH_H |
.................... |
.................... #ifdef PI |
.................... #undef PI |
.................... #endif |
.................... #define PI 3.1415926535897932 |
.................... |
.................... |
.................... #define SQRT2 1.4142135623730950 |
.................... |
.................... //float const ps[4] = {5.9304945, 21.125224, 8.9403076, 0.29730279}; |
.................... //float const qs[4] = {1.0000000, 15.035723, 17.764134, 2.4934718}; |
.................... |
.................... ///////////////////////////// Round Functions ////////////////////////////// |
.................... |
.................... float32 CEIL_FLOOR(float32 x, unsigned int8 n) |
.................... { |
.................... float32 y, res; |
.................... unsigned int16 l; |
.................... int1 s; |
.................... |
.................... s = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... y = -y; |
.................... } |
.................... |
.................... if (y <= 32768.0) |
.................... res = (float32)(unsigned int16)y; |
.................... |
.................... else if (y < 10000000.0) |
.................... { |
.................... l = (unsigned int16)(y/32768.0); |
.................... y = 32768.0*(y/32768.0 - (float32)l); |
.................... res = 32768.0*(float32)l; |
.................... res += (float32)(unsigned int16)y; |
.................... } |
.................... |
.................... else |
.................... res = y; |
.................... |
.................... y = y - (float32)(unsigned int16)y; |
.................... |
.................... if (s) |
.................... res = -res; |
.................... |
.................... if (y != 0) |
.................... { |
.................... if (s == 1 && n == 0) |
.................... res -= 1.0; |
.................... |
.................... if (s == 0 && n == 1) |
.................... res += 1.0; |
.................... } |
.................... if (x == 0) |
.................... res = 0; |
.................... |
.................... return (res); |
.................... } |
.................... |
.................... // Overloaded Functions to take care for new Data types in PCD |
.................... // Overloaded function CEIL_FLOOR() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 CEIL_FLOOR(float48 x, unsigned int8 n) |
.................... { |
.................... float48 y, res; |
.................... unsigned int16 l; |
.................... int1 s; |
.................... |
.................... s = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... y = -y; |
.................... } |
.................... |
.................... if (y <= 32768.0) |
.................... res = (float48)(unsigned int16)y; |
.................... |
.................... else if (y < 10000000.0) |
.................... { |
.................... l = (unsigned int16)(y/32768.0); |
.................... y = 32768.0*(y/32768.0 - (float48)l); |
.................... res = 32768.0*(float32)l; |
.................... res += (float48)(unsigned int16)y; |
.................... } |
.................... |
.................... else |
.................... res = y; |
.................... |
.................... y = y - (float48)(unsigned int16)y; |
.................... |
.................... if (s) |
.................... res = -res; |
.................... |
.................... if (y != 0) |
.................... { |
.................... if (s == 1 && n == 0) |
.................... res -= 1.0; |
.................... |
.................... if (s == 0 && n == 1) |
.................... res += 1.0; |
.................... } |
.................... if (x == 0) |
.................... res = 0; |
.................... |
.................... return (res); |
.................... } |
.................... |
.................... |
.................... // Overloaded function CEIL_FLOOR() for data type - Float64 |
.................... float64 CEIL_FLOOR(float64 x, unsigned int8 n) |
.................... { |
.................... float64 y, res; |
.................... unsigned int16 l; |
.................... int1 s; |
.................... |
.................... s = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... y = -y; |
.................... } |
.................... |
.................... if (y <= 32768.0) |
.................... res = (float64)(unsigned int16)y; |
.................... |
.................... else if (y < 10000000.0) |
.................... { |
.................... l = (unsigned int16)(y/32768.0); |
.................... y = 32768.0*(y/32768.0 - (float64)l); |
.................... res = 32768.0*(float64)l; |
.................... res += (float64)(unsigned int16)y; |
.................... } |
.................... |
.................... else |
.................... res = y; |
.................... |
.................... y = y - (float64)(unsigned int16)y; |
.................... |
.................... if (s) |
.................... res = -res; |
.................... |
.................... if (y != 0) |
.................... { |
.................... if (s == 1 && n == 0) |
.................... res -= 1.0; |
.................... |
.................... if (s == 0 && n == 1) |
.................... res += 1.0; |
.................... } |
.................... if (x == 0) |
.................... res = 0; |
.................... |
.................... return (res); |
.................... } |
.................... #endif |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float floor(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : rounds down the number x. |
.................... // Date : N/A |
.................... // |
.................... float32 floor(float32 x) |
.................... { |
.................... return CEIL_FLOOR(x, 0); |
.................... } |
.................... // Following 2 functions are overloaded functions of floor() for PCD |
.................... // Overloaded function floor() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 floor(float48 x) |
.................... { |
.................... return CEIL_FLOOR(x, 0); |
.................... } |
.................... |
.................... // Overloaded function floor() for data type - Float64 |
.................... float64 floor(float64 x) |
.................... { |
.................... return CEIL_FLOOR(x, 0); |
.................... } |
.................... #endif |
.................... |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float ceil(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : rounds up the number x. |
.................... // Date : N/A |
.................... // |
.................... float32 ceil(float32 x) |
.................... { |
.................... return CEIL_FLOOR(x, 1); |
.................... } |
.................... // Following 2 functions are overloaded functions of ceil() for PCD |
.................... // Overloaded function ceil() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 ceil(float48 x) |
.................... { |
.................... return CEIL_FLOOR(x, 1); |
.................... } |
.................... |
.................... // Overloaded function ceil() for data type - Float64 |
.................... float64 ceil(float64 x) |
.................... { |
.................... return CEIL_FLOOR(x, 1); |
.................... } |
.................... #endif |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float fabs(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : Computes the absolute value of floating point number x |
.................... // Returns : returns the absolute value of x |
.................... // Date : N/A |
.................... // |
.................... #define fabs abs |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float fmod(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : Computes the floating point remainder of x/y |
.................... // Returns : returns the value of x= i*y, for some integer i such that, if y |
.................... // is non zero, the result has the same isgn of x na dmagnitude less than the |
.................... // magnitude of y. If y is zero then a domain error occurs. |
.................... // Date : N/A |
.................... // |
.................... |
.................... float fmod(float32 x,float32 y) |
.................... { |
.................... float32 i; |
.................... if (y!=0.0) |
.................... { |
.................... i=(x/y < 0.0)? ceil(x/y): floor(x/y); |
.................... return(x-(i*y)); |
.................... } |
.................... else |
.................... { |
.................... #ifdef _ERRNO |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... } |
.................... } |
.................... //Overloaded function for fmod() for PCD |
.................... // Overloaded function fmod() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 fmod(float48 x,float48 y) |
.................... { |
.................... float48 i; |
.................... if (y!=0.0) |
.................... { |
.................... i=(x/y < 0.0)? ceil(x/y): floor(x/y); |
.................... return(x-(i*y)); |
.................... } |
.................... else |
.................... { |
.................... #ifdef _ERRNO |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... } |
.................... } |
.................... // Overloaded function fmod() for data type - Float64 |
.................... float64 fmod(float64 x,float64 y) |
.................... { |
.................... float64 i; |
.................... if (y!=0.0) |
.................... { |
.................... i=(x/y < 0.0)? ceil(x/y): floor(x/y); |
.................... return(x-(i*y)); |
.................... } |
.................... else |
.................... { |
.................... #ifdef _ERRNO |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... } |
.................... } |
.................... #endif |
.................... //////////////////// Exponential and logarithmic functions //////////////////// |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float exp(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the value (e^x) |
.................... // Date : N/A |
.................... // |
.................... #define LN2 0.6931471805599453 |
.................... |
.................... float const pe[6] = {0.000207455774, 0.00127100575, 0.00965065093, |
.................... 0.0554965651, 0.240227138, 0.693147172}; |
.................... |
.................... |
.................... float32 exp(float32 x) |
.................... { |
.................... float32 y, res, r; |
.................... #if defined(__PCD__) |
.................... int8 data1; |
.................... #endif |
.................... signed int8 n; |
.................... int1 s; |
.................... #ifdef _ERRNO |
.................... if(x > 88.722838) |
.................... { |
.................... errno=ERANGE; |
.................... return(0); |
.................... } |
.................... #endif |
.................... n = (signed int16)(x/LN2); |
.................... s = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... n = -n; |
.................... y = -y; |
.................... } |
.................... |
.................... res = 0.0; |
.................... #if !defined(__PCD__) |
.................... *((unsigned int8 *)(&res)) = n + 0x7F; |
.................... #endif |
.................... |
.................... #if defined(__PCD__) // Takes care of IEEE format for PCD |
.................... data1 = n+0x7F; |
.................... if(bit_test(data1,0)) |
.................... bit_set(*(((unsigned int8 *)(&res)+2)),7); |
.................... rotate_right(&data1,1); |
.................... bit_clear(data1,7); |
.................... *(((unsigned int8 *)(&res)+3)) = data1; |
.................... #endif |
.................... |
.................... y = y/LN2 - (float32)n; |
.................... |
.................... r = pe[0]*y + pe[1]; |
.................... r = r*y + pe[2]; |
.................... r = r*y + pe[3]; |
.................... r = r*y + pe[4]; |
.................... r = r*y + pe[5]; |
.................... |
.................... res = res*(1.0 + y*r); |
.................... |
.................... if (s) |
.................... res = 1.0/res; |
.................... return(res); |
.................... } |
.................... |
.................... |
.................... //Overloaded function for exp() for PCD |
.................... // Overloaded function exp() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 exp(float48 x) |
.................... { |
.................... float48 y, res, r; |
.................... int8 data1; |
.................... signed int8 n; |
.................... int1 s; |
.................... #ifdef _ERRNO |
.................... if(x > 88.722838) |
.................... { |
.................... errno=ERANGE; |
.................... return(0); |
.................... } |
.................... #endif |
.................... n = (signed int16)(x/LN2); |
.................... s = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... n = -n; |
.................... y = -y; |
.................... } |
.................... |
.................... res = 0.0; |
.................... |
.................... data1 = n+0x7F; |
.................... if(bit_test(data1,0)) |
.................... bit_set(*(((unsigned int8 *)(&res)+4)),7); |
.................... rotate_right(&data1,1); |
.................... bit_clear(data1,7); |
.................... *(((unsigned int8 *)(&res)+5)) = data1; |
.................... |
.................... y = y/LN2 - (float48)n; |
.................... |
.................... r = pe[0]*y + pe[1]; |
.................... r = r*y + pe[2]; |
.................... r = r*y + pe[3]; |
.................... r = r*y + pe[4]; |
.................... r = r*y + pe[5]; |
.................... |
.................... res = res*(1.0 + y*r); |
.................... |
.................... if (s) |
.................... res = 1.0/res; |
.................... return(res); |
.................... } |
.................... |
.................... // Overloaded function exp() for data type - Float64 |
.................... float64 exp(float64 x) |
.................... { |
.................... float64 y, res, r; |
.................... unsigned int16 data1, data2; |
.................... unsigned int16 *p; |
.................... signed int16 n; |
.................... int1 s; |
.................... #ifdef _ERRNO |
.................... if(x > 709.7827128) |
.................... { |
.................... errno=ERANGE; |
.................... return(0); |
.................... } |
.................... #endif |
.................... n = (signed int16)(x/LN2); |
.................... s = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... n = -n; |
.................... y = -y; |
.................... } |
.................... |
.................... res = 0.0; |
.................... |
.................... #if !defined(__PCD__) |
.................... *((unsigned int16 *)(&res)) = n + 0x7F; |
.................... #endif |
.................... p= (((unsigned int16 *)(&res))+3); |
.................... data1 = *p; |
.................... data2 = *p; |
.................... data1 = n + 0x3FF; |
.................... data1 = data1 <<4; |
.................... if(bit_test(data2,15)) |
.................... bit_set(data1,15); |
.................... data2 = data2 & 0x000F; |
.................... data1 ^= data2; |
.................... |
.................... *(((unsigned int16 *)(&res)+3)) = data1; |
.................... |
.................... |
.................... y = y/LN2 - (float64)n; |
.................... |
.................... r = pe[0]*y + pe[1]; |
.................... r = r*y + pe[2]; |
.................... r = r*y + pe[3]; |
.................... r = r*y + pe[4]; |
.................... r = r*y + pe[5]; |
.................... |
.................... res = res*(1.0 + y*r); |
.................... |
.................... if (s) |
.................... res = 1.0/res; |
.................... return(res); |
.................... } |
.................... |
.................... #ENDIF |
.................... |
.................... |
.................... /************************************************************/ |
.................... |
.................... float32 const pl[4] = {0.45145214, -9.0558803, 26.940971, -19.860189}; |
.................... float32 const ql[4] = {1.0000000, -8.1354259, 16.780517, -9.9300943}; |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float log(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the the natural log of x |
.................... // Date : N/A |
.................... // |
.................... float32 log(float32 x) |
.................... { |
.................... float32 y, res, r, y2; |
.................... #if defined(__PCD__) |
.................... unsigned int8 data1,data2; |
.................... #endif |
.................... signed int8 n; |
.................... #ifdef _ERRNO |
.................... if(x <0) |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... if(x ==0) |
.................... { |
.................... errno=ERANGE; |
.................... return(0); |
.................... } |
.................... #endif |
.................... y = x; |
.................... |
.................... if (y != 1.0) |
.................... { |
.................... #if !defined(__PCD__) |
.................... *((unsigned int8 *)(&y)) = 0x7E; |
.................... #endif |
.................... |
.................... #if defined(__PCD__) // Takes care of IEEE format |
.................... data2 = *(((unsigned int8 *)(&y))+3); |
.................... *(((unsigned int8 *)(&y))+3) = 0x3F; |
.................... data1 = *(((unsigned int8 *)(&y))+2); |
.................... bit_clear(data1,7); |
.................... *(((unsigned int8 *)(&y))+2) = data1; |
.................... if(bit_test(data2,7)) |
.................... bit_set(*(((unsigned int8 *)(&y))+3),7); |
.................... #endif |
.................... |
.................... y = (y - 1.0)/(y + 1.0); |
.................... |
.................... y2=y*y; |
.................... |
.................... res = pl[0]*y2 + pl[1]; |
.................... res = res*y2 + pl[2]; |
.................... res = res*y2 + pl[3]; |
.................... |
.................... r = ql[0]*y2 + ql[1]; |
.................... r = r*y2 + ql[2]; |
.................... r = r*y2 + ql[3]; |
.................... |
.................... res = y*res/r; |
.................... #if !defined(__PCD__) |
.................... n = *((unsigned int8 *)(&x)) - 0x7E; |
.................... #endif |
.................... #if defined(__PCD__) |
.................... data1 = *(((unsigned int8 *)(&x)+3)); |
.................... rotate_left(&data1,1); |
.................... data2 = *(((unsigned int8 *)(&x)+2)); |
.................... if(bit_test (data2,7)) |
.................... bit_set(data1,0); |
.................... n = data1 - 0x7E; |
.................... #endif |
.................... |
.................... if (n<0) |
.................... r = -(float32)-n; |
.................... else |
.................... r = (float32)n; |
.................... |
.................... res += r*LN2; |
.................... } |
.................... |
.................... else |
.................... res = 0.0; |
.................... |
.................... return(res); |
.................... } |
.................... |
.................... //Overloaded function for log() for PCD |
.................... // Overloaded function log() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 log(float48 x) |
.................... { |
.................... float48 y, res, r, y2; |
.................... unsigned int8 data1,data2; |
.................... signed int8 n; |
.................... #ifdef _ERRNO |
.................... if(x <0) |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... if(x ==0) |
.................... { |
.................... errno=ERANGE; |
.................... return(0); |
.................... } |
.................... #endif |
.................... y = x; |
.................... |
.................... if (y != 1.0) |
.................... { |
.................... |
.................... #if !defined(__PCD__) |
.................... *((unsigned int8 *)(&y)) = 0x7E; |
.................... #endif |
.................... data2 = *(((unsigned int8 *)(&y))+5); |
.................... *(((unsigned int8 *)(&y))+5) = 0x3F; |
.................... data1 = *(((unsigned int8 *)(&y))+4); |
.................... bit_clear(data1,7); |
.................... *(((unsigned int8 *)(&y))+4) = data1; |
.................... |
.................... if(bit_test(data2,7)) |
.................... bit_set(*(((unsigned int8 *)(&y))+4),7); |
.................... y = (y - 1.0)/(y + 1.0); |
.................... |
.................... y2=y*y; |
.................... |
.................... res = pl[0]*y2 + pl[1]; |
.................... res = res*y2 + pl[2]; |
.................... res = res*y2 + pl[3]; |
.................... |
.................... r = ql[0]*y2 + ql[1]; |
.................... r = r*y2 + ql[2]; |
.................... r = r*y2 + ql[3]; |
.................... |
.................... res = y*res/r; |
.................... |
.................... data1 = *(((unsigned int8 *)(&x)+5)); |
.................... rotate_left(&data1,1); |
.................... data2 = *(((unsigned int8 *)(&x)+4)); |
.................... if(bit_test (data2,7)) |
.................... bit_set(data1,0); |
.................... |
.................... n = data1 - 0x7E; |
.................... |
.................... if (n<0) |
.................... r = -(float48)-n; |
.................... else |
.................... r = (float48)n; |
.................... |
.................... res += r*LN2; |
.................... } |
.................... |
.................... else |
.................... res = 0.0; |
.................... |
.................... return(res); |
.................... } |
.................... |
.................... // Overloaded function log() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float32 const pl_64[4] = {0.45145214, -9.0558803, 26.940971, -19.860189}; |
.................... float32 const ql_64[4] = {1.0000000, -8.1354259, 16.780517, -9.9300943}; |
.................... #endif |
.................... float64 log(float64 x) |
.................... { |
.................... float64 y, res, r, y2; |
.................... unsigned int16 data1,data2; |
.................... unsigned int16 *p; |
.................... signed int16 n; |
.................... #ifdef _ERRNO |
.................... if(x <0) |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... if(x ==0) |
.................... { |
.................... errno=ERANGE; |
.................... return(0); |
.................... } |
.................... #endif |
.................... y = x; |
.................... |
.................... if (y != 1.0) |
.................... { |
.................... #if !defined(__PCD__) |
.................... *((unsigned int8 *)(&y)) = 0x7E; |
.................... #endif |
.................... p= (((unsigned int16 *)(&y))+3); |
.................... data1 = *p; |
.................... data2 = *p; |
.................... data1 = 0x3FE; |
.................... data1 = data1 <<4; |
.................... if(bit_test (data2,15)) |
.................... bit_set(data1,15); |
.................... data2 = data2 & 0x000F; |
.................... data1 ^=data2; |
.................... |
.................... *p = data1; |
.................... |
.................... y = (y - 1.0)/(y + 1.0); |
.................... |
.................... y2=y*y; |
.................... |
.................... res = pl_64[0]*y2 + pl_64[1]; |
.................... res = res*y2 + pl_64[2]; |
.................... res = res*y2 + pl_64[3]; |
.................... |
.................... r = ql_64[0]*y2 + ql_64[1]; |
.................... r = r*y2 + ql_64[2]; |
.................... r = r*y2 + ql_64[3]; |
.................... |
.................... res = y*res/r; |
.................... |
.................... p= (((unsigned int16 *)(&x))+3); |
.................... data1 = *p; |
.................... bit_clear(data1,15); |
.................... data1 = data1 >>4; |
.................... n = data1 - 0x3FE; |
.................... |
.................... |
.................... if (n<0) |
.................... r = -(float64)-n; |
.................... else |
.................... r = (float64)n; |
.................... |
.................... res += r*LN2; |
.................... } |
.................... |
.................... else |
.................... res = 0.0; |
.................... |
.................... return(res); |
.................... } |
.................... #endif |
.................... |
.................... |
.................... #define LN10 2.3025850929940456 |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float log10(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the the log base 10 of x |
.................... // Date : N/A |
.................... // |
.................... float32 log10(float32 x) |
.................... { |
.................... float32 r; |
.................... |
.................... r = log(x); |
.................... r = r/LN10; |
.................... return(r); |
.................... } |
.................... |
.................... //Overloaded functions for log10() for PCD |
.................... // Overloaded function log10() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 log10(float48 x) |
.................... { |
.................... float48 r; |
.................... |
.................... r = log(x); |
.................... r = r/LN10; |
.................... return(r); |
.................... } |
.................... |
.................... // Overloaded function log10() for data type - Float64 |
.................... float64 log10(float64 x) |
.................... { |
.................... float64 r; |
.................... |
.................... r = log(x); |
.................... r = r/LN10; |
.................... return(r); |
.................... } |
.................... #endif |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float modf(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description :breaks the argument value int integral and fractional parts, |
.................... // ach of which have the same sign as the argument. It stores the integral part |
.................... // as a float in the object pointed to by the iptr |
.................... // Returns : returns the signed fractional part of value. |
.................... // Date : N/A |
.................... // |
.................... |
.................... float32 modf(float32 value,float32 *iptr) |
.................... { |
.................... *iptr=(value < 0.0)? ceil(value): floor(value); |
.................... return(value - *iptr); |
.................... } |
.................... //Overloaded functions for modf() for PCD |
.................... // Overloaded function modf() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 modf(float48 value,float48 *iptr) |
.................... { |
.................... *iptr=(value < 0.0)? ceil(value): floor(value); |
.................... return(value - *iptr); |
.................... } |
.................... // Overloaded function modf() for data type - Float64 |
.................... float64 modf(float64 value,float64 *iptr) |
.................... { |
.................... *iptr=(value < 0.0)? ceil(value): floor(value); |
.................... return(value - *iptr); |
.................... } |
.................... #endif |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float pwr(float x,float y) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the value (x^y) |
.................... // Date : N/A |
.................... // Note : 0 is returned when the function will generate an imaginary number |
.................... // |
.................... float32 pwr(float32 x,float32 y) |
.................... { |
.................... if(0 > x && fmod(y, 1) == 0) { |
.................... if(fmod(y, 2) == 0) { |
.................... return (exp(log(-x) * y)); |
.................... } else { |
.................... return (-exp(log(-x) * y)); |
.................... } |
.................... } else if(0 > x && fmod(y, 1) != 0) { |
.................... return 0; |
.................... } else { |
.................... if(x != 0 || 0 >= y) { |
.................... return (exp(log(x) * y)); |
.................... } |
.................... } |
.................... } |
.................... //Overloaded functions for pwr() for PCD |
.................... // Overloaded function pwr() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 pwr(float48 x,float48 y) |
.................... { |
.................... if(0 > x && fmod(y, 1) == 0) { |
.................... if(fmod(y, 2) == 0) { |
.................... return (exp(log(-x) * y)); |
.................... } else { |
.................... return (-exp(log(-x) * y)); |
.................... } |
.................... } else if(0 > x && fmod(y, 1) != 0) { |
.................... return 0; |
.................... } else { |
.................... if(x != 0 || 0 >= y) { |
.................... return (exp(log(x) * y)); |
.................... } |
.................... } |
.................... } |
.................... // Overloaded function pwr() for data type - Float64 |
.................... float64 pwr(float64 x,float64 y) |
.................... { |
.................... if(0 > x && fmod(y, 1) == 0) { |
.................... if(fmod(y, 2) == 0) { |
.................... return (exp(log(-x) * y)); |
.................... } else { |
.................... return (-exp(log(-x) * y)); |
.................... } |
.................... } else if(0 > x && fmod(y, 1) != 0) { |
.................... return 0; |
.................... } else { |
.................... if(x != 0 || 0 >= y) { |
.................... return (exp(log(x) * y)); |
.................... } |
.................... } |
.................... } |
.................... #endif |
.................... |
.................... //////////////////// Power functions //////////////////// |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float pow(float x,float y) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the value (x^y) |
.................... // Date : N/A |
.................... // Note : 0 is returned when the function will generate an imaginary number |
.................... // |
.................... float32 pow(float32 x,float32 y) |
.................... { |
.................... if(0 > x && fmod(y, 1) == 0) { |
.................... if(fmod(y, 2) == 0) { |
.................... return (exp(log(-x) * y)); |
.................... } else { |
.................... return (-exp(log(-x) * y)); |
.................... } |
.................... } else if(0 > x && fmod(y, 1) != 0) { |
.................... return 0; |
.................... } else { |
.................... if(x != 0 || 0 >= y) { |
.................... return (exp(log(x) * y)); |
.................... } |
.................... } |
.................... } |
.................... //Overloaded functions for pow() for PCD |
.................... // Overloaded function for pow() data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 pow(float48 x,float48 y) |
.................... { |
.................... if(0 > x && fmod(y, 1) == 0) { |
.................... if(fmod(y, 2) == 0) { |
.................... return (exp(log(-x) * y)); |
.................... } else { |
.................... return (-exp(log(-x) * y)); |
.................... } |
.................... } else if(0 > x && fmod(y, 1) != 0) { |
.................... return 0; |
.................... } else { |
.................... if(x != 0 || 0 >= y) { |
.................... return (exp(log(x) * y)); |
.................... } |
.................... } |
.................... } |
.................... |
.................... // Overloaded function pow() for data type - Float64 |
.................... float64 pow(float64 x,float64 y) |
.................... { |
.................... if(0 > x && fmod(y, 1) == 0) { |
.................... if(fmod(y, 2) == 0) { |
.................... return (exp(log(-x) * y)); |
.................... } else { |
.................... return (-exp(log(-x) * y)); |
.................... } |
.................... } else if(0 > x && fmod(y, 1) != 0) { |
.................... return 0; |
.................... } else { |
.................... if(x != 0 || 0 >= y) { |
.................... return (exp(log(x) * y)); |
.................... } |
.................... } |
.................... } |
.................... #endif |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float sqrt(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the square root of x |
.................... // Date : N/A |
.................... // |
.................... float32 sqrt(float32 x) |
.................... { |
.................... float32 y, res; |
.................... #if defined(__PCD__) |
.................... unsigned int16 data1,data2; |
.................... #endif |
.................... BYTE *p; |
.................... |
.................... #ifdef _ERRNO |
.................... if(x < 0) |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... |
.................... if( x<=0.0) |
.................... return(0.0); |
.................... |
.................... y=x; |
.................... |
.................... #if !defined(__PCD__) |
.................... p=&y; |
.................... (*p)=(BYTE)((((unsigned int16)(*p)) + 127) >> 1); |
.................... #endif |
.................... |
.................... #if defined(__PCD__) |
.................... p = (((unsigned int8 *)(&y))+3); |
.................... data1 = *(((unsigned int8 *)(&y))+3); |
.................... data2 = *(((unsigned int8 *)(&y))+2); |
.................... rotate_left(&data1,1); |
.................... if(bit_test(data2,7)) |
.................... bit_set(data1,0); |
.................... data1 = ((data1+127) >>1); |
.................... bit_clear(data2,7); |
.................... if(bit_test(data1,0)) |
.................... bit_set(data2,7); |
.................... data1 = data1 >>1; |
.................... *(((unsigned int8 *)(&y))+3) = data1; |
.................... *(((unsigned int8 *)(&y))+2) = data2; |
.................... |
.................... #endif |
.................... |
.................... do { |
.................... res=y; |
.................... y+=(x/y); |
.................... |
.................... #if !defined(__PCD__) |
.................... (*p)--; |
.................... #endif |
.................... |
.................... #if defined(__PCD__) |
.................... data1 = *(((unsigned int8 *)(&y))+3); |
.................... data2 = *(((unsigned int8 *)(&y))+2); |
.................... rotate_left(&data1,1); |
.................... if(bit_test(data2,7)) |
.................... bit_set(data1,0); |
.................... data1--; |
.................... bit_clear(data2,7); |
.................... if(bit_test(data1,0)) |
.................... bit_set(data2,7); |
.................... data1 = data1 >>1; |
.................... *(((unsigned int8 *)(&y))+3) = data1; |
.................... *(((unsigned int8 *)(&y))+2) = data2; |
.................... |
.................... #endif |
.................... } while(res != y); |
.................... |
.................... return(res); |
.................... } |
.................... //Overloaded functions for sqrt() for PCD |
.................... // Overloaded function sqrt() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 sqrt(float48 x) |
.................... { |
.................... float48 y, res; |
.................... unsigned int16 data1,data2; |
.................... BYTE *p; |
.................... |
.................... #ifdef _ERRNO |
.................... if(x < 0) |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... |
.................... if( x<=0.0) |
.................... return(0.0); |
.................... |
.................... y=x; |
.................... |
.................... #if !defined(__PCD__) |
.................... p=&y; |
.................... (*p)=(BYTE)((((unsigned int16)(*p)) + 127) >> 1); |
.................... #endif |
.................... |
.................... #if defined(__PCD__) |
.................... p = (((unsigned int8 *)(&y))+5); |
.................... data1 = *(((unsigned int8 *)(&y))+5); |
.................... data2 = *(((unsigned int8 *)(&y))+4); |
.................... rotate_left(&data1,1); |
.................... if(bit_test(data2,7)) |
.................... bit_set(data1,0); |
.................... data1 = ((data1+127) >>1); |
.................... bit_clear(data2,7); |
.................... if(bit_test(data1,0)) |
.................... bit_set(data2,7); |
.................... data1 = data1 >>1; |
.................... *(((unsigned int8 *)(&y))+5) = data1; |
.................... *(((unsigned int8 *)(&y))+4) = data2; |
.................... |
.................... #endif |
.................... |
.................... do { |
.................... res=y; |
.................... y+=(x/y); |
.................... |
.................... #if !defined(__PCD__) |
.................... (*p)--; |
.................... #endif |
.................... |
.................... data1 = *(((unsigned int8 *)(&y))+5); |
.................... data2 = *(((unsigned int8 *)(&y))+4); |
.................... rotate_left(&data1,1); |
.................... if(bit_test(data2,7)) |
.................... bit_set(data1,0); |
.................... data1--; |
.................... bit_clear(data2,7); |
.................... if(bit_test(data1,0)) |
.................... bit_set(data2,7); |
.................... data1 = data1 >>1; |
.................... *(((unsigned int8 *)(&y))+5) = data1; |
.................... *(((unsigned int8 *)(&y))+4) = data2; |
.................... |
.................... } while(res != y); |
.................... |
.................... return(res); |
.................... } |
.................... |
.................... // Overloaded function sqrt() for data type - Float64 |
.................... float64 sqrt(float64 x) |
.................... { |
.................... float64 y, res; |
.................... unsigned int16 *p; |
.................... unsigned int16 temp1,temp2; |
.................... |
.................... #ifdef _ERRNO |
.................... if(x < 0) |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... |
.................... if( x<=0.0) |
.................... return(0.0); |
.................... |
.................... y=x; |
.................... p= (((unsigned int16 *)(&y))+3); |
.................... temp1 = *p; |
.................... temp2 = *p; |
.................... bit_clear(temp1,15); |
.................... temp1 = (temp1>>4)+1023; |
.................... temp1 = temp1 >> 1; |
.................... temp1 = (temp1<<4) & 0xFFF0; |
.................... if(bit_test(temp2,15)) |
.................... bit_set(temp1,15); |
.................... temp2 = temp2 & 0x000F; |
.................... temp1 ^= temp2; |
.................... |
.................... (*p) = temp1; |
.................... |
.................... do { |
.................... res=y; |
.................... y+=(x/y); |
.................... temp1 = *p; |
.................... temp2 = *p; |
.................... bit_clear(temp1,15); |
.................... temp1 = (temp1>>4); |
.................... temp1--; |
.................... temp1 = (temp1<<4) & 0xFFF0; |
.................... if(bit_test(temp2,15)) |
.................... bit_set(temp1,15); |
.................... temp2 = temp2 & 0x000F; |
.................... temp1 ^= temp2; |
.................... (*p) = temp1; |
.................... |
.................... } while(res != y); |
.................... |
.................... return(res); |
.................... } |
.................... #endif |
.................... |
.................... ////////////////////////////// Trig Functions ////////////////////////////// |
.................... #ifdef PI_DIV_BY_TWO |
.................... #undef PI_DIV_BY_TWO |
.................... #endif |
.................... #define PI_DIV_BY_TWO 1.5707963267948966 |
.................... #ifdef TWOBYPI |
.................... #undef TWOBYPI |
.................... #define TWOBYPI 0.6366197723675813 |
.................... #endif |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float cos(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the cosine value of the angle x, which is in radian |
.................... // Date : 9/20/2001 |
.................... // |
.................... float32 cos(float32 x) |
.................... { |
.................... float32 y, t, t2 = 1.0; |
.................... unsigned int8 quad, i; |
.................... float32 frac; |
.................... float32 p[6] = { //by the series definition for cosine |
.................... -0.5, // sum ( ( (-1)^n * x^2n )/(2n)! ) |
.................... 0.04166666666667, |
.................... -0.00138888888889, |
.................... 0.00002480158730, |
.................... -0.00000027557319, |
.................... 0.00000000208767, |
.................... //-0.00000000001147, |
.................... // 0.00000000000005 |
.................... }; |
.................... |
.................... if (x < 0) x = -x; // absolute value of input |
.................... |
.................... quad = (unsigned int8)(x / PI_DIV_BY_TWO); // quadrant |
.................... frac = (x / PI_DIV_BY_TWO) - quad; // fractional part of input |
.................... quad = quad % 4; // quadrant (0 to 3) |
.................... |
.................... if (quad == 0 || quad == 2) |
.................... t = frac * PI_DIV_BY_TWO; |
.................... else if (quad == 1) |
.................... t = (1-frac) * PI_DIV_BY_TWO; |
.................... else // should be 3 |
.................... t = (frac-1) * PI_DIV_BY_TWO; |
.................... |
.................... y = 1.0; |
.................... t = t * t; |
.................... for (i = 0; i <= 5; i++) |
.................... { |
.................... t2 = t2 * t; |
.................... y = y + p[i] * t2; |
.................... } |
.................... |
.................... if (quad == 2 || quad == 1) |
.................... y = -y; // correct sign |
.................... |
.................... return (y); |
.................... } |
.................... |
.................... |
.................... //Overloaded functions for cos() for PCD |
.................... // Overloaded function cos() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 cos(float48 x) |
.................... { |
.................... float48 y, t, t2 = 1.0; |
.................... unsigned int8 quad, i; |
.................... float48 frac; |
.................... float48 p[6] = { //by the series definition for cosine |
.................... -0.5, // sum ( ( (-1)^n * x^2n )/(2n)! ) |
.................... 0.04166666666667, |
.................... -0.00138888888889, |
.................... 0.00002480158730, |
.................... -0.00000027557319, |
.................... 0.00000000208767, |
.................... //-0.00000000001147, |
.................... // 0.00000000000005 |
.................... }; |
.................... |
.................... if (x < 0) x = -x; // absolute value of input |
.................... |
.................... quad = (unsigned int8)(x / PI_DIV_BY_TWO); // quadrant |
.................... frac = (x / PI_DIV_BY_TWO) - quad; // fractional part of input |
.................... quad = quad % 4; // quadrant (0 to 3) |
.................... |
.................... if (quad == 0 || quad == 2) |
.................... t = frac * PI_DIV_BY_TWO; |
.................... else if (quad == 1) |
.................... t = (1-frac) * PI_DIV_BY_TWO; |
.................... else // should be 3 |
.................... t = (frac-1) * PI_DIV_BY_TWO; |
.................... |
.................... y = 0.999999999781; |
.................... t = t * t; |
.................... for (i = 0; i <= 5; i++) |
.................... { |
.................... t2 = t2 * t; |
.................... y = y + p[i] * t2; |
.................... } |
.................... |
.................... if (quad == 2 || quad == 1) |
.................... y = -y; // correct sign |
.................... |
.................... return (y); |
.................... } |
.................... |
.................... // Overloaded function cos() for data type - Float48 |
.................... float64 cos(float64 x) |
.................... { |
.................... float64 y, t, t2 = 1.0; |
.................... unsigned int8 quad, i; |
.................... float64 frac; |
.................... float64 p[6] = { //by the series definition for cosine |
.................... -0.5, // sum ( ( (-1)^n * x^2n )/(2n)! ) |
.................... 0.04166666666667, |
.................... -0.00138888888889, |
.................... 0.00002480158730, |
.................... -0.00000027557319, |
.................... 0.00000000208767, |
.................... //-0.00000000001147, |
.................... // 0.00000000000005 |
.................... }; |
.................... |
.................... if (x < 0) x = -x; // absolute value of input |
.................... |
.................... quad = (unsigned int8)(x / PI_DIV_BY_TWO); // quadrant |
.................... frac = (x / PI_DIV_BY_TWO) - quad; // fractional part of input |
.................... quad = quad % 4; // quadrant (0 to 3) |
.................... |
.................... if (quad == 0 || quad == 2) |
.................... t = frac * PI_DIV_BY_TWO; |
.................... else if (quad == 1) |
.................... t = (1-frac) * PI_DIV_BY_TWO; |
.................... else // should be 3 |
.................... t = (frac-1) * PI_DIV_BY_TWO; |
.................... |
.................... y = 0.999999999781; |
.................... t = t * t; |
.................... for (i = 0; i <= 5; i++) |
.................... { |
.................... t2 = t2 * t; |
.................... y = y + p[i] * t2; |
.................... } |
.................... |
.................... if (quad == 2 || quad == 1) |
.................... y = -y; // correct sign |
.................... |
.................... return (y); |
.................... } |
.................... |
.................... #endif |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float sin(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the sine value of the angle x, which is in radian |
.................... // Date : 9/20/2001 |
.................... // |
.................... float32 sin(float32 x) |
.................... { |
.................... return cos(x - PI_DIV_BY_TWO); |
.................... } |
.................... |
.................... //Overloaded functions for sin() for PCD |
.................... // Overloaded function sin() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 sin(float48 x) |
.................... { |
.................... return cos(x - PI_DIV_BY_TWO); |
.................... } |
.................... |
.................... // Overloaded function sin() for data type - Float48 |
.................... float64 sin(float64 x) |
.................... { |
.................... return cos(x - PI_DIV_BY_TWO); |
.................... } |
.................... #endif |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float tan(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the tangent value of the angle x, which is in radian |
.................... // Date : 9/20/2001 |
.................... // |
.................... float32 tan(float32 x) |
.................... { |
.................... float32 c, s; |
.................... |
.................... c = cos(x); |
.................... if (c == 0.0) |
.................... return (1.0e+36); |
.................... |
.................... s = sin(x); |
.................... return(s/c); |
.................... } |
.................... //Overloaded functions for tan() for PCD |
.................... // Overloaded function tan() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 tan(float48 x) |
.................... { |
.................... float48 c, s; |
.................... |
.................... c = cos(x); |
.................... if (c == 0.0) |
.................... return (1.0e+36); |
.................... |
.................... s = sin(x); |
.................... return(s/c); |
.................... } |
.................... |
.................... // Overloaded function tan() for data type - Float48 |
.................... float64 tan(float64 x) |
.................... { |
.................... float64 c, s; |
.................... |
.................... c = cos(x); |
.................... if (c == 0.0) |
.................... return (1.0e+36); |
.................... |
.................... s = sin(x); |
.................... return(s/c); |
.................... } |
.................... #endif |
.................... |
.................... float32 const pas[3] = {0.49559947, -4.6145309, 5.6036290}; |
.................... float32 const qas[3] = {1.0000000, -5.5484666, 5.6036290}; |
.................... |
.................... float32 ASIN_COS(float32 x, unsigned int8 n) |
.................... { |
.................... float32 y, res, r, y2; |
.................... int1 s; |
.................... #ifdef _ERRNO |
.................... if(x <-1 || x > 1) |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... s = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... y = -y; |
.................... } |
.................... |
.................... if (y > 0.5) |
.................... { |
.................... y = sqrt((1.0 - y)/2.0); |
.................... n += 2; |
.................... } |
.................... |
.................... y2=y*y; |
.................... |
.................... res = pas[0]*y2 + pas[1]; |
.................... res = res*y2 + pas[2]; |
.................... |
.................... r = qas[0]*y2 + qas[1]; |
.................... r = r*y2 + qas[2]; |
.................... |
.................... res = y*res/r; |
.................... |
.................... if (n & 2) // |x| > 0.5 |
.................... res = PI_DIV_BY_TWO - 2.0*res; |
.................... if (s) |
.................... res = -res; |
.................... if (n & 1) // take arccos |
.................... res = PI_DIV_BY_TWO - res; |
.................... |
.................... return(res); |
.................... } |
.................... |
.................... //Overloaded functions for ASIN_COS() for PCD |
.................... // Overloaded function ASIN_COS() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 ASIN_COS(float48 x, unsigned int8 n) |
.................... { |
.................... float48 y, res, r, y2; |
.................... int1 s; |
.................... #ifdef _ERRNO |
.................... if(x <-1 || x > 1) |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... s = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... y = -y; |
.................... } |
.................... |
.................... if (y > 0.5) |
.................... { |
.................... y = sqrt((1.0 - y)/2.0); |
.................... n += 2; |
.................... } |
.................... |
.................... y2=y*y; |
.................... |
.................... res = pas[0]*y2 + pas[1]; |
.................... res = res*y2 + pas[2]; |
.................... |
.................... r = qas[0]*y2 + qas[1]; |
.................... r = r*y2 + qas[2]; |
.................... |
.................... res = y*res/r; |
.................... |
.................... if (n & 2) // |x| > 0.5 |
.................... res = PI_DIV_BY_TWO - 2.0*res; |
.................... if (s) |
.................... res = -res; |
.................... if (n & 1) // take arccos |
.................... res = PI_DIV_BY_TWO - res; |
.................... |
.................... return(res); |
.................... } |
.................... |
.................... // Overloaded function ASIN_COS() for data type - Float64 |
.................... float64 ASIN_COS(float64 x, unsigned int8 n) |
.................... { |
.................... float64 y, res, r, y2; |
.................... int1 s; |
.................... #ifdef _ERRNO |
.................... if(x <-1 || x > 1) |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... s = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... y = -y; |
.................... } |
.................... |
.................... if (y > 0.5) |
.................... { |
.................... y = sqrt((1.0 - y)/2.0); |
.................... n += 2; |
.................... } |
.................... |
.................... y2=y*y; |
.................... |
.................... res = pas[0]*y2 + pas[1]; |
.................... res = res*y2 + pas[2]; |
.................... |
.................... r = qas[0]*y2 + qas[1]; |
.................... r = r*y2 + qas[2]; |
.................... |
.................... res = y*res/r; |
.................... |
.................... if (n & 2) // |x| > 0.5 |
.................... res = PI_DIV_BY_TWO - 2.0*res; |
.................... if (s) |
.................... res = -res; |
.................... if (n & 1) // take arccos |
.................... res = PI_DIV_BY_TWO - res; |
.................... |
.................... return(res); |
.................... } |
.................... #endif |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float asin(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the arcsine value of the value x. |
.................... // Date : N/A |
.................... // |
.................... float32 asin(float32 x) |
.................... { |
.................... float32 r; |
.................... |
.................... r = ASIN_COS(x, 0); |
.................... return(r); |
.................... } |
.................... //Overloaded functions for asin() for PCD |
.................... // Overloaded function asin() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 asin(float48 x) |
.................... { |
.................... float48 r; |
.................... |
.................... r = ASIN_COS(x, 0); |
.................... return(r); |
.................... } |
.................... |
.................... // Overloaded function asin() for data type - Float64 |
.................... float64 asin(float64 x) |
.................... { |
.................... float64 r; |
.................... |
.................... r = ASIN_COS(x, 0); |
.................... return(r); |
.................... } |
.................... #endif |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float acos(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the arccosine value of the value x. |
.................... // Date : N/A |
.................... // |
.................... float32 acos(float32 x) |
.................... { |
.................... float32 r; |
.................... |
.................... r = ASIN_COS(x, 1); |
.................... return(r); |
.................... } |
.................... //Overloaded functions for acos() for PCD |
.................... // Overloaded function acos() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 acos(float48 x) |
.................... { |
.................... float48 r; |
.................... |
.................... r = ASIN_COS(x, 1); |
.................... return(r); |
.................... } |
.................... |
.................... // Overloaded function acos() for data type - Float64 |
.................... float64 acos(float64 x) |
.................... { |
.................... float64 r; |
.................... |
.................... r = ASIN_COS(x, 1); |
.................... return(r); |
.................... } |
.................... #endif |
.................... |
.................... float32 const pat[4] = {0.17630401, 5.6710795, 22.376096, 19.818457}; |
.................... float32 const qat[4] = {1.0000000, 11.368190, 28.982246, 19.818457}; |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float atan(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : returns the arctangent value of the value x. |
.................... // Date : N/A |
.................... // |
.................... float32 atan(float32 x) |
.................... { |
.................... float32 y, res, r; |
.................... int1 s, flag; |
.................... |
.................... s = 0; |
.................... flag = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... y = -y; |
.................... } |
.................... |
.................... if (y > 1.0) |
.................... { |
.................... y = 1.0/y; |
.................... flag = 1; |
.................... } |
.................... |
.................... res = pat[0]*y*y + pat[1]; |
.................... res = res*y*y + pat[2]; |
.................... res = res*y*y + pat[3]; |
.................... |
.................... r = qat[0]*y*y + qat[1]; |
.................... r = r*y*y + qat[2]; |
.................... r = r*y*y + qat[3]; |
.................... |
.................... res = y*res/r; |
.................... |
.................... |
.................... if (flag) // for |x| > 1 |
.................... res = PI_DIV_BY_TWO - res; |
.................... if (s) |
.................... res = -res; |
.................... |
.................... return(res); |
.................... } |
.................... //Overloaded functions for atan() for PCD |
.................... // Overloaded function atan() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 atan(float48 x) |
.................... { |
.................... float48 y, res, r; |
.................... int1 s, flag; |
.................... |
.................... s = 0; |
.................... flag = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... y = -y; |
.................... } |
.................... |
.................... if (y > 1.0) |
.................... { |
.................... y = 1.0/y; |
.................... flag = 1; |
.................... } |
.................... |
.................... res = pat[0]*y*y + pat[1]; |
.................... res = res*y*y + pat[2]; |
.................... res = res*y*y + pat[3]; |
.................... |
.................... r = qat[0]*y*y + qat[1]; |
.................... r = r*y*y + qat[2]; |
.................... r = r*y*y + qat[3]; |
.................... |
.................... res = y*res/r; |
.................... |
.................... |
.................... if (flag) // for |x| > 1 |
.................... res = PI_DIV_BY_TWO - res; |
.................... if (s) |
.................... res = -res; |
.................... |
.................... return(res); |
.................... } |
.................... |
.................... // Overloaded function atan() for data type - Float64 |
.................... float64 atan(float64 x) |
.................... { |
.................... float64 y, res, r; |
.................... int1 s, flag; |
.................... |
.................... s = 0; |
.................... flag = 0; |
.................... y = x; |
.................... |
.................... if (x < 0) |
.................... { |
.................... s = 1; |
.................... y = -y; |
.................... } |
.................... |
.................... if (y > 1.0) |
.................... { |
.................... y = 1.0/y; |
.................... flag = 1; |
.................... } |
.................... |
.................... res = pat[0]*y*y + pat[1]; |
.................... res = res*y*y + pat[2]; |
.................... res = res*y*y + pat[3]; |
.................... |
.................... r = qat[0]*y*y + qat[1]; |
.................... r = r*y*y + qat[2]; |
.................... r = r*y*y + qat[3]; |
.................... |
.................... res = y*res/r; |
.................... |
.................... |
.................... if (flag) // for |x| > 1 |
.................... res = PI_DIV_BY_TWO - res; |
.................... if (s) |
.................... res = -res; |
.................... |
.................... return(res); |
.................... } |
.................... #endif |
.................... |
.................... ///////////////////////////////////////////////////////////////////////////// |
.................... // float atan2(float y, float x) |
.................... ///////////////////////////////////////////////////////////////////////////// |
.................... // Description :computes the principal value of arc tangent of y/x, using the |
.................... // signs of both the arguments to determine the quadrant of the return value |
.................... // Returns : returns the arc tangent of y/x. |
.................... // Date : N/A |
.................... // |
.................... |
.................... float32 atan2(float32 y,float32 x) |
.................... { |
.................... float32 z; |
.................... int1 sign; |
.................... unsigned int8 quad; |
.................... sign=0; |
.................... quad=0; //quadrant |
.................... quad=((y<=0.0)?((x<=0.0)?3:4):((x<0.0)?2:1)); |
.................... if(y<0.0) |
.................... { |
.................... sign=1; |
.................... y=-y; |
.................... } |
.................... if(x<0.0) |
.................... { |
.................... x=-x; |
.................... } |
.................... if (x==0.0) |
.................... { |
.................... if(y==0.0) |
.................... { |
.................... #ifdef _ERRNO |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... } |
.................... else |
.................... { |
.................... if(sign) |
.................... { |
.................... return (-(PI_DIV_BY_TWO)); |
.................... } |
.................... else |
.................... { |
.................... return (PI_DIV_BY_TWO); |
.................... } |
.................... } |
.................... } |
.................... else |
.................... { |
.................... z=y/x; |
.................... switch(quad) |
.................... { |
.................... case 1: |
.................... { |
.................... return atan(z); |
.................... break; |
.................... } |
.................... case 2: |
.................... { |
.................... // return (atan(z)+PI_DIV_BY_TWO); //2L3122 |
.................... return (PI-atan(z)); |
.................... break; |
.................... } |
.................... case 3: |
.................... { |
.................... return (atan(z)-PI); |
.................... break; |
.................... } |
.................... case 4: |
.................... { |
.................... return (-atan(z)); |
.................... break; |
.................... } |
.................... } |
.................... } |
.................... } |
.................... |
.................... //Overloaded functions for atan2() for PCD |
.................... // Overloaded function atan2() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 atan2(float48 y,float48 x) |
.................... { |
.................... float48 z; |
.................... int1 sign; |
.................... unsigned int8 quad; |
.................... sign=0; |
.................... quad=0; //quadrant |
.................... quad=((y<=0.0)?((x<=0.0)?3:4):((x<0.0)?2:1)); |
.................... if(y<0.0) |
.................... { |
.................... sign=1; |
.................... y=-y; |
.................... } |
.................... if(x<0.0) |
.................... { |
.................... x=-x; |
.................... } |
.................... if (x==0.0) |
.................... { |
.................... if(y==0.0) |
.................... { |
.................... #ifdef _ERRNO |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... } |
.................... else |
.................... { |
.................... if(sign) |
.................... { |
.................... return (-(PI_DIV_BY_TWO)); |
.................... } |
.................... else |
.................... { |
.................... return (PI_DIV_BY_TWO); |
.................... } |
.................... } |
.................... } |
.................... else |
.................... { |
.................... z=y/x; |
.................... switch(quad) |
.................... { |
.................... case 1: |
.................... { |
.................... return atan(z); |
.................... break; |
.................... } |
.................... case 2: |
.................... { |
.................... // return (atan(z)+PI_DIV_BY_TWO); //2L3122 |
.................... return (PI-atan(z)); |
.................... break; |
.................... } |
.................... case 3: |
.................... { |
.................... return (atan(z)-PI); |
.................... break; |
.................... } |
.................... case 4: |
.................... { |
.................... return (-atan(z)); |
.................... break; |
.................... } |
.................... } |
.................... } |
.................... } |
.................... |
.................... // Overloaded function atan2() for data type - Float64 |
.................... float64 atan2(float64 y,float64 x) |
.................... { |
.................... float64 z; |
.................... int1 sign; |
.................... unsigned int8 quad; |
.................... sign=0; |
.................... quad=0; //quadrant |
.................... quad=((y<=0.0)?((x<=0.0)?3:4):((x<0.0)?2:1)); |
.................... if(y<0.0) |
.................... { |
.................... sign=1; |
.................... y=-y; |
.................... } |
.................... if(x<0.0) |
.................... { |
.................... x=-x; |
.................... } |
.................... if (x==0.0) |
.................... { |
.................... if(y==0.0) |
.................... { |
.................... #ifdef _ERRNO |
.................... { |
.................... errno=EDOM; |
.................... } |
.................... #endif |
.................... } |
.................... else |
.................... { |
.................... if(sign) |
.................... { |
.................... return (-(PI_DIV_BY_TWO)); |
.................... } |
.................... else |
.................... { |
.................... return (PI_DIV_BY_TWO); |
.................... } |
.................... } |
.................... } |
.................... else |
.................... { |
.................... z=y/x; |
.................... switch(quad) |
.................... { |
.................... case 1: |
.................... { |
.................... return atan(z); |
.................... break; |
.................... } |
.................... case 2: |
.................... { |
.................... // return (atan(z)+PI_DIV_BY_TWO); //2L3122 |
.................... return (PI-atan(z)); |
.................... break; |
.................... } |
.................... case 3: |
.................... { |
.................... return (atan(z)-PI); |
.................... break; |
.................... } |
.................... case 4: |
.................... { |
.................... return (-atan(z)); |
.................... break; |
.................... } |
.................... } |
.................... } |
.................... } |
.................... #endif |
.................... |
.................... //////////////////// Hyperbolic functions //////////////////// |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float cosh(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : Computes the hyperbolic cosine value of x |
.................... // Returns : returns the hyperbolic cosine value of x |
.................... // Date : N/A |
.................... // |
.................... |
.................... float32 cosh(float32 x) |
.................... { |
.................... return ((exp(x)+exp(-x))/2); |
.................... } |
.................... //Overloaded functions for cosh() for PCD |
.................... // Overloaded function cosh() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 cosh(float48 x) |
.................... { |
.................... return ((exp(x)+exp(-x))/2); |
.................... } |
.................... |
.................... // Overloaded function cosh() for data type - Float64 |
.................... float64 cosh(float64 x) |
.................... { |
.................... return ((exp(x)+exp(-x))/2); |
.................... } |
.................... #endif |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float sinh(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : Computes the hyperbolic sine value of x |
.................... // Returns : returns the hyperbolic sine value of x |
.................... // Date : N/A |
.................... // |
.................... |
.................... float32 sinh(float32 x) |
.................... { |
.................... |
.................... return ((exp(x) - exp(-x))/2); |
.................... } |
.................... //Overloaded functions for sinh() for PCD |
.................... // Overloaded function sinh() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 sinh(float48 x) |
.................... { |
.................... |
.................... return ((exp(x) - exp(-x))/2); |
.................... } |
.................... |
.................... // Overloaded function sinh() for data type - Float48 |
.................... float64 sinh(float64 x) |
.................... { |
.................... |
.................... return ((exp(x) - exp(-x))/2); |
.................... } |
.................... #endif |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float tanh(float x) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : Computes the hyperbolic tangent value of x |
.................... // Returns : returns the hyperbolic tangent value of x |
.................... // Date : N/A |
.................... // |
.................... |
.................... float32 tanh(float32 x) |
.................... { |
.................... return(sinh(x)/cosh(x)); |
.................... } |
.................... //Overloaded functions for tanh() for PCD |
.................... // Overloaded function tanh() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 tanh(float48 x) |
.................... { |
.................... return(sinh(x)/cosh(x)); |
.................... } |
.................... |
.................... // Overloaded function tanh() for data type - Float64 |
.................... float64 tanh(float64 x) |
.................... { |
.................... return(sinh(x)/cosh(x)); |
.................... } |
.................... #endif |
.................... |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // float frexp(float x, signed int *exp) |
.................... //////////////////////////////////////////////////////////////////////////// |
.................... // Description : breaks a floating point number into a normalized fraction and an integral |
.................... // power of 2. It stores the integer in the signed int object pointed to by exp. |
.................... // Returns : returns the value x, such that x is a double with magnitude in the interval |
.................... // [1/2,1) or zero, and value equals x times 2 raised to the power *exp.If value is zero, |
.................... // both parts of the result are zero. |
.................... // Date : N/A |
.................... // |
.................... |
.................... #define LOG2 .30102999566398119521 |
.................... float32 frexp(float32 x, signed int8 *exp) |
.................... { |
.................... float32 res; |
.................... int1 sign = 0; |
.................... if(x == 0.0) |
.................... { |
.................... *exp=0; |
.................... return (0.0); |
.................... } |
.................... if(x < 0.0) |
.................... { |
.................... x=-x; |
.................... sign=1; |
.................... } |
.................... if (x > 1.0) |
.................... { |
.................... *exp=(ceil(log10(x)/LOG2)); |
.................... res=x/(pow(2, *exp)); |
.................... if (res == 1) |
.................... { |
.................... *exp=*exp+1; |
.................... res=.5; |
.................... } |
.................... } |
.................... else |
.................... { |
.................... if(x < 0.5) |
.................... { |
.................... *exp=-1; |
.................... res=x*2; |
.................... } |
.................... else |
.................... { |
.................... *exp=0; |
.................... res=x; |
.................... } |
.................... } |
.................... if(sign) |
.................... { |
.................... res=-res; |
.................... } |
.................... return res; |
.................... } |
.................... |
.................... //Overloaded functions for frexp() for PCD |
.................... // Overloaded function frexp() for data type - Float48 |
.................... #if defined(__PCD__) |
.................... float48 frexp(float48 x, signed int8 *exp) |
.................... { |
.................... float48 res; |
.................... int1 sign = 0; |
.................... if(x == 0.0) |
.................... { |
.................... *exp=0; |
.................... return (0.0); |
.................... } |
.................... if(x < 0.0) |
.................... { |
.................... x=-x; |
.................... sign=1; |
.................... } |
.................... if (x > 1.0) |
.................... { |
.................... *exp=(ceil(log10(x)/LOG2)); |
.................... res=x/(pow(2, *exp)); |
.................... if (res == 1) |
.................... { |
.................... *exp=*exp+1; |
.................... res=.5; |
.................... } |
.................... } |
.................... else |
.................... { |
.................... if(x < 0.5) |
.................... { |
.................... *exp=-1; |
.................... res=x*2; |
.................... } |
.................... else |
.................... { |
.................... *exp=0; |
.................... res=x; |
.................... } |
.................... } |
.................... if(sign) |
.................... { |
.................... res=-res; |
.................... } |
.................... return res; |
.................... } |
.................... |
.................... // Overloaded function frexp() for data type - Float64 |
.................... float64 frexp(float64 x, signed int8 *exp) |
.................... { |
.................... float64 res; |
.................... int1 sign = 0; |
.................... if(x == 0.0) |
.................... { |
.................... *exp=0; |
.................... return (0.0); |
.................... } |
.................... if(x < 0.0) |
.................... { |
.................... x=-x; |
.................... sign=1; |
.................... } |
.................... if (x > 1.0) |
.................... { |
.................... *exp=(ceil(log10(x)/LOG2)); |
.................... res=x/(pow(2, *exp)); |
.................... if (res == 1) |
.................... { |
.................... *exp=*exp+1; |
.................... res=.5; |
.................... } |
.................... } |
.................... else |
.................... { |
.................... if(x < 0.5) |
.................... { |
.................... *exp=-1; |
.................... res=x*2; |
.................... } |
.................... else |
.................... { |
.................... *exp=0; |
.................... res=x; |
.................... } |
.................... } |
.................... if(sign) |
.................... { |
.................... res=-res; |
.................... } |
.................... return res; |
.................... } |
.................... #endif |
.................... |
.................... ////////////////////////////////////////////////////////////////////////////// |
.................... // float ldexp(float x, signed int *exp) |
.................... ////////////////////////////////////////////////////////////////////////////// |
.................... // Description : multiplies a floating point number by an integral power of 2. |
.................... // Returns : returns the value of x times 2 raised to the power exp. |
.................... // Date : N/A |
.................... // |
.................... |
.................... float32 ldexp(float32 value, signed int8 exp) |
.................... { |
.................... return (value * pow(2,exp)); |
.................... } |
.................... //Overloaded functions for ldexp() for PCD |
.................... // Overloaded function ldexp() for data type - Float48 |
.................... |
.................... #if defined(__PCD__) |
.................... float48 ldexp(float48 value, signed int8 exp) |
.................... { |
.................... return (value * pow(2,exp)); |
.................... } |
.................... // Overloaded function ldexp() for data type - Float64 |
.................... float64 ldexp(float64 value, signed int8 exp) |
.................... { |
.................... return (value * pow(2,exp)); |
.................... } |
.................... #endif |
.................... |
.................... #endif |
.................... |
.................... #include <MMA8451Q.h> |
.................... //Adresa obvodu |
.................... #define AK_W 0x38 //adresa akcelerometru zápis |
.................... #define AK_R 0x39 //adresa akcelerometru ètení |
.................... |
.................... |
.................... #define AK_XH 0x01 //osa X LSB |
.................... #define AK_XL 0x02 //osa X MSB |
.................... #define AK_YH 0x03 //osa Y LSB |
.................... #define AK_YL 0x04 //osa Y MSB |
.................... #define AK_ZH 0x05 //osa Z LSB |
.................... #define AK_ZL 0x06 //osa Z MSB |
.................... |
.................... |
.................... #include "MMA8451Q.c" |
.................... void setAK (void) //nastaveni akcelerometru |
.................... { |
.................... i2c_start(); |
* |
008B: BSF 20.4 |
008C: MOVF 20,W |
008D: BSF 03.5 |
008E: MOVWF 07 |
008F: NOP |
0090: BCF 03.5 |
0091: BSF 20.3 |
0092: MOVF 20,W |
0093: BSF 03.5 |
0094: MOVWF 07 |
0095: NOP |
0096: BCF 03.5 |
0097: BCF 07.4 |
0098: BCF 20.4 |
0099: MOVF 20,W |
009A: BSF 03.5 |
009B: MOVWF 07 |
009C: NOP |
009D: BCF 03.5 |
009E: BCF 07.3 |
009F: BCF 20.3 |
00A0: MOVF 20,W |
00A1: BSF 03.5 |
00A2: MOVWF 07 |
.................... I2C_Write(AK_W); |
00A3: MOVLW 38 |
00A4: BCF 03.5 |
00A5: MOVWF 2F |
00A6: CALL 041 |
.................... I2C_write(0x2A); |
00A7: MOVLW 2A |
00A8: MOVWF 2F |
00A9: CALL 041 |
.................... I2C_write(0x01); //nastavi aktivni stav |
00AA: MOVLW 01 |
00AB: MOVWF 2F |
00AC: CALL 041 |
.................... |
.................... i2c_stop(); |
00AD: BCF 20.4 |
00AE: MOVF 20,W |
00AF: BSF 03.5 |
00B0: MOVWF 07 |
00B1: NOP |
00B2: BCF 03.5 |
00B3: BSF 20.3 |
00B4: MOVF 20,W |
00B5: BSF 03.5 |
00B6: MOVWF 07 |
00B7: BCF 03.5 |
00B8: BTFSS 07.3 |
00B9: GOTO 0B8 |
00BA: NOP |
00BB: GOTO 0BC |
00BC: NOP |
00BD: BSF 20.4 |
00BE: MOVF 20,W |
00BF: BSF 03.5 |
00C0: MOVWF 07 |
00C1: NOP |
.................... } |
00C2: BCF 03.5 |
00C3: BCF 0A.3 |
00C4: BCF 0A.4 |
00C5: GOTO 3FF (RETURN) |
.................... |
.................... |
.................... int16 akR (int8 H, int8 L) //vycitani hodnot z akcelerometru |
.................... { |
* |
0175: CLRF 2B |
0176: CLRF 2C |
.................... unsigned int8 XL=0,XH=0; |
.................... signed int16 x; |
.................... |
.................... i2c_start(); |
0177: BSF 20.4 |
0178: MOVF 20,W |
0179: BSF 03.5 |
017A: MOVWF 07 |
017B: NOP |
017C: BCF 03.5 |
017D: BSF 20.3 |
017E: MOVF 20,W |
017F: BSF 03.5 |
0180: MOVWF 07 |
0181: NOP |
0182: BCF 03.5 |
0183: BCF 07.4 |
0184: BCF 20.4 |
0185: MOVF 20,W |
0186: BSF 03.5 |
0187: MOVWF 07 |
0188: NOP |
0189: BCF 03.5 |
018A: BCF 07.3 |
018B: BCF 20.3 |
018C: MOVF 20,W |
018D: BSF 03.5 |
018E: MOVWF 07 |
.................... I2C_Write(AK_W); |
018F: MOVLW 38 |
0190: BCF 03.5 |
0191: MOVWF 2F |
0192: CALL 041 |
.................... I2C_write(H); |
0193: MOVF 29,W |
0194: MOVWF 2F |
0195: CALL 041 |
.................... i2c_start(); |
0196: BSF 20.4 |
0197: MOVF 20,W |
0198: BSF 03.5 |
0199: MOVWF 07 |
019A: NOP |
019B: BCF 03.5 |
019C: BSF 20.3 |
019D: MOVF 20,W |
019E: BSF 03.5 |
019F: MOVWF 07 |
01A0: NOP |
01A1: BCF 03.5 |
01A2: BTFSS 07.3 |
01A3: GOTO 1A2 |
01A4: BCF 07.4 |
01A5: BCF 20.4 |
01A6: MOVF 20,W |
01A7: BSF 03.5 |
01A8: MOVWF 07 |
01A9: NOP |
01AA: BCF 03.5 |
01AB: BCF 07.3 |
01AC: BCF 20.3 |
01AD: MOVF 20,W |
01AE: BSF 03.5 |
01AF: MOVWF 07 |
.................... I2C_Write(AK_R); |
01B0: MOVLW 39 |
01B1: BCF 03.5 |
01B2: MOVWF 2F |
01B3: CALL 041 |
.................... XH=i2c_read(0); |
01B4: CLRF 77 |
01B5: CALL 130 |
01B6: MOVF 78,W |
01B7: MOVWF 2C |
.................... i2c_stop(); |
01B8: BCF 20.4 |
01B9: MOVF 20,W |
01BA: BSF 03.5 |
01BB: MOVWF 07 |
01BC: NOP |
01BD: BCF 03.5 |
01BE: BSF 20.3 |
01BF: MOVF 20,W |
01C0: BSF 03.5 |
01C1: MOVWF 07 |
01C2: BCF 03.5 |
01C3: BTFSS 07.3 |
01C4: GOTO 1C3 |
01C5: NOP |
01C6: GOTO 1C7 |
01C7: NOP |
01C8: BSF 20.4 |
01C9: MOVF 20,W |
01CA: BSF 03.5 |
01CB: MOVWF 07 |
01CC: NOP |
.................... |
.................... i2c_start(); |
01CD: BCF 03.5 |
01CE: BSF 20.4 |
01CF: MOVF 20,W |
01D0: BSF 03.5 |
01D1: MOVWF 07 |
01D2: NOP |
01D3: BCF 03.5 |
01D4: BSF 20.3 |
01D5: MOVF 20,W |
01D6: BSF 03.5 |
01D7: MOVWF 07 |
01D8: NOP |
01D9: BCF 03.5 |
01DA: BCF 07.4 |
01DB: BCF 20.4 |
01DC: MOVF 20,W |
01DD: BSF 03.5 |
01DE: MOVWF 07 |
01DF: NOP |
01E0: BCF 03.5 |
01E1: BCF 07.3 |
01E2: BCF 20.3 |
01E3: MOVF 20,W |
01E4: BSF 03.5 |
01E5: MOVWF 07 |
.................... I2C_Write(AK_W); |
01E6: MOVLW 38 |
01E7: BCF 03.5 |
01E8: MOVWF 2F |
01E9: CALL 041 |
.................... I2C_write(L); |
01EA: MOVF 2A,W |
01EB: MOVWF 2F |
01EC: CALL 041 |
.................... i2c_start(); |
01ED: BSF 20.4 |
01EE: MOVF 20,W |
01EF: BSF 03.5 |
01F0: MOVWF 07 |
01F1: NOP |
01F2: BCF 03.5 |
01F3: BSF 20.3 |
01F4: MOVF 20,W |
01F5: BSF 03.5 |
01F6: MOVWF 07 |
01F7: NOP |
01F8: BCF 03.5 |
01F9: BTFSS 07.3 |
01FA: GOTO 1F9 |
01FB: BCF 07.4 |
01FC: BCF 20.4 |
01FD: MOVF 20,W |
01FE: BSF 03.5 |
01FF: MOVWF 07 |
0200: NOP |
0201: BCF 03.5 |
0202: BCF 07.3 |
0203: BCF 20.3 |
0204: MOVF 20,W |
0205: BSF 03.5 |
0206: MOVWF 07 |
.................... I2C_Write(AK_R); |
0207: MOVLW 39 |
0208: BCF 03.5 |
0209: MOVWF 2F |
020A: CALL 041 |
.................... XL=i2c_read(0); |
020B: CLRF 77 |
020C: CALL 130 |
020D: MOVF 78,W |
020E: MOVWF 2B |
.................... i2c_stop(); |
020F: BCF 20.4 |
0210: MOVF 20,W |
0211: BSF 03.5 |
0212: MOVWF 07 |
0213: NOP |
0214: BCF 03.5 |
0215: BSF 20.3 |
0216: MOVF 20,W |
0217: BSF 03.5 |
0218: MOVWF 07 |
0219: BCF 03.5 |
021A: BTFSS 07.3 |
021B: GOTO 21A |
021C: NOP |
021D: GOTO 21E |
021E: NOP |
021F: BSF 20.4 |
0220: MOVF 20,W |
0221: BSF 03.5 |
0222: MOVWF 07 |
0223: NOP |
.................... |
.................... x = (((unsigned int16) XH << 8) + XL ); //prevod na 16bit hodnotu |
0224: BCF 03.5 |
0225: CLRF 30 |
0226: MOVF 2C,W |
0227: MOVWF 2F |
0228: MOVWF 30 |
0229: CLRF 2F |
022A: MOVF 2B,W |
022B: ADDWF 2F,W |
022C: MOVWF 78 |
022D: MOVF 30,W |
022E: MOVWF 7A |
022F: BTFSC 03.0 |
0230: INCF 7A,F |
0231: MOVF 78,W |
0232: MOVWF 2D |
0233: MOVF 7A,W |
0234: MOVWF 2E |
.................... x=x/4; |
0235: MOVF 2E,W |
0236: MOVWF 30 |
0237: MOVF 2D,W |
0238: MOVWF 2F |
0239: CLRF 32 |
023A: MOVLW 04 |
023B: MOVWF 31 |
* |
0279: MOVF 79,W |
027A: MOVWF 2E |
027B: MOVF 78,W |
027C: MOVWF 2D |
.................... |
.................... return x; |
027D: MOVF 2D,W |
027E: MOVWF 78 |
027F: MOVF 2E,W |
0280: MOVWF 79 |
.................... } |
0281: RETURN |
.................... |
.................... int16 akX (void) |
.................... { |
.................... int16 X; |
.................... X= akR (AK_XH, AK_XL); |
0282: MOVLW 01 |
0283: MOVWF 29 |
0284: MOVLW 02 |
0285: MOVWF 2A |
0286: CALL 175 |
0287: MOVF 79,W |
0288: MOVWF 28 |
0289: MOVF 78,W |
028A: MOVWF 27 |
.................... return X; |
028B: MOVF 27,W |
028C: MOVWF 78 |
028D: MOVF 28,W |
028E: MOVWF 79 |
.................... } |
028F: BCF 0A.3 |
0290: BCF 0A.4 |
0291: GOTO 40E (RETURN) |
.................... |
.................... int16 akY (void) |
.................... { |
.................... int16 Y; |
.................... Y= akR (AK_YH, AK_YL); |
0292: MOVLW 03 |
0293: MOVWF 29 |
0294: MOVLW 04 |
0295: MOVWF 2A |
0296: CALL 175 |
0297: MOVF 79,W |
0298: MOVWF 28 |
0299: MOVF 78,W |
029A: MOVWF 27 |
.................... return Y; |
029B: MOVF 27,W |
029C: MOVWF 78 |
029D: MOVF 28,W |
029E: MOVWF 79 |
.................... } |
029F: BCF 0A.3 |
02A0: BCF 0A.4 |
02A1: GOTO 413 (RETURN) |
.................... |
.................... int16 akZ (void) |
.................... { |
.................... int16 Z; |
.................... Z= akR (AK_ZH, AK_ZL); |
02A2: MOVLW 05 |
02A3: MOVWF 29 |
02A4: MOVLW 06 |
02A5: MOVWF 2A |
02A6: CALL 175 |
02A7: MOVF 79,W |
02A8: MOVWF 28 |
02A9: MOVF 78,W |
02AA: MOVWF 27 |
.................... return Z; |
02AB: MOVF 27,W |
02AC: MOVWF 78 |
02AD: MOVF 28,W |
02AE: MOVWF 79 |
.................... } |
02AF: BCF 0A.3 |
02B0: BCF 0A.4 |
02B1: GOTO 418 (RETURN) |
.................... |
.................... |
.................... |
.................... |
.................... |
.................... signed int16 X, Y, Z; //promenne pro akcelerometr |
.................... |
.................... void main() |
.................... { |
* |
0397: CLRF 04 |
0398: BCF 03.7 |
0399: MOVLW 1F |
039A: ANDWF 03,F |
039B: MOVLW 71 |
039C: BSF 03.5 |
039D: MOVWF 0F |
039E: MOVF 0F,W |
039F: BCF 03.5 |
03A0: BCF 20.7 |
03A1: MOVF 20,W |
03A2: BSF 03.5 |
03A3: MOVWF 07 |
03A4: BCF 03.5 |
03A5: BSF 07.7 |
03A6: BSF 03.5 |
03A7: BSF 03.6 |
03A8: MOVF 09,W |
03A9: ANDLW C0 |
03AA: MOVWF 09 |
03AB: BCF 03.6 |
03AC: BCF 1F.4 |
03AD: BCF 1F.5 |
03AE: MOVLW 00 |
03AF: BSF 03.6 |
03B0: MOVWF 08 |
03B1: BCF 03.5 |
03B2: CLRF 07 |
03B3: CLRF 08 |
03B4: CLRF 09 |
.................... setup_adc_ports(NO_ANALOGS|VSS_VDD); |
* |
03B8: BSF 03.5 |
03B9: BSF 03.6 |
03BA: MOVF 09,W |
03BB: ANDLW C0 |
03BC: MOVWF 09 |
03BD: BCF 03.6 |
03BE: BCF 1F.4 |
03BF: BCF 1F.5 |
03C0: MOVLW 00 |
03C1: BSF 03.6 |
03C2: MOVWF 08 |
.................... setup_adc(ADC_CLOCK_DIV_2); |
03C3: BCF 03.5 |
03C4: BCF 03.6 |
03C5: BCF 1F.6 |
03C6: BCF 1F.7 |
03C7: BSF 03.5 |
03C8: BCF 1F.7 |
03C9: BCF 03.5 |
03CA: BSF 1F.0 |
.................... setup_spi(SPI_SS_DISABLED); |
03CB: BCF 14.5 |
03CC: BCF 20.5 |
03CD: MOVF 20,W |
03CE: BSF 03.5 |
03CF: MOVWF 07 |
03D0: BCF 03.5 |
03D1: BSF 20.4 |
03D2: MOVF 20,W |
03D3: BSF 03.5 |
03D4: MOVWF 07 |
03D5: BCF 03.5 |
03D6: BCF 20.3 |
03D7: MOVF 20,W |
03D8: BSF 03.5 |
03D9: MOVWF 07 |
03DA: MOVLW 01 |
03DB: BCF 03.5 |
03DC: MOVWF 14 |
03DD: MOVLW 00 |
03DE: BSF 03.5 |
03DF: MOVWF 14 |
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); |
03E0: MOVF 01,W |
03E1: ANDLW C7 |
03E2: IORLW 08 |
03E3: MOVWF 01 |
.................... setup_timer_1(T1_DISABLED); |
03E4: BCF 03.5 |
03E5: CLRF 10 |
.................... setup_timer_2(T2_DISABLED,0,1); |
03E6: MOVLW 00 |
03E7: MOVWF 78 |
03E8: MOVWF 12 |
03E9: MOVLW 00 |
03EA: BSF 03.5 |
03EB: MOVWF 12 |
.................... setup_ccp1(CCP_OFF); |
03EC: BCF 03.5 |
03ED: BSF 20.2 |
03EE: MOVF 20,W |
03EF: BSF 03.5 |
03F0: MOVWF 07 |
03F1: BCF 03.5 |
03F2: CLRF 17 |
03F3: BSF 03.5 |
03F4: CLRF 1B |
03F5: CLRF 1C |
03F6: MOVLW 01 |
03F7: MOVWF 1D |
.................... setup_comparator(NC_NC_NC_NC); |
03F8: BCF 03.5 |
03F9: BSF 03.6 |
03FA: CLRF 07 |
03FB: CLRF 08 |
03FC: CLRF 09 |
.................... |
.................... setAK(); //nastaveni akcelerometru |
03FD: BCF 03.6 |
03FE: GOTO 08B |
.................... |
.................... printf("Akcelerometr IMU01A - MMA8451Q \r\n",); |
03FF: MOVLW 04 |
0400: BSF 03.6 |
0401: MOVWF 0D |
0402: MOVLW 00 |
0403: MOVWF 0F |
0404: BCF 03.6 |
0405: CALL 0EA |
.................... printf("(c) MLAB JACHO 2013 \r\n",); |
0406: MOVLW 15 |
0407: BSF 03.6 |
0408: MOVWF 0D |
0409: MOVLW 00 |
040A: MOVWF 0F |
040B: BCF 03.6 |
040C: CALL 0EA |
.................... |
.................... while(TRUE) |
.................... { |
.................... X=akX (); |
040D: GOTO 282 |
040E: MOVF 79,W |
040F: MOVWF 22 |
0410: MOVF 78,W |
0411: MOVWF 21 |
.................... Y=akY (); |
0412: GOTO 292 |
0413: MOVF 79,W |
0414: MOVWF 24 |
0415: MOVF 78,W |
0416: MOVWF 23 |
.................... Z=akZ (); |
0417: GOTO 2A2 |
0418: MOVF 79,W |
0419: MOVWF 26 |
041A: MOVF 78,W |
041B: MOVWF 25 |
.................... printf("Namerene hodnoty: \r\n",); |
041C: MOVLW 21 |
041D: BSF 03.6 |
041E: MOVWF 0D |
041F: MOVLW 00 |
0420: MOVWF 0F |
0421: BCF 03.6 |
0422: CALL 0EA |
.................... printf("Osa X: %Ld \r\n",X); |
0423: MOVLW 2C |
0424: BSF 03.6 |
0425: MOVWF 0D |
0426: MOVLW 00 |
0427: MOVWF 0F |
0428: BCF 03.0 |
0429: MOVLW 07 |
042A: BCF 03.6 |
042B: MOVWF 27 |
042C: CALL 2B2 |
042D: MOVLW 10 |
042E: MOVWF 04 |
042F: MOVF 22,W |
0430: MOVWF 28 |
0431: MOVF 21,W |
0432: MOVWF 27 |
0433: CALL 301 |
0434: MOVLW 20 |
0435: MOVWF 30 |
0436: CALL 0C6 |
0437: MOVLW 0D |
0438: MOVWF 30 |
0439: CALL 0C6 |
043A: MOVLW 0A |
043B: MOVWF 30 |
043C: CALL 0C6 |
.................... printf("Osa Y: %Ld \r\n",Y); |
043D: MOVLW 33 |
043E: BSF 03.6 |
043F: MOVWF 0D |
0440: MOVLW 00 |
0441: MOVWF 0F |
0442: BCF 03.0 |
0443: MOVLW 07 |
0444: BCF 03.6 |
0445: MOVWF 27 |
0446: CALL 2B2 |
0447: MOVLW 10 |
0448: MOVWF 04 |
0449: MOVF 24,W |
044A: MOVWF 28 |
044B: MOVF 23,W |
044C: MOVWF 27 |
044D: CALL 301 |
044E: MOVLW 20 |
044F: MOVWF 30 |
0450: CALL 0C6 |
0451: MOVLW 0D |
0452: MOVWF 30 |
0453: CALL 0C6 |
0454: MOVLW 0A |
0455: MOVWF 30 |
0456: CALL 0C6 |
.................... printf("Osa Z: %Ld \r\n",Z); |
0457: MOVLW 3A |
0458: BSF 03.6 |
0459: MOVWF 0D |
045A: MOVLW 00 |
045B: MOVWF 0F |
045C: BCF 03.0 |
045D: MOVLW 07 |
045E: BCF 03.6 |
045F: MOVWF 27 |
0460: CALL 2B2 |
0461: MOVLW 10 |
0462: MOVWF 04 |
0463: MOVF 26,W |
0464: MOVWF 28 |
0465: MOVF 25,W |
0466: MOVWF 27 |
0467: CALL 301 |
0468: MOVLW 20 |
0469: MOVWF 30 |
046A: CALL 0C6 |
046B: MOVLW 0D |
046C: MOVWF 30 |
046D: CALL 0C6 |
046E: MOVLW 0A |
046F: MOVWF 30 |
0470: CALL 0C6 |
.................... delay_ms (2000); |
0471: MOVLW 08 |
0472: MOVWF 27 |
0473: MOVLW FA |
0474: MOVWF 28 |
0475: GOTO 381 |
0476: DECFSZ 27,F |
0477: GOTO 473 |
.................... |
.................... } |
0478: GOTO 40D |
.................... } |
.................... |
0479: SLEEP |
Configuration Fuses: |
Word 1: 2CF5 INTRC NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUG |
Word 2: 3FFF NOWRT BORV40 |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.pjt |
---|
0,0 → 1,24 |
[PROJECT] |
Target=D:\Honza\MLAB\Modules\Sensors\IMU01A\SW\PIC16F887\main.hex |
Development_Mode= |
Processor_Text=PIC16F887 |
ToolSuite=CCS |
Processor=0x887F |
[D:\Honza\MLAB\Modules\Sensors\IMU01A\SW\PIC16F887\main] |
Type=4 |
Path= |
FileList= |
BuildTool= |
OptionString= |
AdditionalOptionString= |
[mru-list] |
1=D:\Honza\MLAB\Modules\Sensors\IMU01A\SW\PIC16F887\main.c |
[Windows] |
0=0000 %S 0 0 796 451 3 0 |
[Units] |
Link=0 |
Count=1 |
1=D:\Honza\MLAB\Modules\Sensors\IMU01A\SW\PIC16F887\main |
[Opened Files] |
1=main.c |
2= |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.sta |
---|
0,0 → 1,68 |
ROM used: 1146 (14%) |
1146 (14%) including unused fragments |
0 Average locations per line |
4 Average locations per statement |
RAM used: 13 (4%) at main() level |
26 (7%) worst case |
Stack used: 3 worst case (out of 8 total available) |
Lines Stmts % Files |
----- ----- --- ----- |
46 21 7 main.c |
20 0 0 main.h |
423 0 0 C:\Program Files (x86)\PICC\devices\16F887.h |
2172 260 84 C:\Program Files (x86)\PICC\drivers\math.h |
16 0 0 MMA8451Q.h |
60 28 9 MMA8451Q.c |
----- ----- |
2737 309 Total |
Page ROM % RAM Vol Diff Functions: |
---- --- --- --- --- ---- ---------- |
0 22 2 1 @delay_ms1 |
0 69 6 3 @I2C_READ_1 |
0 74 6 1 @I2C_WRITE_1 |
0 36 3 1 @PUTCHAR_1_ |
0 59 5 0 80 1.2 setAK |
0 269 23 8 558 4.7 akR |
Inline 6 272 5.5 @DIVS1616 |
0 16 1 2 68 2.4 akX |
0 16 1 2 68 2.4 akY |
0 16 1 2 68 2.4 akZ |
0 227 20 1 584 3.3 MAIN |
0 17 1 0 343 8.6 @const232 |
0 70 6 3 367 7.0 @PSTRINGC7_69 |
0 12 1 0 264 6.8 @const234 |
0 11 1 0 153 4.7 @const235 |
0 7 1 0 315 6.5 @const236 |
0 79 7 4 288 6.0 @PSTRINGCN7_69 |
0 128 11 9 209 5.2 @PRINTF_LD_69 |
0 7 1 0 346 7.5 @const241 |
0 7 1 0 318 6.5 @const242 |
Program metrics: |
Functions 16 |
Statements 309 |
Comments 351 |
Volume (V) 7495 |
Difficilty (D) 80.2 |
Effort to implement (E) 600964 |
Time to implement (T) 9 hours, 16 minutes |
Est Delivered Bugs (B) 2 |
Cyclomatic Complexity 25 |
Maintainability (MI) 132 |
Segment Used Free |
----------- ---- ---- |
00000-00003 4 0 |
00004-007FF 1142 902 |
00800-00FFF 0 2048 |
01000-017FF 0 2048 |
01800-01FFF 0 2048 |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.sym |
---|
0,0 → 1,119 |
004-005 @READ_PROGRAM_MEMORY8.P1 |
004 @WRITE_PROGRAM_MEMORY8.P2 |
015 CCP_1_LOW |
015 CCP_1 |
016 CCP_1_HIGH |
01B CCP_2_LOW |
01B CCP_2 |
01C CCP_2_HIGH |
020 @TRIS_C |
021-022 x |
023-024 y |
025-026 z |
027-028 akX.x |
027 @PSTRINGCN7_69.P1 |
027-028 @PRINTF_LD_69.P2 |
027-028 akZ.z |
027-028 akY.y |
027 MAIN.@SCRATCH1 |
027 @PSTRINGC7_69.@SCRATCH1 |
028 @delay_ms1.P1 |
028 @PSTRINGC7_69.@SCRATCH2 |
028 @PSTRINGCN7_69.@SCRATCH1 |
029 akR.H |
029 @PSTRINGC7_69.@SCRATCH3 |
029 @PSTRINGCN7_69.@SCRATCH2 |
029 @PRINTF_LD_69.@SCRATCH1 |
02A akR.l |
02A @PSTRINGCN7_69.@SCRATCH3 |
02A @PRINTF_LD_69.@SCRATCH2 |
02B akR.XL |
02B @PRINTF_LD_69.@SCRATCH3 |
02C akR.XH |
02C @PRINTF_LD_69.@SCRATCH4 |
02D-02E akR.x |
02D @PRINTF_LD_69.@SCRATCH5 |
02E @PRINTF_LD_69.@SCRATCH6 |
02F-030 @DIVS1616.P1 |
02F @I2C_READ_1.P2 |
02F @I2C_WRITE_1.P3 |
02F akR.@SCRATCH1 |
02F @PRINTF_LD_69.@SCRATCH7 |
030 @PUTCHAR_1_.P1 |
030 @I2C_READ_1.@SCRATCH1 |
030 akR.@SCRATCH2 |
031-032 @DIVS1616.P1 |
031 @I2C_READ_1.@SCRATCH2 |
033 @DIVS1616.@SCRATCH1 |
034 @DIVS1616.@SCRATCH2 |
077 @SCRATCH |
078 @SCRATCH |
078 _RETURN_ |
079 @SCRATCH |
07A @SCRATCH |
107.6 C1OUT |
108.6 C2OUT |
10D-10E @WRITE_PROGRAM_MEMORY8.P1 |
10D-10E @READ_PROGRAM_MEMORY8.P2 |
ROM Allocation: |
0381 @delay_ms1 |
0130 @I2C_READ_1 |
0041 @I2C_WRITE_1 |
00C6 @PUTCHAR_1_ |
0800 @ADDFF |
008B setAK |
0175 akR |
023C @DIVS1616 |
0282 akX |
0292 akY |
02A2 akZ |
0397 MAIN |
0004 @const232 |
00EA @PSTRINGC7_69 |
0015 @const234 |
0021 @const235 |
002C @const236 |
02B2 @PSTRINGCN7_69 |
0301 @PRINTF_LD_69 |
0033 @const241 |
003A @const242 |
0397 @cinit |
User Memory space: |
User Memory space: |
Project Directory: |
D:\Honza\MLAB\Modules\Sensors\IMU01A\SW\PIC16F887\ |
Project Files: |
main.c |
main.h |
C:\Program Files (x86)\PICC\devices\16F887.h |
C:\Program Files (x86)\PICC\drivers\math.h |
MMA8451Q.h |
MMA8451Q.c |
Units: |
D:\Honza\MLAB\Modules\Sensors\IMU01A\SW\PIC16F887\main (main) |
Compiler Settings: |
Processor: PIC16F887 |
Pointer Size: 16 |
ADC Range: 0-255 |
Opt Level: 9 |
Short,Int,Long: UNSIGNED: 1,8,16 |
Float,Double: 32,32 |
Output Files: |
Errors: main.err |
Ext Symbols: main.esym |
INHX8: main.hex |
Symbols: main.sym |
List: main.lst |
Debug/COFF: main.cof |
Project: main.PJT |
Call Tree: main.tre |
Statistics: main.sta |
/Modules/Sensors/IMU01A/SW/PIC16F887/main.tre |
---|
0,0 → 1,74 |
ÀÄmain |
ÀÄMAIN 0/227 Ram=1 |
ÃÄ??0?? |
ÃÄsetAK 0/59 Ram=0 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÀÄ@I2C_WRITE_1 0/74 Ram=1 |
ÃÄ@PSTRINGC7_69 0/70 Ram=3 |
³ ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PSTRINGC7_69 0/70 Ram=3 |
³ ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄakX 0/16 Ram=2 |
³ ÀÄakR 0/269 Ram=8 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_READ_1 0/69 Ram=3 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_READ_1 0/69 Ram=3 |
³ ÀÄ@DIVS1616 (Inline) Ram=6 |
ÃÄakY 0/16 Ram=2 |
³ ÀÄakR 0/269 Ram=8 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_READ_1 0/69 Ram=3 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_READ_1 0/69 Ram=3 |
³ ÀÄ@DIVS1616 (Inline) Ram=6 |
ÃÄakZ 0/16 Ram=2 |
³ ÀÄakR 0/269 Ram=8 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_READ_1 0/69 Ram=3 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_WRITE_1 0/74 Ram=1 |
³ ÃÄ@I2C_READ_1 0/69 Ram=3 |
³ ÀÄ@DIVS1616 (Inline) Ram=6 |
ÃÄ@PSTRINGC7_69 0/70 Ram=3 |
³ ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PSTRINGCN7_69 0/79 Ram=4 |
³ ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PRINTF_LD_69 0/128 Ram=9 |
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PSTRINGCN7_69 0/79 Ram=4 |
³ ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PRINTF_LD_69 0/128 Ram=9 |
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PSTRINGCN7_69 0/79 Ram=4 |
³ ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PRINTF_LD_69 0/128 Ram=9 |
³ ÀÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÃÄ@PUTCHAR_1_ 0/36 Ram=1 |
ÀÄ@delay_ms1 0/22 Ram=1 |