]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - avr/serial.c
Programmable Z180 clock, clock command
[z180-stamp.git] / avr / serial.c
index 2d2c5515ddba3c4f441d48b712fbbfe62cd1bd16..a5e28468e6018e489042c779c9ff390cf0e00fc9 100644 (file)
@@ -36,7 +36,7 @@ uint8_t tx_ring_buffer[BUFFER_SIZE];
 
 /* Initialize UART */
 
-void usart0_setup(void) {
+void usart0_setup(unsigned long baud) {
 
        ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
 
@@ -48,7 +48,7 @@ void usart0_setup(void) {
                ring_init(&tx_ring, tx_ring_buffer, BUFFER_SIZE);
 
                UCSR0A = 0;
-               UBRR0  = F_CPU / BAUD / 16 - 1;
+               UBRR0  = F_CPU / baud / 16 - 1;
                UCSR0B = _BV(RXCIE0) | _BV(RXEN0) | _BV(TXEN0);
                UCSR0C = 3 << UCSZ00;
        };
@@ -82,10 +82,10 @@ ISR(USART0_UDRE_vect)
 
 /*--------------------------------------------------------------------------*/
 
-void serial_setup(void)
+void serial_setup(unsigned long baud)
 {
        stdout = &mystdout;
-       usart0_setup();
+       usart0_setup(baud);
 }
 
 /*--------------------------------------------------------------------------*/
@@ -106,7 +106,7 @@ int serial_getc(void)
        return ring_read_ch(&rx_ring);
 }
 
-void serial_putc(uint8_t data)
+void serial_putc(char data)
 {
        while (ring_write_ch(&tx_ring, data) < 0)
                ;
@@ -115,3 +115,9 @@ void serial_putc(uint8_t data)
        UCSR0B = _BV(RXCIE0) | _BV(RXEN0) | _BV(TXEN0) | _BV(UDRIE0);
 }
 
+uint_fast8_t serial_tstc(void)
+{
+       return !ring_is_empty(&rx_ring);
+}
+
+