Firmware per l'invio delle misure dei quattro sensori:
#define CPL1_RDA_BOUDRATE 115200 // RDA Boud Rate: ..., 9600, 14400, 19200, 38400, 57600, 115200, 128000
#use rs232(baud=CPL1_RDA_BOUDRATE,xmit=RDA_TX,rcv=RDA_RX,RESTART_WDT,STREAM=RDA1,BRGH1OK,DISABLE_INTS)
//------------------------------------------------------------------------------------------
void SendFrame(){
// Versione: 1.0.0
// Prima versione: 25.01.12
// Ultima modifica: 25.01.12
//
printf("\r\nPronto per l'invio del frame\r\n");
for(;;)
{
restart_wdt();
if(kbhit())
{
Led2Toggle();
if(getc()=='a') {
Led1Toggle();
delay_us(100);
SendIrData();
}
}
}
}
//------------------------------------------------------------------------------------------
void SendIrData()
{
// Versione: 1.0.0
// Prima versione: 25.01.12
// Ultima modifica: 25.01.12
//
int i, frameChk;
long val;
int frameData[8]; // frame
restart_wdt();
AdcSetup(ALL_ANALOG, 4);
val = Read_ADC();
frameData[0] = val>>8;
frameData[1] = val&0xFF;
AdcSetup(ALL_ANALOG, 3);
val = Read_ADC();
frameData[2] = val>>8;
frameData[3] = val&0xFF;
AdcSetup(ALL_ANALOG, 5);
val = Read_ADC();
frameData[4] = val>>8;
frameData[5] = val&0xFF;
AdcSetup(ALL_ANALOG, 7);
val = Read_ADC();
frameData[6] = val>>8;
frameData[7] = val&0xFF;
frameChk = 0;
putc(0x02);
for(i = 0; i < 8; ++i)
{
putc(frameData[i]);
frameChk += frameData[i];
}
frameChk = (int) ~frameChk;
putc(frameChk);
//putc(0x03);
}
//------------------------------------------------------------------------------------------
Firmware della scheda micro per la ricezione dei dati:
//------------------------------------------------------------------------------------------
void TestRxFrame(){
// Versione: 1.0.6
// Prima versione: 25.01.12
// Ultima modifica: 25.01.12
//
int chk;
int16 n1,n2,n3,n4;
printf(LcdPutc, "\fPremere P1 per \nricevere i dati");
for(;;)
{
restart_wdt();
if(kbhit()) printf(LcdPutc, "%x",getc());
if(P1Click())
{
Led1Toggle();
putc('a');
if(getc()!=2)
{
printf(LcdPutc, "\fDati ricevuti\nnon validi");
delay_ms(2000);
printf(LcdPutc, "\f");
continue;
}
n1 = getc()*0x100;
n1+=getc();
n2 = getc()*0x100;
n2+=getc();
n3 = getc()*0x100;
n3+=getc();
n4 = getc()*0x100;
n4+=getc();
chk = getc();
printf(LcdPutc, "\f%05lu %05lu\n%05lu %05lu %03u",n1,n2,n3,n4,chk);
}
}
}
Nessun commento:
Posta un commento