Mechanics and Construction > Mechanics and Construction

Robot Construction Log

<< < (4/5) > >>

 ;D Hello!
Awesome work! I have tried also to use the wire wrap direction, and found that the wires acted like
antennas, with the bus speeds. This put out a lot of noise, and loaded down my CPU with a fanout rate.
I did not do a good of job like you have, but only present this as a possibility. Good Luck!!  ;) :) :D ;D

--- Quote ---I have tried also to use the wire wrap direction, and found that the wires acted like
antennas, with the bus speeds. This put out a lot of noise, and loaded down my CPU with a fanout rate.
--- End quote ---

    Yeah, I thought that might be a possibility, but I am not experienced enough to know if it is an issue in my case or not. Just to be sure, I set up a test jig for the 8155 on a breadboard, and tried to write to it slowly using an Arduino board. That proved to be unsuccessful, and after several other attempts, I came to the conclusion that the chips were dead.

    I ordered some new ones off of Ebay, and tried to write to those using the same test setup, however I was unsuccessful. At that point I began to doubt whether my test setup was correct, so I installed one of the new 8155s on robot.

    Previously, when I still was using the refurbished chips, I had attempted to program the robot using the manual programmer. It turns out that I had wired it incorrectly, and the address/data bus lines were mixed up. Instead of attempting to fix the programmer, I tried to use the automatic programmer which I thought was working. However as is evident from my previous posts, those attempts proved to be futile.

    Now that I had installed the new chip on the robot, I attempted to program the robot with the automatic programer, but that was ineffective. At this point I thought that the automatic programer might have a problem, so rather than try to debug its the hardware and code, I fixed the manual programmer and housed it in a tea tin. (Previously I had it in a cardboard box, but it looked really suspicious with wires hanging out, a red 7-segment display, and a bunch of red buttons, so I decided that I should make it a little less threatening.) I then used the manual programmer to program the robot to simply stand still, (if you remember, in its naturally unprogrammed state, the robot rolls backward,) and when I was finished, the robot did not move, indicating the the programming had been successful.

    So it appeared that the new chips and the manual programmer worked, but that the automatic programmer did not. The next day I attempted to program the robot again with the manual programmer, but the programmer acted erratically. Since then I have tried to repair it, but have had little success.

    Attached to this post are two pictures of the manual programmer. To operate the programmer, the programmer is first plugged into the back of the robot. Then the two toggle switches directly under the display are used to select which chip to write to. Next, the address to which the data is to be written is set up using the two red buttons on the right side of the programmer. Once the correct address is selected, the button on the top left of the programmer is pushed to latch the address. Then the two buttons on the right side are used again, except this time, to set up the data to write to the address that was previously latched. Once the data is set up, the bottom left button is pushed to write that data.

    I have been doing some debugging of the programer, and have discovered something very interesting.

    At first I thought that the manual programmer might not have been functioning properly because the supply voltage was too low. I thought this might have been a problem because the programmer is powered by the robot through some relatively long wires, and I thought that the voltage drop might have been enough to drop the supply rail below the tolerance of the ICs in the programmer. I then measured the supply rail at the programer, and while it was low, it was not below the minimum required by the components.

    Even though the supply voltage was in tolerance, because the supply was a little low, I wondered if I increasing the voltage might solve the problem. To test to see if this would work, I removed the main board, (which draws a lot of current and causes the voltage rail to dip a little), and attached the manual programmer. After some testing, it was clear that the programmer was functioning without error. I then measured the supply rail in the programmer, expecting to see a higher voltage, but to my surprise, the rail was only about 30mV higher.

    I now strongly suspect that the main board is somehow interfering with the programmer which is why it is acting erratically.

    I have finally identified and fixed the problem. Both the manual and automatic programmers put the 8085 into reset when they are being used to write to the 8155s. When 8085 processor is in reset, it tri-states the data/address bus, and the control lines, including the read (active low) line. I assumed (incorrectly) that the 8155 peripheral chips would see the tri-stated read line as a high, and so I did not bother to have the programmer tie the the line high when it was being used to write to the 8155s. Since the tri-stated read line was actually seen by the 8155 as a low, the 8155 pushed its stored data onto the bus, while at the same time, the programmer was pushing the data it wanted to write to the 8155 onto the bus. This bus contention made it impossible to write to the 8155s, and thus program the robot.

    After I figured this out, I tied the read line high when using the manual programmer, and loaded a short program into the robots memory, to make it stand still. It was successful so I tried to load the same program with the automatic programer, and that also worked. Next I attempted to program the robot using the refurbished 8155s that I though were broken, and they worked. At that point I was feeling pretty stupid, but I was glad that it was finally working.

    I have been experimenting with more complicated programs to test the various circuits on the main board, and so far things have been relatively successful. I was having some issues with the 8085 resetting every so often, especially when main drive motor started, but after adding some decoupling and bulk capacitors, the problems disappeared.

    A while ago I posted a more polished project description of this robot along with some better pictures on the EEV Blog Forum, as a way to bring the project to a close. I linked back to this thread as the build log, but I guess I forgot to post a link here to the write up on the EEV Forum, so here it is:'s-robot/


[0] Message Index

[#] Next page

[*] Previous page

Go to full version