I thought I would also mention something I ran into this last last week while troubleshooting why my Lynxmotion wireless controller was not syncing up properly. Note: this was when I was developing code for a different processor but the same thing can hit you with the Basic Atom (pro) code.
That is if your code looks something like:
if (something has changed then
process the new data
The PS2 will most likely not work? Why I did not provide enough time in between doing the query for the wireless receiver/transmitter to talk to each other... So make sure you have a delay between readings. Not sure of what the minimum is but 20ms appears to work.
Side Note: On the other processor I am able to use the built-in pull-up resistors on the DAT line and it works fine. Sometime I may try that on the BAP28, to see if you can simply move the PS2 controller down to another group of pins and simply enable the built-in resistor without having to solder something onto the BB2...