summaryrefslogtreecommitdiff
path: root/digital/io/src/simu.host.c
diff options
context:
space:
mode:
authorNicolas Schodet2009-05-05 08:27:28 +0200
committerNicolas Schodet2009-05-05 08:27:28 +0200
commitc2b0d24d97c81990b213905ff58088136410a666 (patch)
tree38a8796dd77e187644435c0851e3f7ecfd40729f /digital/io/src/simu.host.c
parent6abdc9299138fe3b1e4f84605492a9c634b3d088 (diff)
* digital/io:
- added PWM.
Diffstat (limited to 'digital/io/src/simu.host.c')
-rw-r--r--digital/io/src/simu.host.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/digital/io/src/simu.host.c b/digital/io/src/simu.host.c
index 99870e74..935eadec 100644
--- a/digital/io/src/simu.host.c
+++ b/digital/io/src/simu.host.c
@@ -27,12 +27,14 @@
#include "servo.h"
#include "sharp.h"
+#include "pwm.h"
#include "modules/utils/utils.h"
#include "modules/host/host.h"
#include "modules/host/mex.h"
#include "modules/adc/adc.h"
#include "modules/path/path.h"
+#include "io.h"
enum
{
@@ -41,6 +43,7 @@ enum
MSG_SIMU_IO_SERVO = 0xb2,
MSG_SIMU_IO_SHARPS = 0xb3,
MSG_SIMU_IO_PATH = 0xb4,
+ MSG_SIMU_IO_PWM = 0xb5,
};
/** Requested servo position. */
@@ -57,10 +60,15 @@ uint8_t servo_high_time_current_[SERVO_NUMBER];
uint8_t simu_servo_update = 10, simu_servo_update_cpt;
uint8_t simu_switch_update = 100, simu_switch_update_cpt;
uint8_t simu_sharps_update = 9, simu_sharps_update_cpt;
+uint8_t simu_pwm_update = 10, simu_pwm_update_cpt;
/** Sampled switches. */
uint8_t simu_switches;
+/** PWM registers. */
+uint16_t OCR1A;
+uint8_t PORTB;
+
/** Initialise simulation. */
void
simu_init (void)
@@ -68,6 +76,8 @@ simu_init (void)
mex_node_connect ();
simu_servo_update_cpt = 1;
simu_switch_update_cpt = 1;
+ simu_sharps_update_cpt = 1;
+ simu_pwm_update_cpt = 1;
}
/** Make a simulation step. */
@@ -128,6 +138,15 @@ simu_step (void)
mex_msg_pop (m, "H", &adc_values[i]);
mex_msg_delete (m);
}
+ /* Send PWM. */
+ if (simu_pwm_update && !--simu_pwm_update_cpt)
+ {
+ simu_pwm_update_cpt = simu_pwm_update;
+ m = mex_msg_new (MSG_SIMU_IO_PWM);
+ mex_msg_push (m, "h", (IO_PORT (PWM_DIR_IO) & IO_BV (PWM_DIR_IO))
+ ? PWM_OCR : -PWM_OCR);
+ mex_node_send (m);
+ }
}
void