[En-Nut-Discussion] Global variables and threads

Matthias Ringwald mringwal at inf.ethz.ch
Tue Sep 20 12:16:02 CEST 2005

Hi Anton

which of your uart open code produces the character?

On 19.09.2005, at 16:10, Anton Veldhuizen wrote:

> NutRegisterDevice(&devUsartAvr0, 0, 0)
> Usart0FilePtr = fopen("uart0", "w+");
> _ioctl(_fileno(Usart0FilePtr), UART_SETSPEED, &commsBaud);
> _ioctl(_fileno(Usart0FilePtr), UART_SETCOOKEDMODE, &cookedMode);

I guess its the very first. Before the Uart is initialized the
tx pin is configured as input, so its floating for any receiver  
by opening the device tx goes to a stable 1.

one way to solve this could be a pull-up resistor to VCC, so the  
sees a constant 1 before you system starts up.

There was an issue when changing the baudrate would also bring tx to  
mode but I fixed it a while ago in CVS (check the ChangeLog for details)

Another comment one large global variables. Did you allocate them  
with malloc/
NutHeapAlloc? I'm still unsure, if its is safe to use more than 4k for
global structs that are allocated by avr-gcc and I keep telling  
people to dynamically
alloc all global structs to be one the safe side. so if you didn't  
use NutHeapAlloc,
just do so. :)
(Harald, if you are sure about more than 4k working for sure, tell  


More information about the En-Nut-Discussion mailing list