Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MODSERIAL USBDevice compensation_tables mbed-dsp mbed
Fork of haptic_hid by
Diff: main.cpp
- Revision:
- 1:24b7ab90081a
- Parent:
- 0:f3cf9865b7be
- Child:
- 2:bf29d24b69dd
--- a/main.cpp Fri Jan 16 10:47:17 2015 +0000
+++ b/main.cpp Sat Jan 17 21:42:46 2015 +0000
@@ -1,6 +1,6 @@
#include "mbed.h"
#include "arm_math.h"
-#include "USBHID.h"
+//#include "USBHID.h"
#include <math.h>
#include <string>
#include <stdlib.h>
@@ -13,6 +13,68 @@
/** Main function
* Bootstraps the system
*/
+typedef enum z_state{Z_ZERO,Z_B,Z_I,Z_K,Z_OFF}z_states;
+
+void SetImpedance(float i, float b, float k, float pos)
+{
+ ZControl_I = i;
+ ZControl_B = b;
+ ZControl_K = k;
+ ZControl_RefPos = pos;
+}
+
+void blink(void)
+{
+ static z_states localstate=Z_ZERO;
+ switch(localstate)
+ {
+ case Z_ZERO:
+ {
+ localstate = Z_B;
+ SetImpedance(0,0.01,0,position);
+ break;
+ }
+ case Z_B:
+ {
+ localstate = Z_I;
+ SetImpedance(0.01,0,0,position);
+ break;
+ }
+ case Z_I:
+ {
+ localstate = Z_K;
+ SetImpedance(0,0,0.01,position);
+ break;
+ }
+ case Z_K:
+ {
+ localstate = Z_OFF;
+ SetImpedance(0,0,0,position);
+ driver_enable_a = 0;
+ driver_enable_b = 0;
+ break;
+ }
+ case Z_OFF:
+ {
+ localstate = Z_ZERO;
+ SetImpedance(0,0.00,0,position);
+ driver_enable_a = 1;
+ driver_enable_b = 1;
+ break;
+ }
+ default:
+ {
+ localstate = Z_ZERO;
+ ZControl_I = 0;
+ ZControl_B = 0;
+ ZControl_K = 0;
+ ZControl_RefPos = position;
+ }
+ }
+ info_led_3 != info_led_3;
+ wait_ms(300); //debounce
+}
+
int main()
{
// Initialize system
@@ -21,35 +83,36 @@
calibrate_position();
torque_controller.attach_us(&torque_control, TORQUE_CONTROLLER_INTERVAL_US);
-
- send_report.length = 16;
- recv_report.length = 16;
-
- while(1){
-
+
+ //send_report.length = 16;
+ //recv_report.length = 16;
+
+ while(1) {
int32_t abspos = ABSPOS();
-
- send_report.data[3] = abspos & 0x000000ff;
- send_report.data[2] = (abspos & 0x0000ff00) >> 8;
- send_report.data[1] = (abspos & 0x00ff0000) >> 16;
- send_report.data[0] = (abspos & 0xff000000) >> 24;
-
- for(int i = 4; i < 16; i++){
- send_report.data[i] = 0x0;
- }
-
+
+ if(!user_btn)
+ blink();
+ //send_report.data[3] = abspos & 0x000000ff;
+ //send_report.data[2] = (abspos & 0x0000ff00) >> 8;
+ //send_report.data[1] = (abspos & 0x00ff0000) >> 16;
+ //send_report.data[0] = (abspos & 0xff000000) >> 24;
+
+ //for(int i = 4; i < 16; i++){
+ // send_report.data[i] = 0x0;
+ //}
+
//Send the report
- hid.send(&send_report);
-
+ //hid.send(&send_report);
+
// Try to read
- if(hid.readNB(&recv_report)) {
-
- ZControl_I = (float)1e-6*((recv_report.data[3] << 24) | (recv_report.data[2] << 16) | (recv_report.data[1] << 8) | (recv_report.data[0]));
- ZControl_B = (float)1e-6*((recv_report.data[7] << 24) | (recv_report.data[6] << 16) | (recv_report.data[5] << 8) | (recv_report.data[4]));
- ZControl_K = (float)1e-6*((recv_report.data[11] << 24) | (recv_report.data[10] << 16) | (recv_report.data[9] << 8) | (recv_report.data[8]));
- ZControl_RefPos = (recv_report.data[15] << 24) | (recv_report.data[14] << 16) | (recv_report.data[13] << 8) | (recv_report.data[12]);
- }
-
+ //if(hid.readNB(&recv_report)) {
+
+ // ZControl_I = (float)1e-6*((recv_report.data[3] << 24) | (recv_report.data[2] << 16) | (recv_report.data[1] << 8) | (recv_report.data[0]));
+ // ZControl_B = (float)1e-6*((recv_report.data[7] << 24) | (recv_report.data[6] << 16) | (recv_report.data[5] << 8) | (recv_report.data[4]));
+ // ZControl_K = (float)1e-6*((recv_report.data[11] << 24) | (recv_report.data[10] << 16) | (recv_report.data[9] << 8) | (recv_report.data[8]));
+ // ZControl_RefPos = (recv_report.data[15] << 24) | (recv_report.data[14] << 16) | (recv_report.data[13] << 8) | (recv_report.data[12]);
+ //}
+
info_led_3 = !info_led_3;
wait(0.01);
}
@@ -101,6 +164,7 @@
void initialize_io()
{
user_btn.mode(PullUp);
+ //user_btn.rise(blink);
pc.baud(115200);
spi.format(14,3);
driver_1a.period_us(33);
