N K
/
analoghalls6
motor spins
Fork of analoghalls5 by
statusupdater.cpp@1:1f58bdcf2956, 2015-03-01 (annotated)
- Committer:
- bwang
- Date:
- Sun Mar 01 10:51:28 2015 +0000
- Revision:
- 1:1f58bdcf2956
- Child:
- 4:fdadf4a3577a
moar
Who changed what in which revision?
User | Revision | Line number | New 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 | } |