n

Dependencies:   mbed

Fork of LG by igor Apu

console.c

Committer:
Kovalev_D
Date:
2016-02-04
Revision:
28:1c9acd3b224d
Parent:
21:bc8c1cec3da6

File content as of revision 28:1c9acd3b224d:


#include "Global.h"

#define FOSC                        12000000

#define FCCLK                      (FOSC  * 8)

#define FCCO                       (FCCLK * 3)

#define FPCLK                      (FCCLK / 4)

#define UART0_BPS    38400



unsigned int BuffOut[1024];

unsigned int InputIndexBO;
unsigned int OutputIndexBO;



unsigned int BuffIn[1024];

unsigned int InputIndexBI;
unsigned int OutputIndexBI;

//unsigned int OLD_OutputIndex;

void UART0_Init_m (void)///инийциализация нулевого уарта
{
    uint16_t usFdiv;
    /* UART0 */
    LPC_PINCON->PINSEL0 |= (1 << 4);             /* Pin P0.2 used as TXD0 (Com0) */
    LPC_PINCON->PINSEL0 |= (1 << 6);             /* Pin P0.3 used as RXD0 (Com0) */

    LPC_UART0->LCR  = 0x83;
    usFdiv = (FPCLK / 16) / UART0_BPS;
    LPC_UART0->DLM  = usFdiv / 256;
    LPC_UART0->DLL  = usFdiv % 256;
    LPC_UART0->LCR  = 0x03;
    LPC_UART0->FCR  = 0x06;
}

int UART0_SendByte_m (int ucData)
{
    //while (!(LPC_UART0->LSR & 0x20)){};

    return (LPC_UART0->THR = ucData);
}
void ClearBuffout(void) //очистка буфера на выдачу(сброс указателей)
{
    InputIndexBO=0;
    OutputIndexBO=0;
}
void SendToBuffByte(unsigned int *input) // запись в буфер на выдачу одного значения инт(беззнакового)
{
    InputIndexBO++;
    InputIndexBO &= 0x3ff;
    BuffOut[InputIndexBO]=*input;
}
void SendToBuff(unsigned char *input, unsigned int size)//запись нескольких значений с указанием размерности записи в буфер на выдачу.
{
    unsigned int i;
    for(i=0; i<size; i++) {
        InputIndexBO++;
        InputIndexBO &= 0x3ff;
        BuffOut[InputIndexBO]=*input++;
    }
}


void SendToBuffStr(char *s)//запись строки (конец отслеживается по нулю) в буфер на выдачу.
{
    while (*s != 0) {
        InputIndexBO++;
        InputIndexBO &= 0x3ff;
        BuffOut[InputIndexBO]=*s++;
    }
}


void TakeFromBuff(void)//передача из  буфера на выдачу.
{
    if((OutputIndexBO != InputIndexBO) && (LPC_UART0 -> LSR & 0x20)) {
        OutputIndexBO++;
        OutputIndexBO &= 0x3ff;
        LPC_UART0->THR = BuffOut[OutputIndexBO];
    }
}



/*
void UART0_SendString (char *s)
{
 	while (*s != 0)
	{
			InputIndex++;
			InputIndex &= 0x3ff;
			BuffOut[InputIndex]=*s++;
	}
}
*/

void ClearBuffIn(void)
{
    InputIndexBI=0;
    OutputIndexBI=0;
}

void BuffDataReady(void)
{
    if((OutputIndexBI != InputIndexBI) && (!(LPC_UART0 -> LSR & 0x01))) {

    }
}
void ReadDataInBuff(void)
{
    while (LPC_UART0->LSR & 0x01) {
        BuffIn[InputIndexBI] = LPC_UART0->RBR;
        InputIndexBI++;
    }
}