/demos/trunk/chimera/initfile.c |
---|
22,9 → 22,7 |
#include "modules/dummy.h" |
#include "modules/intdrive.h" |
#include <drivers/shark_input26.h> |
#include <drivers/shark_keyb26.h> |
#include <drivers/shark_linuxc26.h> |
#include <drivers/keyb.h> |
/*+ sysyem tick in us +*/ |
#define TICK 1000 |
42,9 → 40,8 |
{ |
struct multiboot_info *mb = (struct multiboot_info *)arg; |
INTDRIVE_register_level(INTDRIVE_Q, INTDRIVE_T, INTDRIVE_FLAGS); |
EDF_register_level(EDF_ENABLE_ALL); |
HCBS_register_level(HCBS_ENABLE_ALL, 1); |
HCBS_register_level(HCBS_ENABLE_ALL, 0); |
RR_register_level(RRTICK, RR_MAIN_YES, mb); |
dummy_register_level(); |
61,9 → 58,7 |
HARTPORT_init(); |
LINUXC26_register_module(); |
INPUT26_init(); |
KEYB26_init(&kparms); |
KEYB_init(&kparms); |
__call_main__(mb); |
/demos/trunk/chimera/calibrate.c |
---|
33,7 → 33,7 |
{1,{0,90,-45,45,-45,45},{417601,388801,424741},{-216000,-43200,82770}}, |
{-1,{0,90,-45,45,-45,45},{421199,421199,443799},{165600,-8999,30600}}, |
{1,{0,90,-45,45,0,90},{414001,424801,410401},{-162000,39600,-122400}}, |
{-1,{0,90,-45,45,0,90},{0,0,0},{0,0,0}}, |
{-1,{0,90,-45,45,0,90},{410399,446399,399599},{154800,-3599,108000}}, |
}; |
int adjust(int angle_sec, int leg, int num) { |
/demos/trunk/chimera/chimera.c |
---|
33,7 → 33,7 |
status.power = 1; |
kern_gettime(&(e[i].time)); |
ADDUSEC2TIMESPEC(10000000,&(e[i].time)); |
ADDUSEC2TIMESPEC( 5000000,&(e[i].time)); |
e[i].type = EVT_SET_MASK_LEG_ANGLE; |
e[i].mask = 0x3F; |
45,7 → 45,7 |
insert_action_event(&(e[i])); |
kern_gettime(&(e[i+1].time)); |
ADDUSEC2TIMESPEC(11000000,&(e[i+1].time)); |
ADDUSEC2TIMESPEC( 6000000,&(e[i+1].time)); |
e[i+1].type = EVT_SET_MASK_LEG_ANGLE; |
e[i+1].mask = 0x3F; |
57,7 → 57,7 |
insert_action_event(&(e[i+1])); |
kern_gettime(&(e[i+2].time)); |
ADDUSEC2TIMESPEC(12000000,&(e[i+2].time)); |
ADDUSEC2TIMESPEC( 7000000,&(e[i+2].time)); |
e[i+2].type = EVT_SET_MASK_LEG_ANGLE; |
e[i+2].mask = 0x3F; |
69,7 → 69,7 |
insert_action_event(&(e[i+2])); |
kern_gettime(&(e[i+3].time)); |
ADDUSEC2TIMESPEC(13000000,&(e[i+3].time)); |
ADDUSEC2TIMESPEC( 8000000,&(e[i+3].time)); |
e[i+3].type = EVT_SET_MASK_LEG_ANGLE; |
e[i+3].mask = 0x3F; |
81,7 → 81,7 |
insert_action_event(&(e[i+3])); |
kern_gettime(&(e[i+4].time)); |
ADDUSEC2TIMESPEC(15000000,&(e[i+4].time)); |
ADDUSEC2TIMESPEC(10000000,&(e[i+4].time)); |
e[i+4].type = EVT_SET_MASK_LEG_ANGLE; |
e[i+4].mask = 0x3F; |
108,7 → 108,7 |
init_send(); /* Comunication */ |
init_key(); /* Keyboard */ |
//action_stand_up(); |
action_stand_up(); |
return 0; |
/demos/trunk/chimera/send.c |
---|
150,9 → 150,9 |
status.cfg[i].pwm = e->pwm; |
#ifdef DEBUG_SEND |
//#ifdef DEBUG_SEND |
printf_xy(3,2,WHITE,"%8d: Update leg %2d angle",(int)kern_gettime(NULL),i); |
#endif |
//#endif |
} |
170,7 → 170,9 |
HEXAPOD_STATE old_status; |
register char changes, new_pos, new_pwm, new_power; |
int res,n; |
struct timespec t; |
for (n=0; n<6;n++) { |
old_status.ang[n].a = 0; |
old_status.ang[n].b = 0; |
244,6 → 246,8 |
#endif |
} |
} |
sys_gettime(&t); |
printf_xy(1,20,WHITE,"%d:CHANGE = %d",(int)t.tv_sec,changes); |
task_endcycle(); |
} |
311,8 → 315,8 |
if (pid == NIL) { |
perror("Could not create task <Get_Task>"); |
sys_end(); |
} //else |
//task_activate(pid); |
} else |
task_activate(pid); |
} |
void init_send() |
/demos/trunk/chimera/keys.c |
---|
82,145 → 82,119 |
{ |
KEY_EVT k; |
/* Leg Selector */ |
k.flag = 0; |
k.scan = KEY_1; |
k.ascii = '1'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_2; |
k.ascii = '2'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_3; |
k.ascii = '3'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_4; |
k.ascii = '4'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_5; |
k.ascii = '5'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_6; |
k.ascii = '6'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
/* Leg Position */ |
k.flag = 0; |
k.scan = KEY_J; |
k.ascii = 'j'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_K; |
k.ascii = 'k'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_L; |
k.ascii = 'l'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_U; |
k.ascii = 'u'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_I; |
k.ascii = 'i'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_O; |
k.ascii = 'o'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_Q; |
k.ascii = 'q'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_W; |
k.ascii = 'w'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_E; |
k.ascii = 'e'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_Z; |
k.ascii = 'z'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_C; |
k.ascii = 'c'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
k.scan = KEY_C; |
k.ascii = 'c'; |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_A; |
k.scan = KEY_A; |
k.ascii = 'a'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_S; |
k.scan = KEY_S; |
k.ascii = 's'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_D; |
k.scan = KEY_D; |
k.ascii = 'd'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_F; |
k.flag = 0; |
k.scan = KEY_F; |
k.ascii = 'f'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_G; |
k.scan = KEY_G; |
k.ascii = 'g'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
k.flag = 0; |
k.scan = KEY_H; |
k.flag = 0; |
k.scan = KEY_H; |
k.ascii = 'h'; |
k.status = KEY_PRESSED; |
keyb_hook(k,pad,FALSE); |
keyb_hook(k,pad); |
} |
/demos/trunk/chimera/makefile |
---|
12,5 → 12,5 |
include $(BASE)/config/example.mk |
chimera: |
make -f $(SUBMAKE) APP=chimera INIT= OTHEROBJS="initfile.o calibrate.o send.o action.o keys.o" SHARKOPT="__INPUT__ __NEWPCI__ __SERVO__ __LINUXC26__" |
make -f $(SUBMAKE) APP=chimera INIT= OTHEROBJS="initfile.o calibrate.o send.o action.o keys.o" SHARKOPT="__OLDCHAR__ __SERVO__" |
/demos/trunk/chimera/chimera.h |
---|
20,7 → 20,7 |
#include <semaphore.h> |
#include "modules/sem.h" |
#include "modules/hartport.h" |
#include <drivers/shark_keyb26.h> |
#include <drivers/keyb.h> |
#include <servo.h> |