|
|
View previous topic :: View next topic |
Author |
Message |
cogen
Joined: 30 Jun 2007 Posts: 12
|
18f23k22 Dual UART not working |
Posted: Tue Jun 06, 2017 12:55 am |
|
|
Greetings. Can anyone tell me why below code does not work? I can echo the first referenced port but the second one does not echo. I have the same problem when I do an interrupt implementation. I have also implemented the buffer in example ex_sisr.c, same result.
Each works when they are separately implemented.
Compiler version: 5.044
Code: |
#include <18F23K22.h>
#device ADC=10
#use delay(internal=2000000)
#define LED1 PIN_B0
#define LED2 PIN_B1
#define LED3 PIN_B2
#define LED4 PIN_B3
#use rs232(UART1,baud=19200,parity=N,bits=8,stream=VANTAGE,errors)//max232
//To VantageVue max232 chip
#use rs232(UART2,baud=19200,parity=N,bits=8,stream=ROCKBLOCK,errors)//ttl
//To RockBlock ttl or USB/UART Sparkfun Board for computer
void main()
{
while(TRUE)
{
fprintf(VANTAGE,"start");
fprintf(ROCKBLOCK,"start");
while(TRUE)
fputc((fgetc(VANTAGE)+1),VANTAGE);
fputc((fgetc(ROCKBLOCK)+1),ROCKBLOCK);
}
} |
|
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19545
|
|
Posted: Tue Jun 06, 2017 1:52 am |
|
|
It won't echo, because of a basic syntax error.....
Code: |
#include <18F23K22.h>
#device ADC=10
#use delay(internal=2000000)
#define LED1 PIN_B0
#define LED2 PIN_B1
#define LED3 PIN_B2
#define LED4 PIN_B3
#use rs232(UART1,baud=19200,parity=N,bits=8,stream=VANTAGE,errors)//max232
//To VantageVue max232 chip
#use rs232(UART2,baud=19200,parity=N,bits=8,stream=ROCKBLOCK,errors)//ttl
//To RockBlock ttl or USB/UART Sparkfun Board for computer
void main()
{
while(TRUE)
{
fprintf(VANTAGE,"start");
fprintf(ROCKBLOCK,"start");
while(TRUE)
{// note the extra bracket
fputc((fgetc(VANTAGE)+1),VANTAGE);
fputc((fgetc(ROCKBLOCK)+1),ROCKBLOCK);
}
}
}
|
Without the extra brackets, the line after the second 'while' is all that gets executed..... |
|
|
cogen
Joined: 30 Jun 2007 Posts: 12
|
|
Posted: Tue Jun 06, 2017 7:43 am |
|
|
Wow, apparently it was getting late...I managed to break my interrupt code and I had reverted to simplified code to fix it. Thanks for pointing out the rookie mistake! Now to figure out the other problem, (I am sure something equally stupid). |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19545
|
|
Posted: Wed Jun 07, 2017 12:44 am |
|
|
We have all 'been there'....
Try to do a basic version of the interrupt code.
You'll either find the problem, or it'll become something small enough to post. |
|
|
cogen
Joined: 30 Jun 2007 Posts: 12
|
Follow up |
Posted: Wed Jun 07, 2017 5:53 am |
|
|
Ttelmah,
Yes, I reduced the code to where it started functioning again, then started adding pieces back until it broke. It was the initialization of my first, (of many), arrays that caused my UART port to stop functioning. This made no sense but I had noticed that my MPLABx IDE had begun to behave differently after an update. I removed my text source files and created a new project in MPLABx, and Wala! It magically all started working again. I may have inadvertently changed a make file or who knows!!! No time to track it down right now.
Thanks again for your help.
Mike |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9244 Location: Greensville,Ontario
|
|
Posted: Wed Jun 07, 2017 6:40 am |
|
|
One way to save time debugging, is to have 'incremental' versions of your program.
First, get a 'base' program running.
Then make a copy, call it programv2.c, make a project called programv2 as well.
Compile/test/save.
NOW make SOME changes to V2 and test. IF OK, copy V2 into V3.
Yes, I know you can end up with 10, 20, 65+ versions of the program/project BUT you can always go back to a version that DID work. Also you can compare the current vs the old and SEE what silly mistake you've made.
When the project/program is good THEN delete all but say the last 3 or 4 versions. That way you can 'go back' if needed.
Jay |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19545
|
|
Posted: Wed Jun 07, 2017 7:30 am |
|
|
A complete set of code now, is tiny, when compared to the cost of storage.
I just copy the whole project directory, with a date and time.
This also illustrates why changing tools can be dangerous. I've posted here in the past that I always include in my comments at the head of the code, what compiler version I'm using, and keep separate copies of the compiler.
Anyway at least you have found your 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
|