Well, I've managed to make parts of the bitlevel routines work, here's a PTI screenshot demonstrating. The leftmost calc is receiving, the middle one is monitoring, and the rightmost is sending.

Let's start with the calculator on the left, the receiver. The second line of dots indicates the data and clock line statuses. Fair enough; the clock line is blinking away (tip), while the data link is mostly steady (ring). The third row shows how far into the code it's getting before it fails: to the first recbyte call. The top row, with the pixel at right on, indicates that it's generating a force collision event.

Now, the right or sending calculator. The leftmost pixel on the top row means it's seeing the collision generated by the receiver and aborting transmission. The second row shows it seeing both clock and data as logical 0 (+5v) when it's in receive mode, as it should, since nothing's trying to send to it. The middlish pixel in the third and final row means it's actually reaching the sendbyte routine in the first place.

So, work continues on figuring out why the collision is occuring.
Well, it sounds cool, too bad I don't understand half of that. Razz
Thanks. I'll probably upload another screenshot tonight, since I got sending to work without any collisions occuring. The receive code appears still buggy, though.
*Bump* My progress through this evening;

1. First, I figured out a few things that allowed me to remove some of the collisions
2. By adding more debug pixels, I finally got the sending calc to complete its sending routines properly, though receiving did not work
3. I adjusted the receiving routine's parameters, allowing me to realize that bytes passed to the sending routine had to be first flipped horizontally (MSB becomes LSB and visa versa) then xor'ed with $ff to flip all the bits' states.
4. I got the receiving calc to recognize it was being sent a message.

At present:
Sent: 00 00 00 00 01 : 06 00 'h' 'e' 'l' 'l' 'o' 00
Received: 00 00 00 00 01: 06 00 00 00 'l' 'l' 'o' 00

Edit: oh, and because of these missing two bytes, an incorrect checksum is returned and the sending buffer fails to clear. Note that whenever the sending routines fail, it never locks up the calc, since this is an interrupt with intelligent lockup detection.
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are GMT - 5 Hours
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum