Could use some help/advice on troubleshooting a PCB with a propeller chip on-board.
Mahonroy
Posts: 175
in Propeller 1
Hey guys,
So I have been making various devices over the past year using the propeller chip (the QFP 44 package), getting PCB's made, and everything works just fine. Well... I finally got 2x batches of boards (2 different designs) in, along with some new parts, and both of them I get the "No Propeller chip found on any serial port.". I have a DIP version of the propeller chip here in a breadboard circuit and I can connect to that one just fine. I am using the "usb prop plug" and "propeller tool - version 1.3.2".
Here is the schematic that I use for just about every board design:
What I attempted next was to build one of the PCB's, but leave off all other components, only soldering on the bare bones parts for the propeller. In this case I soldered on only the parts in the diagram above (and using an external power source)..... still doesn't work.
I went through the board and verified that 3.3v power was present at all of the pins, verified the grounds, resistor values, I checked for shorts and hot parts.... nothing seems out of the ordinary. I did notice that all of the I/O pins that are not tied to ground (e.g. pin 0 to pin 10 and are floating in this case since I didn't solder the rest of the components to the PCB) are reading around 0.1V. Does that mean anything?
So yeah I am at a complete loss on how to debug this thing. Should I build an even more bare bones PCB only consisting of the QFT propeller, the 4x decoupling caps, and then just the 1x4 header for the USB and thats it? (I was thinking I could still attempt to "identify hardware" or "load ram" function without the EEPROM or crystal?)
Any other things I can try? Thanks and any help is greatly appreciated!
EDIT:
Ok I built another board with just the QFP 44 propeller, 4x 0.1uf power decoupling capacitors, and a 1x4 header for the prop plug, and still nothing :-/
So I have been making various devices over the past year using the propeller chip (the QFP 44 package), getting PCB's made, and everything works just fine. Well... I finally got 2x batches of boards (2 different designs) in, along with some new parts, and both of them I get the "No Propeller chip found on any serial port.". I have a DIP version of the propeller chip here in a breadboard circuit and I can connect to that one just fine. I am using the "usb prop plug" and "propeller tool - version 1.3.2".
Here is the schematic that I use for just about every board design:
What I attempted next was to build one of the PCB's, but leave off all other components, only soldering on the bare bones parts for the propeller. In this case I soldered on only the parts in the diagram above (and using an external power source)..... still doesn't work.
I went through the board and verified that 3.3v power was present at all of the pins, verified the grounds, resistor values, I checked for shorts and hot parts.... nothing seems out of the ordinary. I did notice that all of the I/O pins that are not tied to ground (e.g. pin 0 to pin 10 and are floating in this case since I didn't solder the rest of the components to the PCB) are reading around 0.1V. Does that mean anything?
So yeah I am at a complete loss on how to debug this thing. Should I build an even more bare bones PCB only consisting of the QFT propeller, the 4x decoupling caps, and then just the 1x4 header for the USB and thats it? (I was thinking I could still attempt to "identify hardware" or "load ram" function without the EEPROM or crystal?)
Any other things I can try? Thanks and any help is greatly appreciated!
EDIT:
Ok I built another board with just the QFP 44 propeller, 4x 0.1uf power decoupling capacitors, and a 1x4 header for the prop plug, and still nothing :-/
Comments
The reset circuit also could be a problem. A short duration input pulse might not discharge C3 to a low enough voltage. Try one without the 0.1uF capacitor.
-Phil
The I/O pins are not shorted directly to ground though... there is a 1K resistor in there.
I mentioned I built another board with just the propeller chip, decoupling capacitors, and thats it (so C3 was missing in this one) and I still could not communicate with it.
Since you cannot communicate with the prop it's time for some troubleshooting drudgery. Take a blank board to ohm out and verify that every pin on the propeller chip goes where it is supposed to go and is not shorted to another pin, ground, or 3.3V.
What is the minimum to communicate with the propeller? Is it just power, ground, 4x decoupling capacitors, and thats it?
-Phil
Thanks again for the reply!
So here is where I am confused. I am trying to think of a scenario that would cause this failure. It seems as long as the power and ground are present, that pretty much any pin could have a short with +3.3 or ground and it would be just fine? The only pins that would be the exception would be the RX, TX, and RESET pins right?
Next remove the reset resistor to ground and the capacitor to ground. You already have the proper circuit in the propplug.
BTW 2K is a bit low for the SDA pull-up. I always use 10K although some I2C ICs recommend 5K or 4K7. I also use 10K pull-up on the SCL line too although not specifically necessary.
I noted you also have 24LC32. Is this a typo?
You are correct that an EEPROM and the pull-ups are not required to identify the prop. In fact, neither is a crystal. I see you have correctly tied BOE to Gnd.
So, there is very little that can be wrong - power, reset, p31 & p30, and decoupling, BoE.
What PC OS are you using? I have just found my windows 10 will not identify my prop board but everything is fine on window 7. I have yet to debug the timing.
-Phil
I mentioned earlier that I am using an external power source with bulk capacitors for testing, and that I had built another board with only the propeller chip and decoupling capacitors for the power and thats it (and still nothing).
I am using windows 7. I mentioned earlier that I have a DIP package propeller plugged into a prototype board and I can communicate with that just fine... I just cannot communicate with these QFP 44's.
I got the 2K value straight out of the propeller documentation manual thats why I had been using it.
For sure.. mounting a by pass very close to the power pins is a must.
If you don't have a program in the EEPROM and the communication isn't established at reset then the chip, including the clock, shuts down. I tried looking at the clock for 'running status' indicator in the early stages and couldn't find one. After Caps and a test EEPROM I had a clock. That got me back to the communications and reset areas. I used a scope to look at the TX RX lines to the chip when I ran the 'Identify Hardware' from the Propeller Tool. That helped verify that signals through the FTDI chip to the propeller. I also found that if communication is not established immediately after a reset, then the EEPROM code is loaded and run; if there is no EEPROM code, the chip shuts down. Perhaps that's why they use the DTR as a reset.
I have moved on to attempting a design with SMD devices. I'm new at working with SMD's and not good with mounting them. That project is not going very well. I'm having the same problem you are but I think that's because of my soldering more than anything else. I'll have to work out a way to program an EEPROM and start working backward again.
I probably should redo the board and use a PROP PLUG (reset is derived from DTR by the PROP PLUG).
Good luck
The thing is that a lot of schematics leave out a lot of the minor details that "everyone" knows are needed in order to keep the schematic simple. Unfortunately that "everyone" is not someone relatively new to designing digital electronics.
Sometimes one just has to make sure every detail of a design is done correctly. Time consuming but still faster than guessing and shotgunning a circuit.
So I took a blank board, and pin by pin I verified that everything was indeed how it was supposed to be. I soon realized that the RESET pin from the header was not reaching the RESET pin on the propeller. This would explain that my bare bones PCB attempt was flawed and I needed to include R16 in order for it to reach the prop. I quickly soldered the component in and VOILA! The computer was able to find the propeller. I then realized the only difference between one I had built before, and this one was this barebones one did not have the C3 capacitor for the reset pin.
So I desoldered C3 (reset pin capacitor 0.1 uF) and everything works now. So kwinn was correct, the 0.1 uF capacitor was too large (and this makes sense too because my old designs that worked used a 0.0047 uF capacitor...)
I tell you what... I have troubleshooted a lot of propeller circuits, and 9 out of 10 times it has to do with the reset pin haha something to keep in mind.
Glad to hear you found the problem, and thanks for posting the cause. I am sure that will be of help to others.
That circuit is a big NO! NO!
It's a recipe for killing the PLL. Both sets of power & gnd pins must be conncted. On the QFP44 there are 4 pairs of pins and each requires a 0.1uF bypass cap.
It looks as if it's intended to be a "wire the Prop up like this and it will work" circuit. What with it's nice diagrams of the chips and pins and the picture of the Prop Plug.
What's wrong with it?
1) Pins 29 and 32 are not connected. A major no-no and known way to blow your Prop.
2) No decoupling capacitors anywhere.
3) No caps on the XTAL (Perhaps optional)
4) RST is floated when the Prop Plug is removed. Meaning all kind of random reset is going to happen.
3) The Propeller chip provides programmable capacitor loading. No external caps are required.
4) /RST is pulled up internally when /BOE is grounded.
I definitely agree with your points 1) and 2). This schematic needs to be fixed!
-Phil
Still reset was firing when not needed for me. When connecting (hot plugging) to a serial port on another device. Took the addition of a stiffer pull up and cap to ground to fix it if I remember correctly. Clusso and and I spent quite awhile trying to sort out the best solution there.
Not a problem for most I guess.
Just to reiterate...
No caps are required on the xtal.
I put a 10K pull-up on reset as it helps reduce unwanted resets due to noise. A cap to ground is usual unusual for the prop.
As for USB, plugging in the USB is a no no while running. It's a totally different problem. I mostly use the USB for power too and this gets over the USB problem as a side effect too. The USB problem perhaps should be briefly mentioned on the schematic.
Postedit: OOPS, meant to say that the cap on reset is not normal for the prop
What's the deal with plugging/unplugging the USB?
I would like to think that if I have a board running I can plug in a PropPlug and talk to it over serial/USB without crashing whatever is running at the time.
The Prop Plug is not providing power in the circuit above so why not?
-Phil
As Phil said, it's to do with the FTDI chip only requiring low power to sort of operate, and taking this power from the P30 (serial out from the prop) pin. It is to do with the static protection where diodes are placed between the pin and the power and ground rails. The prop also has these too, as do many chips these days! So it comes about when you mix chips where their power coes from different sources. The FTDI chip (in the PropPlug circuit) derives its power from the USB. If its not present then the power on any interface pin will attempt to power it. The prop provides just enough power from P30 to partially power up the FTDI where it then powers down. It is this power up and down that causes a glitch on the DTR pin which resets the prop. BTW this is not good for the FTI chip either!
Also conversely, I usually install a ~4.7kΩ pulldown rather than a pullup resistor on the Prop rx pin, p31. Then at startup or during execution the program can test that pin, if low, it does not start (or stops) the system serial port. A resistor value much higher than 5kΩ does not work for some reason.
I put a 10K pull-up on reset as it helps reduce unwanted resets due to noise. A cap to ground is usual unusual for the prop.
https://www.parallax.com/sites/default/files/downloads/P8X32A-Propeller-Datasheet-v1.4.0_0.pdf
shows connections to pins 29 and 32 though the reset pin doesn't show any pullups?
could this be because its expected that the prop plug will stay connected as primarily Parallax seems to have its philosophy tied to educational use rather than application in the field?