This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Timer2 - Printf function

Hi,

Sorry for the mistake. Here is the question again:

I need to use 89C52 timer2 counter function. However, when I use the timer2, I cannot use printf function to debug my program, that is, no display output. However, printf function works fine for timer0 and timer1 function.

How I can use printf within the timer2 program?

Thanks

Ed

Parents
  • Erik, sorry for the confusion. My questions are:

    1. Timer2 cannot use printf in ISR. Can I use printf in the main program?

    2. Why timer0 and timer1 can use printf in the main program and ISR?

    Once again, thanks for your prompt reply.

    Ed

Reply
  • Erik, sorry for the confusion. My questions are:

    1. Timer2 cannot use printf in ISR. Can I use printf in the main program?

    2. Why timer0 and timer1 can use printf in the main program and ISR?

    Once again, thanks for your prompt reply.

    Ed

Children
  • Unless I am missing something is not T2 or T1 to be dedicated as a baud rate generated for serial output? If you are using printf through the serial port (which is the default behavior with putchar). This means you either cannot use T1 or you cannot use T2 as a regular timer and use the serial port. If you intend to use both those timers no serial port, otherwise you must select one timer to generate the baud clock. Some variants of the C51 allow external baud rate generation I believe.

    Stephen

  • It's not so much that you can't use printf in an ISR - you can do it, and you might get away with it...

    The trouble is:

    * printf is a huge function - and that's Bad for an ISR;

    * the default printf uses polled output - and that's Bad for an ISR;

    * printf is not reentrant - and that's really bad if you also call it from main!