English 中文(简体)
PIC C - Sending 200 values over USB, but it only sends 25 or so of them
原标题:
  • 时间:2010-04-03 03:34:36
  •  标签:
  • c
  • pic

I have a PIC18F4455 microcontroller which I am trying to use to send 200 values over USB. Basically I am using a for loop and a printf statement to print the values to the usb output stream. However, when the code executes I see in my serial port monitor that it is only sending the first 25 or so values, then stopping. My PIC C code is below. It will send out the 25th or so value (and the comma), but not send anything after and not send a newline character. I m trying to get it to send all the values, then a newline character at the end. I am sending them all as characters because I can convert them on the PC end of it.

//print #3
   for (i = 0; i <= 199; i++){if (data[i]==   || data[i]== 
 ){data[i]++;}}
   for (i = 0; i < 199; i++){printf(usb_cdc_putc, "%c,", data[i]);}
   printf(usb_cdc_putc, "%c
", data[199]);
问题回答

You might be over-filling the buffer (FIFO in hardware) if it s too short. This is why the delay has solved the problem - because you gave the hardware time to actually send out some bytes before you filled in new ones into the FIFO.

Read the datasheet of the controller to see how large that FIFO is. There s probably a way to check how full it is, and thus wait less than a constant 20 usec.

Also, I would use putchar for printing out single chars, not printf.

I figured it out. I ended up needing to put a delay in after printing to the stream. A delay_us(20) within the for loop after the print statement cleared things up.





相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签