master/fsm_sii.c
changeset 815 002fe9ec778f
parent 758 8fa6f825eb7d
child 872 d4e0380d63b3
equal deleted inserted replaced
814:a51f857b1b2d 815:002fe9ec778f
   170 {
   170 {
   171     ec_datagram_t *datagram = fsm->datagram;
   171     ec_datagram_t *datagram = fsm->datagram;
   172 
   172 
   173     // initiate read operation
   173     // initiate read operation
   174     switch (fsm->mode) {
   174     switch (fsm->mode) {
   175         case EC_FSM_SII_POSITION:
   175         case EC_FSM_SII_USE_INCREMENT_ADDRESS:
   176             ec_datagram_apwr(datagram, fsm->slave->ring_position, 0x502, 4);
   176             ec_datagram_apwr(datagram, fsm->slave->ring_position, 0x502, 4);
   177             break;
   177             break;
   178         case EC_FSM_SII_NODE:
   178         case EC_FSM_SII_USE_CONFIGURED_ADDRESS:
   179             ec_datagram_npwr(datagram, fsm->slave->station_address, 0x502, 4);
   179             ec_datagram_fpwr(datagram, fsm->slave->station_address, 0x502, 4);
   180             break;
   180             break;
   181     }
   181     }
   182 
   182 
   183     EC_WRITE_U8 (datagram->data,     0x80); // two address octets
   183     EC_WRITE_U8 (datagram->data,     0x80); // two address octets
   184     EC_WRITE_U8 (datagram->data + 1, 0x01); // request read operation
   184     EC_WRITE_U8 (datagram->data + 1, 0x01); // request read operation
   228     fsm->cycles_start = datagram->cycles_sent;
   228     fsm->cycles_start = datagram->cycles_sent;
   229     fsm->check_once_more = 1;
   229     fsm->check_once_more = 1;
   230 
   230 
   231     // issue check/fetch datagram
   231     // issue check/fetch datagram
   232     switch (fsm->mode) {
   232     switch (fsm->mode) {
   233         case EC_FSM_SII_POSITION:
   233         case EC_FSM_SII_USE_INCREMENT_ADDRESS:
   234             ec_datagram_aprd(datagram, fsm->slave->ring_position, 0x502, 10);
   234             ec_datagram_aprd(datagram, fsm->slave->ring_position, 0x502, 10);
   235             break;
   235             break;
   236         case EC_FSM_SII_NODE:
   236         case EC_FSM_SII_USE_CONFIGURED_ADDRESS:
   237             ec_datagram_nprd(datagram, fsm->slave->station_address, 0x502, 10);
   237             ec_datagram_fprd(datagram, fsm->slave->station_address, 0x502, 10);
   238             break;
   238             break;
   239     }
   239     }
   240 
   240 
   241     fsm->retries = EC_FSM_RETRIES;
   241     fsm->retries = EC_FSM_RETRIES;
   242     fsm->state = ec_fsm_sii_state_read_fetch;
   242     fsm->state = ec_fsm_sii_state_read_fetch;
   322 		)
   322 		)
   323 {
   323 {
   324     ec_datagram_t *datagram = fsm->datagram;
   324     ec_datagram_t *datagram = fsm->datagram;
   325 
   325 
   326     // initiate write operation
   326     // initiate write operation
   327     ec_datagram_npwr(datagram, fsm->slave->station_address, 0x502, 8);
   327     ec_datagram_fpwr(datagram, fsm->slave->station_address, 0x502, 8);
   328     EC_WRITE_U8 (datagram->data,     0x81); // two address octets
   328     EC_WRITE_U8 (datagram->data,     0x81); // two address octets
   329 											// + enable write access
   329 											// + enable write access
   330     EC_WRITE_U8 (datagram->data + 1, 0x02); // request write operation
   330     EC_WRITE_U8 (datagram->data + 1, 0x02); // request write operation
   331     EC_WRITE_U16(datagram->data + 2, fsm->word_offset);
   331     EC_WRITE_U16(datagram->data + 2, fsm->word_offset);
   332 	memset(datagram->data + 4, 0x00, 2);
   332 	memset(datagram->data + 4, 0x00, 2);
   374 
   374 
   375     fsm->cycles_start = datagram->cycles_sent;
   375     fsm->cycles_start = datagram->cycles_sent;
   376     fsm->check_once_more = 1;
   376     fsm->check_once_more = 1;
   377 
   377 
   378     // issue check datagram
   378     // issue check datagram
   379     ec_datagram_nprd(datagram, fsm->slave->station_address, 0x502, 2);
   379     ec_datagram_fprd(datagram, fsm->slave->station_address, 0x502, 2);
   380     fsm->retries = EC_FSM_RETRIES;
   380     fsm->retries = EC_FSM_RETRIES;
   381     fsm->state = ec_fsm_sii_state_write_check2;
   381     fsm->state = ec_fsm_sii_state_write_check2;
   382 }
   382 }
   383 
   383 
   384 /*****************************************************************************/
   384 /*****************************************************************************/