Hallo zusammen,

ich habe versucht den Beispiel über Uart/Fido aus RN-Wissen nach zu programmieren...

Es klappt auch soweit allerdings sendet mein UART an dauernd, anstatt ein Zeichen.
Ich verstehe dass nicht! Benütze ja keine schleifen! Bitte um Hilfe.

Code:
int main()
{
    uart_init();
    sei();   // Wird nur gebraucht bei der Interrupt-Version 

    uart_putc ('f');
    /*uart_puts ("Hallo Welt!" CR);*/

    while (1)
    {

    }

    return 0;
}

uart:

Code:
/* Senden eines Chars */
int uart_putc (const uint8_t data)
{
	int ret = fifo_put (&out_fifo, data);
	UCSRB |= (1 << UDRIE);
 
  return ret;
}
fifo_put :
Code:
/* Schreibt das nächste Byte "data" in die FIFO.
 * Liefer 1 bei Erfolg und 0, falls die FIFO voll ist. */
uint8_t fifo_put (fifo_t *f, const uint8_t data)
{
	return _inline_fifo_put (f, data);
}
und _t fifo_put:

Code:
/* Schreibt das nächste Byte "data" in die FIFO.
 * Liefer 1 bei Erfolg und 0, falls die FIFO voll ist. */
static inline uint8_t _inline_fifo_put (fifo_t *f, const uint8_t data)
{
	if (f->count >= f->size)
		return 0;
		
	uint8_t * pwrite = f->pwrite;
	
	*(pwrite++) = data;
	
	uint8_t write2end = f->write2end;
	
	if (--write2end == 0)
	{
		write2end = f->size;
		pwrite -= write2end;
	}
	
	f->write2end = write2end;
	f->pwrite = pwrite;

	uint8_t sreg = SREG;
	cli();
	f->count++;
	SREG = sreg;
	
	return 1;
}

dank im voraus