equal
deleted
inserted
replaced
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); |