Project

General

Profile

46 markw
#include "uart.h"

#include "regs.h"

void actions();

494 markw
//-- 0 = transmit (w)
//-- 1 = tx fifo status (r)
//-- 2 = fetch/receive (r) - requests next data - i.e. first read trash
//-- 3 = rx fifo status (r)
//-- 4 = divisor (w)
//-- 5 = framing error/clear (r)
// data_out(9 downto 0) <= fifo_rx_full&fifo_rx_empty&fifo_rx_count;
46 markw
void USART_Init( u08 value )
{
// value is pokey div + 6
494 markw
u32 val2 = value;
val2=val2<<1;
46 markw
494 markw
val2=val2+1;
*zpu_uart_divisor = val2;
46 markw
}

void USART_Transmit_Byte( unsigned char data )
{
494 markw
// wait until fifo not full
while (0x200&*zpu_uart_tx_fifo) // fifo full
{
actions();
}
46 markw
494 markw
*zpu_uart_tx = data;
46 markw
}
494 markw
u32 USART_Receive_Byte( void )
46 markw
{
// wait for data
494 markw
while (0x100&*zpu_uart_rx_fifo) // fifo empty
46 markw
{
actions();
}

494 markw
u32 res = *zpu_uart_rx; //serin at same address
46 markw
return res;
}

int USART_Framing_Error()
{
494 markw
return *zpu_uart_framing_error;
46 markw
}