PDA

View Full Version : Ascii debug issues?



achilles03
- 15th November 2005, 02:24
I had a program that communicated via RS232 to my PC pretty well, but I lost it in a hard drive transfer and can't get a new program to work exactly right.

The program I have has the following serout2 command repeated in a loop:

serout2 portb.2,396,["TACOS"]

On my terminal program, all I get is something like:
"aeU aeU aeU aeU aeU"

(the a is actually a Greek alpha)

I've also tried (with somewhat similar results as above):
serout2 portb.2,396,[DEC 84,65,67,79,115,33,13]

I have the terminal program set to recieve at 2400, true, non-inverted, 8-bit and 1 stop bit. What am I missing?

Thanks in advance for any help!
Dave

mister_e
- 15th November 2005, 19:55
what about the osc speed? if different than 4MHZ, did you use the DEFINE OSC ???

achilles03
- 16th November 2005, 02:32
Yeah, I set it to 4Mhz.

milestag
- 17th November 2005, 04:20
I am suffering a similar problem here with a PIC18F2525. I know the MAX232 interface is fine, as it works perfect for bootloading. And I can get HSEROUT to work fine, but when I try to use SEROUT I get wierd characters on hyperterminal.

I am runnig at 8MHz with a ceramic resonator (yes I use DEFINE OSC 8) and using 9600 baud.

I'm wondering if it's a timing issue with software vs hardware generated serial data. I still need to try generating from other pins. Possible that the USART is still doing something to the TX pin due to the bootloader having configured it. Still troubleshooting ....

Bruce
- 17th November 2005, 17:04
Are you using TRUE mode with SEROUT?

Going through the MAX232 you'll need to use TRUE mode. With a direct connection to the PC, you would use inverted.

mister_e
- 17th November 2005, 17:25
In addition to Bruce, what about the config fuses? HS OSC or XT OSC???

milestag
- 17th November 2005, 19:17
For mine, I am using T9600 for SEROUT. And Hyperterm is set to 8N1.

Oscillator config fuse is set to XT (done in the bootloader firmware).

As I said, HSEROUT works perfectly. The bootloader runs smoothly at 19200, then I use the DEFINES in the PBP program to set the USART to 9600 baud.

I WILL find the problem....eventually :). I haven't exhausted all of my methodical troubleshooting options yet. And I have a bit more reading up on the USART. It's possible I can just use the USART once I learn how to quickly switch between USART and using the pin as a digital I/O.

But it concerns me that I can't get the the software serial routines to put out anything but apparent garbage. And it's probably the same thing that is causing problems for Achilles.

achilles03
- 18th November 2005, 05:24
I'm still having a rough time getting mine to communicate correctly. I've even tried 2 different PICs (12F629 and a 16F628). Below is the code I'm using for the 629:

______________________________________
cmcon=7

define osc 4

loop:
serout GPIO.0,3,[84,97,99,111,10,13]
pause 50
low portb.1
pause 50
high portb.1
Goto loop
______________________________________

However, here is the output I get:
http://www.geocities.com/achilles03/debug.jpg

I'm running it off the internal osc. Is it possible the frequency of the internal osc varies enough to result in an unintelligible output?

I've also tried different baud rates and serout2, but with similar results (for both PICS). Can anyone see anything obvious, like some sort of conversion or program omission, that I'm doing wrong? I'd appreciate any advice.

Dave

mister_e
- 18th November 2005, 07:15
with 8MHZ osc, you must set the config fuse to HS osc. Bruce already spot on the problem cause...


Going through the MAX232 you'll need to use TRUE mode. With a direct connection to the PC, you would use inverted.

Souds really like a bad Inverted/True mode to me.

Dick Ivers
- 18th November 2005, 12:40
Do you have a null modem in your PIC to PC cable?

achilles03
- 18th November 2005, 13:02
I have pin 2 (PIC side) connected to pin 3 (PC side), and pin 5 (GND) on both connected. I also have pins 7 and 8 connected on the PC side.

milestag
- 18th November 2005, 13:11
Achilles,
A little while back, I saw a post by Melanie that stated you MUST use a crystal or resonator for reliable PIC to PC async comms. I would say this is ESPECIALLY true for a PIC12F629. Might do better with a 12F683 which has 1% accuracy internal osc (factory calibrated) without the need for reading and restoring an oscal value.

I ended up doing some last minute changes to my PC board design (luckily BEFORE I did a production run) in order to incorporate the resonator.

BTW - sorry...I feel like I hijacked your thread. But we may have similar problems. I see similar nonsense characters on HYPERTERM and on the TINY BOOTLOADER terminal.

Mister_e, Dick,
Thanks, I'll try the HS OSC setting. But, as I said, the HSEROUT works fine at 9600 baud and the bootloader works fine at 19200. Same project....I'm just trying to add the SEROUT command to my program for debugging.

I am going through a MAX232, and using TRUE mode. I've tried true and inverted. It is a straight-through cable, and I don't change any connections between HSEROUT and SEROUT. I just comment out all the HSEROUT DEFINEs while I try the SEROUT command.

I also tried DEBUG, but for some reason MPASM (which I must use for 18F2525) generates an error that I am attempting to redefine "DEBUG".

Ultimately I will probably have to start with a simpler program with no bootloader, etc. That way I can isolate the PBP commands and PC interface. I think I am dealing with too many variables at this point (hardware AND software).

Thanks for the help so far, guys. I'll try these things this weekend and post back here with results.

-Jim