[an error occurred while processing this directive]
хэлп!!! не могу вдуплиться в траблу (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено allmaker 20 января 2005 г. 13:43

прога (mega128, IARC320c)передает пакет в уарт


void transmitDataRS485(char *data, char dataSize, char ctrlByte)
{
char txUartDataBuf[MAX_SIZE_TX_BUF];
char txUartSizeBuf;
char i;
char k=0;
uint crc;

crc = 0xFFFF;
txUartDataBuf[k++] = 0xAA;
txUartDataBuf[k++] = 0xAA;
txUartDataBuf[k++] = 0xAA;
txUartDataBuf[k++] = DLE;
txUartDataBuf[k++] = STX;
txUartDataBuf[k++] = BU_RS_ADR;
txUartDataBuf[k++] = ctrlByte;
crc = crc16(crc, ctrlByte);
for (i = 0; i < dataSize; i++) {
txUartDataBuf[k] = data[i];
crc = crc16(crc, txUartDataBuf[k]);
if (txUartDataBuf[k] == DLE) {
k++;
txUartDataBuf[k] = DLE;
}
k++;
}
crc ^= 0xFFFF;
multiByte.sumr = crc;
txUartDataBuf[k++] = multiByte.bytes[1];
if (multiByte.bytes[1] == DLE) txUartDataBuf[k++] = DLE;
txUartDataBuf[k++] = multiByte.bytes[0];
if (multiByte.bytes[0] == DLE) txUartDataBuf[k++] = DLE;
txUartDataBuf[k++] = DLE;
txUartDataBuf[k++] = ETX;
txUartSizeBuf = k;

SetBit(PORTD,TE_LAN);

SendDataPort(txUartDataBuf, txUartSizeBuf);

while(!(UCSRA & (1< SetBit(UCSRA,TXC);

ClrBit(PORTD,TE_LAN);
}

после суток нормальной работы перестает передавать последние байты
DLE, ETX. размер буфера txUartSizeBuf в этом случае в норме.
далее, в другом файле


void SendBytePort(char bByte)
{
while(!(UCSRA & (1< UDR = bByte;
}

void SendDataPort(char *pData, uint nDataSize)
{
uint i;
for(i=0;i {
SendBytePort(pData[i]);
}

}

голова пухнет. Помогите.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru