Welcome Guest,Register Now
Log In

ANT Forum

Welcome guest, please Login or Register

   

ANT burst message issue

Rank

Total Posts: 9

Joined 2013-12-21

PM

We have following query regarding ANT burst mode transfer from ANT Slave to ANT Master.

We tested under following configuration.
1. ANT network is created using shared channel topology.
2. We have a one master and 3 slaves connected in shared channel network.


Here if Slave 1(Shared Address 0x01) wants to transfer burst message of 32 bytes(lets say 4 frames of 8 bytes each).
then what shall we keep as Shared address of slave? Should it be 01 (0x01) or global Shared address (0x00)?

what we observed are as follows.

Scenario 1:

Precondition : Slave 1 continuously receives Broadcast message from master with shared address 0x00.
Observation:

A) If Slave 1 initiate burst message with shared address 0x01, then stack does not respond at all for this
burst message(fails to send message).
B) if Slave 1 initiate burst message with shared address 0x00 then this burst message will be successfully delivered to master Node.

Scenario 2:

Precondition : Slave 1 continuously receives Broadcast message from master with shared address 0x01(slave specific)
Observation:

A) If Slave 1 initiate burst message with shared address 0x00, then stack does not respond at all for this
burst message(fails to send message).
B) if Slave 1 initiate burst message with shared address 0x01 then this burst message will be successfully delivered to master Node.

Is this behavior correct?

     
Avatar
RankRankRankRank

Total Posts: 662

Joined 2012-10-09

PM

0 is a global address, it is not intended to be used for an individual shared slave, and should not be used to send messages to the master.

For the slave to send back a burst to the master, the correct method is to use its own address (e.g. scenario 2). The master can alternate between sending messages to address 0, for all nodes to receive them (but not reply), and polling individual nodes with their specific address. A shared slave can only send a message back to the master after receiving a message with address matching its own. To poll a slave, the master would ideally send two messages in a row for that address.

Eg..

Master sends broadcast to address 0
--- all shared slaves receive it
Master sends broadcast to address 0
--- all shared slaves receive it
Master sends broadcast to address 1
--- slave 1 sends burst transfer; burst is queued
Master sends broadcast to address 1
--- Burst transfer for slave 1 is transmitted over the air and received by master
Master sends broadcast to address 2....
     
Avatar
RankRankRankRank

Total Posts: 662

Joined 2012-10-09

PM

Also, if you are bursting from a shared slave to a master, make sure that the first byte (or two) of the first and last packet are set to the shared address, and be careful to set the address on the slave again right after finishing the burst, specially in case of burst failures (i.e., send a broadcast message with the address field set to the slave's address). Otherwise, you may end up unintentionally changing your address to the first (or two) bytes of the last transmitted burst packet.

If communication from the slaves to the master is supposed to be spontaneous (i.e., not polled), a shared channel may not be the best fit for your application. A standard non-shared channel may be sufficient if communication from slave to master is infrequent. The shared channel uses polling to avoid collisions for systems with frequent communication from slaves to master - without the polling, and communicating only on address 0, it is really no different than a standard non shared channel.

You can find more details on this on Section 5.6 of the ANT Protocol and Message Usage Document.      
Rank

Total Posts: 9

Joined 2013-12-21

PM

alejandra,

First of I am apologies for late reply. I am very thankful to you as your solution work for my problem. Thanks a lot again.