Added HangmanGame class, but does not work yet
Dependencies: SDFileSystem app epson mbed msp430 pl tests
vcom.cpp@0:fa7450a43b99, 2017-12-04 (annotated)
- Committer:
- group-FlexBook
- Date:
- Mon Dec 04 09:32:20 2017 +0000
- Revision:
- 0:fa7450a43b99
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
group-FlexBook | 0:fa7450a43b99 | 1 | /* |
group-FlexBook | 0:fa7450a43b99 | 2 | Plastic Logic EPD project on MSP430 |
group-FlexBook | 0:fa7450a43b99 | 3 | |
group-FlexBook | 0:fa7450a43b99 | 4 | Copyright (C) 2013 Plastic Logic Limited |
group-FlexBook | 0:fa7450a43b99 | 5 | |
group-FlexBook | 0:fa7450a43b99 | 6 | This program is free software: you can redistribute it and/or modify |
group-FlexBook | 0:fa7450a43b99 | 7 | it under the terms of the GNU General Public License as published by |
group-FlexBook | 0:fa7450a43b99 | 8 | the Free Software Foundation, either version 3 of the License, or |
group-FlexBook | 0:fa7450a43b99 | 9 | (at your option) any later version. |
group-FlexBook | 0:fa7450a43b99 | 10 | |
group-FlexBook | 0:fa7450a43b99 | 11 | This program is distributed in the hope that it will be useful, |
group-FlexBook | 0:fa7450a43b99 | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
group-FlexBook | 0:fa7450a43b99 | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
group-FlexBook | 0:fa7450a43b99 | 14 | GNU General Public License for more details. |
group-FlexBook | 0:fa7450a43b99 | 15 | |
group-FlexBook | 0:fa7450a43b99 | 16 | You should have received a copy of the GNU General Public License |
group-FlexBook | 0:fa7450a43b99 | 17 | along with this program. If not, see <http://www.gnu.org/licenses/>. |
group-FlexBook | 0:fa7450a43b99 | 18 | */ |
group-FlexBook | 0:fa7450a43b99 | 19 | /* |
group-FlexBook | 0:fa7450a43b99 | 20 | * vcom.c -- VCOM Calculation support |
group-FlexBook | 0:fa7450a43b99 | 21 | * |
group-FlexBook | 0:fa7450a43b99 | 22 | * Authors: Nick Terry <nick.terry@plasticlogic.com> |
group-FlexBook | 0:fa7450a43b99 | 23 | * |
group-FlexBook | 0:fa7450a43b99 | 24 | */ |
group-FlexBook | 0:fa7450a43b99 | 25 | |
group-FlexBook | 0:fa7450a43b99 | 26 | #include "assert.h" |
group-FlexBook | 0:fa7450a43b99 | 27 | #include "vcom.h" |
group-FlexBook | 0:fa7450a43b99 | 28 | #include <stdlib.h> |
group-FlexBook | 0:fa7450a43b99 | 29 | |
group-FlexBook | 0:fa7450a43b99 | 30 | #define LOG_TAG "vcom" |
group-FlexBook | 0:fa7450a43b99 | 31 | #include "utils.h" |
group-FlexBook | 0:fa7450a43b99 | 32 | |
group-FlexBook | 0:fa7450a43b99 | 33 | void vcom_init(struct vcom_cal *v, const struct pl_hw_vcom_info *c) |
group-FlexBook | 0:fa7450a43b99 | 34 | { |
group-FlexBook | 0:fa7450a43b99 | 35 | assert(v != NULL); |
group-FlexBook | 0:fa7450a43b99 | 36 | assert(c != NULL); |
group-FlexBook | 0:fa7450a43b99 | 37 | |
group-FlexBook | 0:fa7450a43b99 | 38 | v->dac_dx = c->dac_x2 - c->dac_x1; |
group-FlexBook | 0:fa7450a43b99 | 39 | v->dac_dy = c->dac_y2 - c->dac_y1; |
group-FlexBook | 0:fa7450a43b99 | 40 | v->dac_offset = c->dac_y1 - |
group-FlexBook | 0:fa7450a43b99 | 41 | DIV_ROUND_CLOSEST((c->dac_x1 * v->dac_dy), v->dac_dx); |
group-FlexBook | 0:fa7450a43b99 | 42 | v->swing = c->vgpos_mv - c->vgneg_mv; |
group-FlexBook | 0:fa7450a43b99 | 43 | v->swing_ideal = c->swing_ideal; |
group-FlexBook | 0:fa7450a43b99 | 44 | v->dac_step_mv = DIV_ROUND_CLOSEST(v->dac_dy, v->dac_dx); |
group-FlexBook | 0:fa7450a43b99 | 45 | } |
group-FlexBook | 0:fa7450a43b99 | 46 | |
group-FlexBook | 0:fa7450a43b99 | 47 | int vcom_calculate(const struct vcom_cal *v, int input_mv) |
group-FlexBook | 0:fa7450a43b99 | 48 | { |
group-FlexBook | 0:fa7450a43b99 | 49 | int32_t scaled_mv; |
group-FlexBook | 0:fa7450a43b99 | 50 | int dac_value; |
group-FlexBook | 0:fa7450a43b99 | 51 | |
group-FlexBook | 0:fa7450a43b99 | 52 | assert(v != NULL); |
group-FlexBook | 0:fa7450a43b99 | 53 | |
group-FlexBook | 0:fa7450a43b99 | 54 | scaled_mv = DIV_ROUND_CLOSEST(input_mv * v->swing, v->swing_ideal); |
group-FlexBook | 0:fa7450a43b99 | 55 | dac_value = DIV_ROUND_CLOSEST((scaled_mv - v->dac_offset) * v->dac_dx, |
group-FlexBook | 0:fa7450a43b99 | 56 | v->dac_dy); |
group-FlexBook | 0:fa7450a43b99 | 57 | |
group-FlexBook | 0:fa7450a43b99 | 58 | LOG("input: %d, scaled: %ld, DAC reg: 0x%02X", |
group-FlexBook | 0:fa7450a43b99 | 59 | input_mv, scaled_mv, dac_value); |
group-FlexBook | 0:fa7450a43b99 | 60 | |
group-FlexBook | 0:fa7450a43b99 | 61 | return dac_value; |
group-FlexBook | 0:fa7450a43b99 | 62 | } |