A little more info: calling printf() twice seems to properly output the string 
in the first call, and fails as described in the second. So, it's not printf() 
per se that's failing, but something else.

On Apr 27, 2013, at 01:45 , Rick Mann <[email protected]> wrote:

> In my ATmega* projects, I often do something like this:
> 
> int
> uart_putchar(char inC, FILE* inStream)
> {
>       while (!(UCSR1A & (1 << UDRE1)))
>       {
>       }
>       
>       UDR1 = inC;
>       
>       return 0;
> }
> 
> int
> main()
> {
>       static FILE     sStdOut;
>       sStdOut.put = uart_putchar;
>       sStdOut.get = __null;
>       sStdOut.flags = 0x0002;
>       sStdOut.udata = 0;
>       
>       stdout = &sStdOut;
> 
> }
> 
> So, in my XMEGA project, I did this:
> 
> inline
> void
> debugPutByte(uint8_t inByte)
> {
>       while ((USARTE0.STATUS & USART_DREIF_bm) == 0);
>       
>       USARTE0.DATA = inByte;
> }
> 
> static
> int
> stdioPutChar(char inC, FILE* inStream)
> {
>       debugPutByte(inC);
>       
>       return 0;
> }
> 
> int
> main()
> {
>       static FILE     sStdOut;
>       sStdOut.put = stdioPutChar;
> //    sStdOut.get = __null;
>       sStdOut.flags = 0x0002;
>       sStdOut.udata = 0;
>       
>       stdout = &sStdOut;
>       
>       printf("Hello world");
> 
> }
> 
> A couple things went wrong. One minor one was the line assigning __null 
> produces this error:
> 
>       main.c:132:16: error: expected expression before '__null'
> 
> But I figured it's nulled out as a static, anyway, so I comment it out.
> 
> The real problem is when I call printf, the output I get always mangles the 
> last 3 characters in the string:
> 
>       > Hello woü
> 
> A "raw" print of a string using debugPutByte() above seems to work fine.
> 
> Any ideas?
> 
> Thanks,
> 
> -- 
> Rick
> 
> 
> 
> 
> _______________________________________________
> AVR-chat mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/avr-chat


-- 
Rick




_______________________________________________
AVR-chat mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/avr-chat

Reply via email to