When trying to troubleshoot the lockups we slowly broke the following line into multiple calls.
Code:
_wmp->Transaction(0x00, 1, &buffer[0], sizeof(buffer));
Code:
printf("I2C Write\n");
_wmp->Transaction(0x00, 1, 0, 0;
printf("I2C Read Start\n");
_wmp->Transaction(0, 0, &buffer[0], sizeof(buffer));
printf("I2C Read Finish\n");
At this point it would lockup and the console would show the following.
Code:
...
I2C Write
I2C Read Start
Whenever a lockup occurred we found that momentarily removing power from the Wii MotionPlus would unlock the system and it would continue executing for 10s of seconds before the same thing happened.
We ended the night with the following code and had successfully run 5 minutes with no lockups. That may just be a coincidence
Code:
_wmp->Transaction(0x00, 1, 0, 0);
_wmp->Transaction(0, 0, &buffer[0], 1));
_wmp->Transaction(0, 0, &buffer[1], 1));
_wmp->Transaction(0, 0, &buffer[2], 1));
_wmp->Transaction(0, 0, &buffer[3], 1));
_wmp->Transaction(0, 0, &buffer[4], 1));
_wmp->Transaction(0, 0, &buffer[5], 1));
Thanks again and appreciate your willingness to assist!!!
Kyle