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:
fifo_put :Code:/* Senden eines Chars */ int uart_putc (const uint8_t data) { int ret = fifo_put (&out_fifo, data); UCSRB |= (1 << UDRIE); return ret; }
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. */ uint8_t fifo_put (fifo_t *f, const uint8_t data) { return _inline_fifo_put (f, data); }
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







Zitieren

Lesezeichen