master/fsm_pdo.c
branchstable-1.5
changeset 2434 fa52128477f6
parent 2421 bc2d4bf9cbe5
child 2498 9cdd7669dc0b
equal deleted inserted replaced
2433:3bdd7a747fae 2434:fa52128477f6
   216         EC_SLAVE_DBG(slave, 1, "Reading PDO assignment of SM%u.\n",
   216         EC_SLAVE_DBG(slave, 1, "Reading PDO assignment of SM%u.\n",
   217                 fsm->sync_index);
   217                 fsm->sync_index);
   218 
   218 
   219         ec_pdo_list_clear_pdos(&fsm->pdos);
   219         ec_pdo_list_clear_pdos(&fsm->pdos);
   220 
   220 
   221         ec_sdo_request_address(&fsm->request, 0x1C10 + fsm->sync_index, 0);
   221         ecrt_sdo_request_index(&fsm->request, 0x1C10 + fsm->sync_index, 0);
   222         ecrt_sdo_request_read(&fsm->request);
   222         ecrt_sdo_request_read(&fsm->request);
   223         fsm->state = ec_fsm_pdo_read_state_pdo_count;
   223         fsm->state = ec_fsm_pdo_read_state_pdo_count;
   224         ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request);
   224         ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request);
   225         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   225         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   226         return;
   226         return;
   272 void ec_fsm_pdo_read_action_next_pdo(
   272 void ec_fsm_pdo_read_action_next_pdo(
   273         ec_fsm_pdo_t *fsm /**< finite state machine */
   273         ec_fsm_pdo_t *fsm /**< finite state machine */
   274         )
   274         )
   275 {
   275 {
   276     if (fsm->pdo_pos <= fsm->pdo_count) {
   276     if (fsm->pdo_pos <= fsm->pdo_count) {
   277         ec_sdo_request_address(&fsm->request, 0x1C10 + fsm->sync_index,
   277         ecrt_sdo_request_index(&fsm->request, 0x1C10 + fsm->sync_index,
   278                 fsm->pdo_pos);
   278                 fsm->pdo_pos);
   279         ecrt_sdo_request_read(&fsm->request);
   279         ecrt_sdo_request_read(&fsm->request);
   280         fsm->state = ec_fsm_pdo_read_state_pdo;
   280         fsm->state = ec_fsm_pdo_read_state_pdo;
   281         ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request);
   281         ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request);
   282         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   282         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   595         }
   595         }
   596 
   596 
   597         // set mapped PDO count to zero
   597         // set mapped PDO count to zero
   598         EC_WRITE_U8(fsm->request.data, 0); // zero PDOs mapped
   598         EC_WRITE_U8(fsm->request.data, 0); // zero PDOs mapped
   599         fsm->request.data_size = 1;
   599         fsm->request.data_size = 1;
   600         ec_sdo_request_address(&fsm->request, 0x1C10 + fsm->sync_index, 0);
   600         ecrt_sdo_request_index(&fsm->request, 0x1C10 + fsm->sync_index, 0);
   601         ecrt_sdo_request_write(&fsm->request);
   601         ecrt_sdo_request_write(&fsm->request);
   602 
   602 
   603         EC_SLAVE_DBG(fsm->slave, 1, "Setting number of assigned"
   603         EC_SLAVE_DBG(fsm->slave, 1, "Setting number of assigned"
   604                 " PDOs to zero.\n");
   604                 " PDOs to zero.\n");
   605 
   605 
   661         ec_fsm_pdo_t *fsm /**< PDO configuration state machine. */
   661         ec_fsm_pdo_t *fsm /**< PDO configuration state machine. */
   662         )
   662         )
   663 {
   663 {
   664     EC_WRITE_U16(fsm->request.data, fsm->pdo->index);
   664     EC_WRITE_U16(fsm->request.data, fsm->pdo->index);
   665     fsm->request.data_size = 2;
   665     fsm->request.data_size = 2;
   666     ec_sdo_request_address(&fsm->request,
   666     ecrt_sdo_request_index(&fsm->request,
   667             0x1C10 + fsm->sync_index, fsm->pdo_pos);
   667             0x1C10 + fsm->sync_index, fsm->pdo_pos);
   668     ecrt_sdo_request_write(&fsm->request);
   668     ecrt_sdo_request_write(&fsm->request);
   669 
   669 
   670     EC_SLAVE_DBG(fsm->slave, 1, "Assigning PDO 0x%04X at position %u.\n",
   670     EC_SLAVE_DBG(fsm->slave, 1, "Assigning PDO 0x%04X at position %u.\n",
   671             fsm->pdo->index, fsm->pdo_pos);
   671             fsm->pdo->index, fsm->pdo_pos);
   698     if (!(fsm->pdo = ec_fsm_pdo_conf_action_next_pdo(fsm, &fsm->pdo->list))) {
   698     if (!(fsm->pdo = ec_fsm_pdo_conf_action_next_pdo(fsm, &fsm->pdo->list))) {
   699 
   699 
   700         // no more PDOs to assign, set PDO count
   700         // no more PDOs to assign, set PDO count
   701         EC_WRITE_U8(fsm->request.data, fsm->pdo_pos);
   701         EC_WRITE_U8(fsm->request.data, fsm->pdo_pos);
   702         fsm->request.data_size = 1;
   702         fsm->request.data_size = 1;
   703         ec_sdo_request_address(&fsm->request, 0x1C10 + fsm->sync_index, 0);
   703         ecrt_sdo_request_index(&fsm->request, 0x1C10 + fsm->sync_index, 0);
   704         ecrt_sdo_request_write(&fsm->request);
   704         ecrt_sdo_request_write(&fsm->request);
   705 
   705 
   706         EC_SLAVE_DBG(fsm->slave, 1,
   706         EC_SLAVE_DBG(fsm->slave, 1,
   707                 "Setting number of assigned PDOs to %u.\n",
   707                 "Setting number of assigned PDOs to %u.\n",
   708                 fsm->pdo_pos);
   708                 fsm->pdo_pos);