123

Dependencies:   mbed

Fork of LG by igor Apu

DeviceCounters.c

Committer:
Diletant
Date:
2016-05-09
Revision:
156:e68ee0bcdcda
Child:
167:bedc0a9d559a

File content as of revision 156:e68ee0bcdcda:

#include "Device.h"
extern Device device;

void InitCountersWithDefaults(void){
  for (uint8_t i = 0; i < 32; i++) device.counters.state.delta[i] = 0;
  device.counters.state.angle = 0;
  device.counters.state.amplitude = 0;
  device.counters.state.frequency = 0;
}

void InitCounters(void){
}

void DeviceCount(void){
  int32_t delta = device.controller.QEI.state.delta;
  
  device.counters.state.angle -= device.counters.state.delta[(device.measurement.counter-31) & 0xff];
  device.counters.state.angle += delta;
  
  device.counters.state.displacement += device.counters.state.delta[(device.measurement.counter-31) & 0xff];
  device.counters.state.displacement -= device.counters.state.delta[(device.measurement.counter-16) & 0xff];
  device.counters.state.displacement -= device.counters.state.delta[(device.measurement.counter-15) & 0xff];
  device.counters.state.displacement += delta;
  
  device.counters.state.delta[device.measurement.counter] = delta;
  
  if (device.counters.state.displacement > 0) device.counters.state.amplitude += device.counters.state.displacement;
  if (device.counters.state.displacement < 0) device.counters.state.amplitude -= device.counters.state.displacement;
  
  if (delta > 0) device.counters.state.frequency += delta;
  if (delta < 0) device.counters.state.frequency -= delta;
  
  device.counters.state.accumulator += device.counters.state.angle;
}