Hallo zusammen,
ich benütze die EUSART um Daten Seriell zwischen PIC und CAMERA zu versenden und empfangen.
Nun habe ich folgendes Problem, ich sende ein SYNC- Paket von der Länge 6Byte an die Camera. Diese Antwortet solange ein ACK- Paket von der Länge 12Byte bis ich das ACKSYNC- Paket sende.
Wenn ich nun z.B. 10 ACK- Paket empfange möchte sehen die Daten folgendermassen aus:
0xff,0xff,0xff,0xff,Ack-Paket, 12x 0xFF , 12Byte Ack-Paket,
12x 0xFF, Ack-Paket, usw.
Leider kann ich nicht erklären warum immer die 0xFF Zeichen im Buffer sind, da die Kammera nie ein 0xFF versendet.
tech. Daten
PIC18F4580 Quarz 10MHz
arbeite mit PLL -> 40MHz
UART mit 115200 Baud oder mit 14400 -> gleiches Ergebniss
mein Prog:
Code:
void main(void)
{
UINT8 ACKreceived;
init();
serialSetup14400();
ACKreceived = false;
//send sync-packet
while(ACKreceived == false)
{
write2serial(0xAA);
write2serial(0x0D);
write2serial(0x00);
write2serial(0x00);
write2serial(0x00);
write2serial(0x00);
//brak->its only a break-routine
brak(70000);
//controll received data
if( CAMERA_BUFFER[0] == 0xAA &&
CAMERA_BUFFER[1] == 0x0E &&
CAMERA_BUFFER[6] == 0xAA &&
CAMERA_BUFFER[7] == 0x0D )
{
ACKreceived = true;
}
}
//send ACKSYNC-packet
write2serial(0xAA);
write2serial(0x0E);
write2serial(0x0D);
write2serial(0x00);
write2serial(0x00);
write2serial(0x00);
}
//InterruptMethode:
void interrupt MyInterrupt(void)
{
if( (RCIF == true) )
{
CAMERA_BUFFER[gcounter] = RCREG;
gcounter++;
RCIF = 0;
}
}
Lesezeichen