Hi Dave
Thanks for your Reply, but made no difference in Execution Still Refuses to Interrupt. The calling of Sub Routine has a Time Penalty which I guess is why its consider a No No
Regards Henry
Hi Dave
Thanks for your Reply, but made no difference in Execution Still Refuses to Interrupt. The calling of Sub Routine has a Time Penalty which I guess is why its consider a No No
Regards Henry
What do you need to do exactly? Maybe i'm dumb but i don't see what you want to do with that.![]()
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Hi
Its suposed to be a very simpletest program to get a full understand of Serial USART Output using Interrupts and how to manage the Data Flow. It will be used in a serious piece of code where Both Serial USART Input and Output are manage by Interrupts Only while processing and Controlling the Data Flow to maximise throughput so no Data is lost in Peak Input Conditions.
Regards Henry
Interesting idea. Even if i'm not the best one here in the serial data communication, i feel that you'll need more than 1 PIC for that depending the size of the data you need to send/receive to be really sure you don't miss anything. The internal USART have a buffer of 2 BYTES for incomming data. Maybe enough to stop your serial OUT.
There's many way to see the solution here. The first that spring to mind now is Sending your data bytes by byte, then check the USART interrupt flag for incomming data each time a byte is sent. Your data to be send may be store in a EEPROM, ARRAY, or, or, or, or...
Depending what else your project do... 2 PIC can be a solution or not.
Example of serial interrupt:
http://www.picbasic.co.uk/forum/show...1&postcount=11
http://www.picbasic.co.uk/forum/show...42&postcount=2
Should be enough to start.
EDIT: Sorry darrel didn't saw your post... the above example should help anyway![]()
Last edited by mister_e; - 9th January 2006 at 22:56.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Oh Boy. Where to start. I guess from the beginning.
Since there isn't an OSC definition, I assume you're running at 4Mhz. And, with 4 Mhz, and BRGH (TXSTA.2) set to 0. The error rate for 9600 baud is 7%. That's really high. If you use HSER_TXSTA 24, which sets BRGH to 1, the error rate goes to 0.16%.
But then you manually set SPBRG to 25, which would be 2400 baud at 4mhz, so the 9600 gets discarded.
INTCON = %10010000 Along with turning Global interrups on, also enables the External Interrupt INT. But the rest of the program doesn't use INT.
'PIE1.5 = 1 ' enable interrupt on usart receive
This line is commented out, so the RX interrupt never gets enabled.
PIE1.4 = 1 ' enable interrupt on usart transmit
You cannot use Transmit interrupts with HSEROUT, they are not compatible.
Just like the compiler would do, I'll stop there and report [too many errors]
DT
Hi Guys
Thanks, with your help I think I can now move in the right direction. I am beginning to think I should have stuck to Delphi and Window instead getting involved with these little Beast's. Thanks Again
Regards Henry
i heard it often hurt the first time... good luck.
Don't be afraid, we all had and still have some problems with them sometimes. There's no problem... only learning opportunities![]()
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Bookmarks