working-est copy with class-based code. still open loop

Dependencies:   mbed

Fork of analoghalls6 by N K

Committer:
bwang
Date:
Sun Mar 01 10:51:28 2015 +0000
Revision:
1:1f58bdcf2956
Child:
4:fdadf4a3577a
moar

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 1:1f58bdcf2956 1 #include "includes.h"
bwang 1:1f58bdcf2956 2 #include "core.h"
bwang 1:1f58bdcf2956 3 #include "sensors.h"
bwang 1:1f58bdcf2956 4 #include "meta.h"
bwang 1:1f58bdcf2956 5
bwang 1:1f58bdcf2956 6 unsigned long StatusUpdater::_time;
bwang 1:1f58bdcf2956 7
bwang 1:1f58bdcf2956 8 StatusUpdater::StatusUpdater(Inverter *inverter, Motor *motor, User *user) {
bwang 1:1f58bdcf2956 9 _inverter = inverter;
bwang 1:1f58bdcf2956 10 _motor = _motor;
bwang 1:1f58bdcf2956 11 _user = user;
bwang 1:1f58bdcf2956 12 _fast_sample_rate = 5000;
bwang 1:1f58bdcf2956 13 _slow_sample_rate = 10;
bwang 1:1f58bdcf2956 14
bwang 1:1f58bdcf2956 15 _time_ticker.attach_us(&time_upd_isr, 50);
bwang 1:1f58bdcf2956 16 }
bwang 1:1f58bdcf2956 17
bwang 1:1f58bdcf2956 18 void StatusUpdater::Config(int fast_sample_rate, int slow_sample_rate) {
bwang 1:1f58bdcf2956 19 _fast_sample_rate = fast_sample_rate;
bwang 1:1f58bdcf2956 20 _slow_sample_rate = slow_sample_rate;
bwang 1:1f58bdcf2956 21 }
bwang 1:1f58bdcf2956 22
bwang 1:1f58bdcf2956 23 void StatusUpdater::time_upd_isr() {
bwang 1:1f58bdcf2956 24 _time++;
bwang 1:1f58bdcf2956 25 }
bwang 1:1f58bdcf2956 26
bwang 1:1f58bdcf2956 27 void StatusUpdater::Start() {
bwang 1:1f58bdcf2956 28 _time = 0;
bwang 1:1f58bdcf2956 29 int fast_us = 1000000 / _fast_sample_rate;
bwang 1:1f58bdcf2956 30 int slow_us = 1000000 / _slow_sample_rate;
bwang 1:1f58bdcf2956 31
bwang 1:1f58bdcf2956 32 int last_fast = 0;
bwang 1:1f58bdcf2956 33 int last_slow = 0;
bwang 1:1f58bdcf2956 34
bwang 1:1f58bdcf2956 35 for (;;) {
bwang 1:1f58bdcf2956 36 if (_time - last_fast > fast_us) {
bwang 1:1f58bdcf2956 37 _motor->UpdateState();
bwang 1:1f58bdcf2956 38 _inverter->UpdateVbus();
bwang 1:1f58bdcf2956 39 last_fast = _time;
bwang 1:1f58bdcf2956 40 }
bwang 1:1f58bdcf2956 41 if (_time - last_slow > slow_us) {
bwang 1:1f58bdcf2956 42 _user->UpdateState();
bwang 1:1f58bdcf2956 43 _motor->UpdateTemp();
bwang 1:1f58bdcf2956 44 _inverter->UpdateTemp();
bwang 1:1f58bdcf2956 45 last_slow = _time;
bwang 1:1f58bdcf2956 46 }
bwang 1:1f58bdcf2956 47 }
bwang 1:1f58bdcf2956 48 }