When using the “FSK Modem + Network Stack” or “FSK Modem + Network Stack + I2C Bridge”, the function PLT_Poll() must be called to run the network protocol. When a message needs to be transmitted, the PLT_Poll() function will try to acquire the powerline (if enabled), form the packet, transmit the packet, and wait for the acknowledgment or response (depending on the mode and packet type). When a new message is received, the PLT_Poll() function will process the packet (if necessary), form the acknowledgment or response packet (if necessary), and notify the host of the new message by updating the INT_Status register and asserting the PLT_Host_Interrupt_ISR interrupt service routine (if enabled).
The timing is critical especially for acknowledging received packets because the transmitter has a 500ms timeout window if it does not receive the acknowledgment. Therefore, within 500ms of the last byte being transmitted, the receiver must read the packet, generate an acknowledgment packet, and transmit the acknowledgment packet. The duration of the transmission of the acknowledgment packet equals the period of transmitting one byte multiplied by the length of the acknowledgment packet. The duration of each byte is ~5ms @ 2400bps, 6.7ms @ 1800bps, 10ms @ 1200bps, and 20ms @ 600bps. The length of the acknowledgment packet is dependent on the addressing mode used. If source and destination address are 8-bit logical, the packet length will be 8 bytes (including the preamble). If using extended addressing, the packet length will be 10 bytes. If the source and destination address are 64-bit physical, the packet length will be 22 bytes.
Also, before the packet starts being transmitted, a constant frequency tone is transmitted for the duration set by Modem_TXDelay, which is located in the Modem_Config register (0x31). For 1200bps, the minimum delay required is 19ms. For 600bps, the minimum delay required is 25ms. For 1800bps and 2400bps, the delay can be any value.
Lastly, it takes ~15ms to process the packet.
Therefore, the maximum amount of time allowed between calls to PLT_Poll() is:
tPLT_Poll < 500ms - processing time – transmit delay - (acknowledgment packet length * tBYTE)
The following maximum durations are for the longest packets (22 bytes) at each of the baud rates:
2400bps : tPLT_Poll < 500ms – 15ms – 7ms – (22 * 5ms) = 368ms
1800bps : tPLT_Poll < 500ms – 15ms – 7ms – (22 * 6.7ms) = 330ms
1200bps : tPLT_Poll < 500ms – 15ms – 19ms – (22 * 10ms) = 246ms
600bps : tPLT_Poll < 500ms – 15ms – 25ms – (22 * 20ms) = 20ms
Note that if using an external host (e.g. Cypress Powerline Control Panel GUI), the durations may need to be shorter (<50ms in the case of the GUI) because the host may expect a status update sooner.