MCA Ansteuerung - bitte um Hilfe

Gast #1806421
Lesenswert?

Hallo zusammen,

ich will eine MCA30 ansteuern. Bei dem Protokoll orientiere ich mich am 
Quellcode von Ulrich Radigs Webcam (mca25.c)
http://www.ulrichradig.de/home/uploads/images/avr_webcam/avr-ip-webcam_based_on1.38_290905.tgz
da die Ansteuerung gleich der MCA25 sein soll ...

Komme bis in die Funktion
mca25_configure();
Dort wird folgender Funktionsaufruf gemacht
mca25_pgm_send(MCA25_CONFIG_640x480);

Habe die Funktion unten mal abgedruckt, mein Problem ist dass ich kein 
ACK mehr bekomme wenn ich die Daten geschickt habe.

Unten steht als Kommentar, dass man nach jedem MUX Packet kurz warten 
soll.
Hmm .. was ist kurz ??
Habe also mal 1,5,10,100ms nach jedem MUX Paket gewartet ... dann alle 
Daten am Stück geschickt ... bekomme einfach keine Antwort von der 
Kamera.
Außerdem ist das warten unten im Code auch als Kommentar rausgenommen 
worden.

Vielleicht hat ja jemand auch in letzter Zeit mit der Kamera gearbeitet 
und kann mir ein Tipp zum Timing geben ...


void mca25_pgm_send(PGM_P pointer){
  unsigned char valid=0;
  char old[4];

  for(;;){
    old[3] = old[2];
    old[2] = old[1];
    old[1] = old[0];
    old[0] = pgm_read_byte(pointer++);

    //if mux packet is finished wait some time
    //cam does not like rs232 activity while starting image grab
    /*if (old[0] == 0xF9 && old[1] == 0xF9){ //wait after the first n-1 
packets
      for (int z=0; z<30000; z++){
        nop();nop();nop();nop();nop();nop();nop();nop();
      }
      for (int z=0; z<30000; z++){
        nop();nop();nop();nop();nop();nop();nop();nop();
      }
    }*/

    if ( old[3] == '%' &&
         old[2] == 'E' &&
         old[1] == 'N' &&
         old[0] == 'D' ){
      //we have read the whole packet -> exit;
      break;
    }else{
      if (valid>=3)
        uart_putchar(old[3]);
      else
        valid++;
      /*if (in == 0xF9){
        //wait some time
        int a = 0;
        while (a < 1000){a++;}
      }*/
    }
  }
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren