Datasheet

DasKommandoselberistdabeiineinRahmenpaketdasKommandoIdentifikation,Kommando,
Länge,Datenstruct(sieheoben)undcrcZeichenverpackt.
Beispiel:
DasErweiterungsmodulsendet:
<‚?‘>,<‘C‘>,<länge>,<
ext_controldata>,<crc>
DerCopterAntwortetdannmit:
<‚?‘>,<‘S‘>,<länge>,<
ext_statusdata>,<crc>
EineImplementationkannwiefolgtaussehen:
voidUART1_LOW__SendMessage(charc,char*msg,intlen)
{
inti=0;
charcrc;

crc=0;
USART1_command_ready=1;
USART1_tx_command[0]='?'; //Kommandoidentification(immer‘?’)
USART1_tx_command[1]=c; //Kommando
USART1_tx_command[2]=(char)len; //Länge
i=3;
while(len>0){
USART1_tx_command[i]=msg[i3]; //Datenincl.8bitchecksumme
crc=crc+USART1_tx_command[i];
i++;
len‐‐;
}
USART1_tx_command[i]=crc; //crcZeichen
USART1_tx_command_len=i+1;
UDR1=USART1_tx_command[0]; //Übertragungstarten
}
voidUART1_LOW__SendControl()
{
UART1_LOW__SendMessage('C',&EXT_controlData,sizeof(EXT_controlData));
}

AlsKomandobytewirdfürdas
struct„ext_controlData“wird‚C‘verwendet.
Fürdas
struct
ext_statusdata“wird‚S‘verwendet.
ZumEmpfangenderDatenkanneineImplementierungz.B.wiefolgaussehen:
volatilecharrx_status=0;
volatilecharrx_crc=0;
//‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
//USART1Receiverinterruptserviceroutine
interrupt[USART1_RXC]voidusart1_rx_isr(void)