January 2011 Blog Posts (14)

Keypad Question

I am having some trouble with my keypad.  I build my code, then use PICUSB to write the

hex file.  The busy light comes on, then when it turns off, I switch from PRG to RUN. 

However, my keypad does not work at this point.  At one point in my code, I am prompted

to enter how many balls I want to dispense in Can1.  But when I press a key on the

keypad, it does not show up, and the program does not proceed.

However, if I switch back to PRG, turn the board OFF,… Continue

Added by Mohammed Patel on January 30, 2011 at 5:02pm — 4 Comments

Removed Post

I have removed this post because it was based on misinformation. I have decided not to delete the post because I wish the comments to be preserved.

Added by Ritchie Thai on January 28, 2011 at 5:00am — 7 Comments

PIC16 Table Lookups - A Guide

A table lookup on the PIC16 basically takes the following steps:

  • Get the address of index zero of the table
  • Add the table index to the address
  • Jump to that address

The table itself is a sequence of retlw instructions, which put a value into W and return. (dt and related directives are just assembler shorthand for inserting many retlws.)

A first try at implementing a table lookup thus looks like this:…


Added by Jack Sparrow on January 28, 2011 at 1:00am — 6 Comments

SN754110 claims it has internal clamping diodes - this means I don't need diodes in my circuit, right?

The datasheet for the motor driver SN754410 says that it has internal clamping diodes. My assumption is that if I use this IC, it has already taken care of the diode business for me and I can use it without worrying about that. Is this correct, or is this one of those things where you can't trust what the manufacturer says and have to put your own safety diodes in anyways?

Added by Neil Newman on January 26, 2011 at 11:53pm — 1 Comment

Anyone using a tube to vertically stack their tires?

I found a plastic vendor that sells acrylic tubes that are the perfect size to stack the tires (5" inner diameter and 5 1/4" outer diameter).

The only problem is that they only come in 6' long tubes. The 6' tube is ~$50 so I'm looking for 2 other groups who want to split up the 6' it'll be $15-20 for your 2' section of tube.

Heres the webpage for the plastic vendor…


Added by Timothy Ahong on January 26, 2011 at 10:00pm — No Comments

Code too long?

I have written some code (My main file is about 250 lines long) and I have been trying to test it. If I comment all except the first little bit of my code, it performs exactly as I expect when I test it on the LCD and keypad. Naturally then I uncomment a little bit more, and when I try to test it, part way through the operation, it reverts back to the beginning of the code. 
I was thinking there was an error in the code I had written, so…

Added by Matt Nejati on January 26, 2011 at 9:47pm — 10 Comments

Tip: DT location in code matters.

If there is a certain length of code coming before the DT (define table) directive, then characters/entries in the DT past a certain point will fail to return a value. Instead, upon reaching that character, the program will restart from the beginning.


Remember, or realize, that DT is actually a short form for a long list of retlw instructions. That means that having a DT holding a long string counts as many instructions.


This does NOT appear to be an issue of…


Added by Ritchie Thai on January 26, 2011 at 5:30am — 4 Comments

Rant: I know where the bug is, how to fix it, but why?

In one of my define tables, if the table gets to a certain length I get a bug in my code. Just take one character away from that and everything is fine. I have found no significance in regard to... actually, I never counted it until now.

If there are 33 characters, my code bugs out. 32 is okay. Well, 32 is a very important number, but I have longer tables elsewhere. There is also no reason for this to bug out. It's simply absurd!

Added by Ritchie Thai on January 26, 2011 at 12:54am — 1 Comment

Tip: DT Uses Up A LOT of lines.

Each dt (define table) directive uses up a line for each character in your table/string. If you're not careful, your code could get long despite being short.

Here's how the define table directive works. Each character in your string is actually translated into a single retlw (return literal in W).


For example:

dt "Hello!"


is translated into:

retlw 'H'
retlw 'e'

retlw 'l'
retlw 'l'
retlw 'o'
retlw '!'

Added by Ritchie Thai on January 26, 2011 at 12:00am — No Comments

Tip: The directory of your MPLAB project can cause problems.

If the path size of your MPLAB project's directory is too long, for example:


then a .hex file will not be created.


I am now using a workspace with the much shorter path:



Don't computers suck?

Added by Ritchie Thai on January 25, 2011 at 10:30pm — 1 Comment

Tennis Ball Experiment Results





I rolled about 1000 tennis balls down an incline. It turns out that you need an angle greater than 7.7* to ensure a column of tennis balls will roll without error.

Added by Calvin Moes on January 23, 2011 at 3:00pm — 2 Comments

Sample codes for stepper motor

list p=16f877                 ; list directive to define processor      

#include <p16f877.inc>        ; processor specific variable definitions    




cblock 0x20





         ORG       0x0000     ;RESET vector must…


Added by PML on January 19, 2011 at 10:46pm — No Comments

PCB Design Softwares

Altium and Eagle are great softwares for PCB design. The softwares can be used to generate schematics and this information (all the parts and connections) can be automatically transferred to a PCB design layout where the parts can be manually arranged and then automatically routed (for relatively simple layouts). Altium also has a simulator and a 3D design layout mode that is helpful for complicated design. Eagle does not have these functions. However it is much less expensive than Altium.…


Added by Thineshan Kathirchelvan (TA) on January 13, 2011 at 11:00pm — No Comments

Monthly Archives






































© 2021   Created by PML.   Powered by

Badges  |  Report an Issue  |  Terms of Service