Home/Support/Support Forum/Calling tcp_tick 128X causes SPI errors
Welcome to Digi Forum, where you can ask questions and receive answers from other members of the community.

Calling tcp_tick 128X causes SPI errors

0 votes
I am using the RCM5650W SPI library along with WiFi to log temperature and humidity from a HIH6000 SPI sensor. When I use this code, the values from the sensor are bogus:
sock_init(); while (ifpending(IF_DEFAULT) == IF_COMING_UP) { tcp_tick(NULL); } http_init(); tcp_reserveport(80); brdInit(); HIHinit(); //initialize SPI ports <read SPI data using SPI library >

but this version allows the correct SPI values to be returned
sock_init(); ifpending(IF_DEFAULT) tcp_tick(NULL); http_init(); tcp_reserveport(80); brdInit(); HIHinit(); <read SPI data >

So it is some aspect of the looping. I found that the while loop executes about 1800 times, so I started trying different loop values to understand where the problem occurs.
I found that looping <=127 times gave the correct values, but >= 128 times gave the bogus values. It is also something in tcp_tick() that is creating the issue.
The SPI library uses PB0 for the SPI clock which is also used by the WiFi, so I can see that there may be some potential conflict.
But why 127/128 is magic (other than being 0x7F/80) seems odd. I don't see anything in the tcp_tick() code that would be dependent on the number of times the function is executed.
Would like to understand the sensitivity to the number of execution calls.
asked Aug 16, 2015 in Rabbit Software by bflusche New to the Community (3 points)

Please log in or register to answer this question.