I've been running some throughput tests between a pic and a pc. I'm trying out a new CP2101 cheapie board I just got.
The question is, what determines the maximum characters per second you can transfer? By my calculations, I'm not getting anywhere near what I should running at 32mhz. I'm using a 16F18324 pic. The results I'm getting are:
Is is possible that with USART_DELAY OFF and USART_DELAY 0 MS, Timer1 is not getting it's interrupts? The program clearly takes seconds to run, but the timer only got updated a small amount.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I've been running some throughput tests between a pic and a pc. I'm trying out a new CP2101 cheapie board I just got.
The question is, what determines the maximum characters per second you can transfer? By my calculations, I'm not getting anywhere near what I should running at 32mhz. I'm using a 16F18324 pic. The results I'm getting are:
at baud
' 19200 => 750 characters per second
' 38400 => 930 cps
' 57600 => 1050 cps
'115200 => 1160 cps
'230400 => 1220 cps
'460800 => 1260 cps
I'm probably not setting up the usart right or something so any suggestions will be greatly appreciated!
The full program:
i think it will be the delay.
USART_DELAY
This is the delay between characters.
Deaults to 1 ms
To disable this delay between characters … Use #define USART_DELAY 0 MS, or, To disable this delay between characters … Use #define USART_DELAY OFF
That did it. At 460800 baud it filled the screen instantaneously.
Clearly I should have asked days ago.
Thanks!
Is is possible that with USART_DELAY OFF and USART_DELAY 0 MS, Timer1 is not getting it's interrupts? The program clearly takes seconds to run, but the timer only got updated a small amount.
Never mind, I just had to add a do loop to wait for the timer to actually start before starting to time the code.