Monitor F 28335

Descargar como txt, pdf o txt
Descargar como txt, pdf o txt
Está en la página 1de 3

#include "stdlib.

h"
#include "DSP2833x_Device.h"
#include "monitorF28335.h"
const float mipi=3.1415926535897932384626433832795;
Uint16 LoopCount;
Uint16 SendChar;
Uint16 ReceivedChar;
void AddrCant(void);
Uint32 Direccion=0;
int16 *memoria=0;
Uint32 Cantidad=0;
int caso=0;
Uint32 j=0;
void IniciarSerial(void)
{
scia_fifo_init(); // Inicializa el FIFO del SCI
scia_init(); // Inicializa el lazo de iteraci�n
SendChar = 0;
}
void IteraSerial(void)
{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) {
return;
}; // espera por XRDY =1
ReceivedChar = SciaRegs.SCIRXBUF.all; //se lee el byte
SendChar=ReceivedChar; //se guarda en una variable
scia_xmit(SendChar); //se retransmite como ECO para que la PC sepa
caso=ReceivedChar; // se decodifica
switch (caso) { // con el CASE
case 0:
LeerDSP(); // Si el comando es un CERO Leer DSP
break;
case 1:
LeerDSP();
break;
case 2:
LeerDSP();
break;
case 3:
EscribirDSP(); // Si el comando es un TRES Escribir DSP
break;
case 4:
EscribirDSP();
break;
case 5:
EscribirDSP();
break;
};
}
void LeerDSP(void)
{
AddrCant(); //Averiguar la Direcci�n de memoria y cuantos
datos
for (j=0;j<Cantidad+1;j++)
{
memoria=0;
SendChar=memoria[Direccion]; // Buscar el dato en memoria
Direccion++;
do{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a
XRDY =1 estado listo
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del
buffer
} while (ReceivedChar!=0x40); // Esperar a que sea el byte
64
scia_xmit(SendChar>>8); //Enviar parte alta del dato
do{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a
XRDY =1 estado listo
ReceivedChar = SciaRegs.SCIRXBUF.all;
} while (ReceivedChar!=0x40); // Esperar a que sea el byte
64
scia_xmit(SendChar); //Enviar parte baja del dato
};
}
void EscribirDSP(void)
{
AddrCant();
for (j=0;j<Cantidad+1;j++) // Preparar la cantidad de veces
{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a
XRDY =1 estado listo
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del
buffer
scia_xmit(ReceivedChar); // Enviar ECO
SendChar = ReceivedChar<<8; // Sube el valor recibido a la
parte alta
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a
XRDY =1 estado listo
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del
buffer
scia_xmit(ReceivedChar); // Enviar ECO
SendChar = SendChar+ ReceivedChar; // Agrega parte baja del
dato
memoria[Direccion]=SendChar; // Graba el valor del dato en
memoria
Direccion++; // Incrementa para la pr�xima direcci�n
};
}
void scia_init()
{
SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// modo as�ncrono, protocolo idle-line l�nea en
espera
SciaRegs.SCICCR.bit.SCICHAR = 7;
SciaRegs.SCICTL1.all =0x0003; // Habilitar TX, RX, SCICLK interno,
// Deshabilitar RX ERR, SLEEP, TXWAKE
SciaRegs.SCICTL2.all =0x0003;
SciaRegs.SCICTL2.bit.TXINTENA = 0;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;
SciaRegs.SCIHBAUD =0x0000;
SciaRegs.SCILBAUD =0x0028; //a 150mhz
SciaRegs.SCICCR.bit.LOOPBKENA =0; // No habilitar loop back
SciaRegs.SCICTL1.all =0x0023; // SCI fuera de Reset
}
void scia_xmit(int a)
{
SciaRegs.SCITXBUF=a; // Cargar buffer para transmitir
}

void scia_fifo_init()
{
SciaRegs.SCIFFTX.all=0xE040;
SciaRegs.SCIFFRX.all=0x204f;
SciaRegs.SCIFFCT.all=0x0;
}
void AddrCant(void)
{
int i=0;
Direccion=0;
ReceivedChar=0;
for (i=0;i<4;i++)
{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a XRDY =1 estado listo
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del buffer
scia_xmit(ReceivedChar);// Enviar ECO
Direccion=(Direccion<<8)+ReceivedChar; // Ir agregando Direcci�n
};
for (i=0;i<4;i++)
{
while(SciaRegs.SCIFFRX.bit.RXFFST ==0) { } // esperar a XRDY =1 estado listo
ReceivedChar = SciaRegs.SCIRXBUF.all; //Leer byte del buffer
scia_xmit(ReceivedChar);// Enviar ECO
Cantidad=(Cantidad<<8)+ReceivedChar; // Ir agregando Cantidad
};
}

También podría gustarte