
#include "at91sam7x256.h"
#include "board.h"
#include "bits.h"
#include "gps.h"
#include "gsm.h"


AT91PS_PIO    g_pPioA   = AT91C_BASE_PIOA;
AT91PS_PMC    g_pPMC    = AT91C_BASE_PMC;
AT91PS_USART  g_pUSART1 = AT91C_BASE_US1;
AT91PS_PDC    g_pPDC1   = AT91C_BASE_PDC_US1;
AT91PS_MC     g_pMC     = AT91C_BASE_MC;

void InitUSART1(void)
{

  g_pPioA->PIO_PDR = BIT5 | BIT6;  
  g_pPioA->PIO_ASR = BIT5 | BIT6; 
  g_pPioA->PIO_BSR = 0;             

  //enable clock 
  g_pPMC->PMC_PCER = 1<<AT91C_ID_US1;

  //Reset receiver und transmitter
  g_pUSART1->US_CR = AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS | AT91C_US_TXDIS ;

  //Baudrate Einstellung
  g_pUSART1->US_BRGR = 313; //((48054683)/38400x16)

  // receiver time-out 
  g_pUSART1->US_RTOR = 0;

  // Timeguard Register
  g_pUSART1->US_TTGR = 0;

  // FI over DI Ratio Value 
   g_pUSART1->US_FIDI = 0;

   // IrDA Filter value 
   g_pUSART1->US_IF = 0;

  //USART Mode einstellen
  g_pUSART1->US_MR = 0x08c0;

  // Keine Interrupts 
   g_pUSART1->US_IER = 0x00;

  //Enable the RX and TX PDC Transfer Req
  g_pPDC1->PDC_PTCR = AT91C_PDC_TXTEN | AT91C_PDC_RXTEN;

  //Enable Transmitter und Receiver
  g_pUSART1->US_CR = 0x50;

}


void write_char_USART1(char ch)
{
  while ((g_pUSART1->US_CSR & AT91C_US_TXRDY)==0);
  g_pUSART1->US_THR = ch;
}

void write_str_USART1(char* buff)
{

	unsigned int i = 0x0;

	while(buff[i] != '\0')
	{
		write_char_USART1(buff[i]);
		i++;
	}

}


