|
|
View previous topic :: View next topic |
Author |
Message |
ist worker Guest
|
garbage input with rs232 bluetooth but perfect output |
Posted: Thu Mar 27, 2008 9:19 am |
|
|
Compiler version: 3.245
Pic version: 18F8722
Here a short description of a problem that has really been frustrating me, and its doubly frustrating since I fixed it in the past, but don't remember how now. Also ive searched the forum thoroughly for insight into this problem and havent found an answer, but in case i am rehashing a common topic, i do apologize.
I am able to communicate with the pic using a bluetooth connection, but input is getting garbled, while communication originating from the pic comes through clearly. I tested this by just echoing input back out, as well as following that by putc'ing another character. So when i send the pic something i get garbage output, sometimes random, most times "<0>" , and that is followed by the putc character.
I know hardware is not an issue here, since the same pic has been loaded with working firmware and tested.
Im going to post my code, and i really appreciate if someone could help me shed some light on this. My own intuition tells me it has something to do with fuses, because i know little to nothing about what they do. Thanks!!
Code: |
//model of pic
#include <18F8722.H>
//#DEVICE ADC=10
#fuses NOLVP // Low Voltage ICSP Disabled
#fuses H4
#fuses NOWRT
#fuses NOPUT // Power Up Timer
//#fuses NOBROWNOUT // Brown Out Reset enabled
#fuses NOWDT // no watch dog timer
//#fuses NOPROTECT // No Code Protect
//#fuses NODEBUG // No Background Debugger
//#fuses MCLR
//clock speed set here
#use delay(clock=24000000)
//setup of rs232
#use rs232(STREAM=serial,BAUD=115200,XMIT=PIN_C6,RCV=PIN_C7,PARITY=N,BITS=8)
void readPacket();
void init();
void main()
{
init();
}
//read data available interrupt
#int_rda
void readPacket()
{
char inchar;
// While there are incoming bytes waiting to be read...
while (kbhit())
{
// Get an incoming character
inchar = getc();
putc(inchar);
putc('a');
}
}
void init()
{
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
SET_TRIS_A( 0xff );
SET_TRIS_B( 0xff );
SET_TRIS_C( 0xbf );
SET_TRIS_D( 0xff );
SET_TRIS_E( 0xff );
printf("Initilizing\n\r");
}
|
|
|
|
Wayne_
Joined: 10 Oct 2007 Posts: 681
|
|
Posted: Thu Mar 27, 2008 9:45 am |
|
|
Most likely something to do with the pic going to sleep after init() in main.
Try putting
while(true) {
}
after init().
This will prevent the pic going to sleep.
No gaurantees with this though! |
|
|
Guest
|
|
Posted: Thu Mar 27, 2008 9:49 am |
|
|
thanks wayne, actually i did have a while loop in there just looping forever with nothing in it, i didnt think it was necessary, but with it in the same problem still applies. |
|
|
Wayne_
Joined: 10 Oct 2007 Posts: 681
|
|
Posted: Thu Mar 27, 2008 10:05 am |
|
|
because you are not using fast_io those set_tris statements mean nothing.
They should be done before the enable ints anyway.
Just remove them unless you plan on using fast_io! |
|
|
ist worker Guest
|
|
Posted: Thu Mar 27, 2008 10:10 am |
|
|
thanks again, i forgot to put my name in my last post btw.
I put those set_tris statements in to see if it would remedy my problem, but with those statements removed, i still have the same problem. |
|
|
ist worker Guest
|
|
Posted: Thu Mar 27, 2008 11:58 am |
|
|
Wow ok, the problem has been solved, thank goodness.
I was powering the PIC circuit board through the ICD-U40 thingy plugged into the usb port rather than through the battery pack. The EE i work with pointed out that it may not be enough power to run bluetooth, and he was right! Using the correct power source solved the problem. |
|
|
|
|
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
|
Powered by phpBB © 2001, 2005 phpBB Group
|