Announcement

Collapse
No announcement yet.

It does not return the photo

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • It does not return the photo

    Hello, the microcam dont give me back the photo to the PIC32. I connected the camera with a PIC32 microcontroller of microchip, its work well all the code sequence until it gets the command DATA. I put the code, for if someone sees something I have not seen. If anyone can help I would appreciate it:


    /******************************** CODE ****************************/


    #include <stdio.h>
    #include <plib.h>

    #pragma config POSCMOD=XT, FNOSC=PRIPLL
    #pragma config FPLLIDIV=DIV_2, FPLLMUL=MUL_18, FPLLODIV=DIV_1
    #pragma config FPBDIV=DIV_2, FWDTEN=OFF, CP=OFF, BWP=OFF
    #define SYS_FREQ (72000000)
    #define BRATE 18 //18 (115200) o 39 (56000) para 16, 77 (115200) o 159 (56000) para 4.

    void Inicializar()
    {
    /* //T1CON=0x8030; //iniciar timer, 1:256 fpb, 1 tick - 6microsegundos
    //T1CON=0x8000; //iniciar timer, 1:1 fpb, 1 tick - 0,027777 microsegundos
    T1CON=0x8000;
    PR1 = 0xFFFF;*/
    //INTDisableInterrupts(); //deshabilitar interrupciones.
    SYSTEMConfig(SYS_FREQ, SYS_CFG_PCACHE);
    CHECONbits.PFMWS=7; //indicar que espere el máximo tiempo de esper el micro hacia la flash.
    CheKseg0CacheOn(); //activar el sistema de caché
    mCheConfigure(CHECON | 0x30); //precargar la caché
    T1CON = 0x8000; // enable TMR1, Tpb, 1:1
    PR1 = 0xFFFF; // máximo número posible

    // SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);


    }



    void Delayms(unsigned t)
    {
    while (t--)
    { // t x 1ms loop
    TMR1 = 0;
    while (TMR1 < 36000000/1000);
    }
    }

    void Delayus( unsigned t)
    {
    while (t--)
    { // t x 1ms loop
    TMR1 = 0;
    while (TMR1 < 36000000/1000000);
    }
    }




    void main()
    {
    unsigned char devoluciones[6],cad[16386];//MAT[128][128];
    short int aux=0;
    int i,j;
    unsigned int aux2;



    Inicializar();
    for(i=0;i<16384;i++)
    cad[i]=0;
    OpenUART2(UART_EN | UART_RX_TX | UART_NO_PAR_8BIT | UART_1STOPBIT | UART_BRGH_SIXTEEN , UART_TX_ENABLE | UART_RX_ENABLE, BRATE);
    do
    {
    Delayms(1);
    WriteUART2(0xAA);
    WriteUART2(0x0D);
    WriteUART2(0x00);
    WriteUART2(0x00);
    WriteUART2(0x00);
    WriteUART2(0x00);
    for(j=0;j<6;j++)
    devoluciones[j]=0;
    getsUART2(6,devoluciones,2220);

    printf("%x %x %x %x %x %x\n",devoluciones[0],devoluciones[1],devoluciones[2],devoluciones[3],devoluciones[4],devoluciones[5]);
    }while(!(devoluciones[0] == 0xaa &amp;&amp; devoluciones[1] == 0x0e &amp;&amp; devoluciones[2] == 0x0d) &amp;&amp; aux < 60);
    //me devuelve el comando de sincronización
    Delayms(1);
    if(aux < 60)
    {
    for(j=0;j<6;j++)
    devoluciones[j]=0;
    getsUART2(6,devoluciones,2220); //será: AA 0D 00 00 00 00
    if(devoluciones[0] == 0xaa &amp;&amp; devoluciones[1] == 0x0d)
    {
    //la envío la verificcación
    Delayms(1);
    WriteUART2(0xaa);
    WriteUART2(0x0e);
    WriteUART2(0x0d);
    WriteUART2(0x00);
    WriteUART2(0x00);
    WriteUART2(0x00);
    //tiempo de espera obligatorio para que se estabilice la cámara
    Delayms(3000);
    }
    CloseUART2();
    OpenUART2(UART_EN | UART_RX_TX | UART_NO_PAR_8BIT | UART_1STOPBIT | UART_BRGH_SIXTEEN , UART_TX_ENABLE | UART_RX_ENABLE, BRATE);
    printf("Antes de INITIAL\n");

    WriteUART2(0xAA);
    WriteUART2(0x01);
    WriteUART2(0x00);
    WriteUART2(0x03);
    WriteUART2(0x09);
    WriteUART2(0x03);

    //devuelve AA 0E 01
    do
    {
    Delayms(1);
    for(j=0;j<6;j++)
    devoluciones[j]=0;
    getsUART2(6,devoluciones,2220);
    }while(!(devoluciones[0] == 0xaa &amp;&amp; devoluciones[1] == 0x0e &amp;&amp; devoluciones[2] == 0x01));
    printf("%x %x %x %x %x %x\n",devoluciones[0],devoluciones[1],devoluciones[2],devoluciones[3],devoluciones[4],devoluciones[5]);
    printf("Despues de INITIAL\n");

    Delayms(1);
    WriteUART2(0xAA);
    WriteUART2(0x05);
    WriteUART2(0x01);
    WriteUART2(0x00);
    WriteUART2(0x00);
    WriteUART2(0x00);
    do
    {
    //devuelve AA 0E 05
    Delayms(1);
    for(j=0;j<6;j++)
    devoluciones[j]=0;
    getsUART2(6,devoluciones,2220);
    }while(!(devoluciones[0] == 0xaa &amp;&amp; devoluciones[1] == 0x0e &amp;&amp; devoluciones[2] == 0x05));
    //Delayms(1000);
    printf("%x %x %x %x %x %x\n",devoluciones[0],devoluciones[1],devoluciones[2],devoluciones[3],devoluciones[4],devoluciones[5]);
    Delayms(1);


    WriteUART2(0xAA);
    WriteUART2(0x04);
    WriteUART2(0x02);
    WriteUART2(0x00);
    WriteUART2(0x00);
    WriteUART2(0x00);
    //devuelve AA 0E 04
    do
    {
    Delayms(1);
    for(j=0;j<6;j++)
    devoluciones[j]=0;
    getsUART2(6,devoluciones,2220);
    }while(!(devoluciones[0] == 0xaa &amp;&amp; devoluciones[1] == 0x0e &amp;&amp; devoluciones[2] == 0x04));
    printf("%x %x %x %x %x %x\n",devoluciones[0],devoluciones[1],devoluciones[2],devoluciones[3],devoluciones[4],devoluciones[5]);
    Delayms(1);
    for(j=0;j<6;j++)
    devoluciones[j]=0;
    getsUART2(6,devoluciones,2220);
    printf("%x %x %x %x %x %x\n",devoluciones[0],devoluciones[1],devoluciones[2],devoluciones[3],devoluciones[4],devoluciones[5]);
    // devuelve AA 0A 01 DATA
    printf("Ha entrado\n");
    for(i=0;i<2731;i++)
    {
    Delayms(1);
    for(j=0;j<6;j++)
    devoluciones[j]=0;
    getsUART2(6,devoluciones,2220);
    for(j=0;j<6;j++)
    {
    cad[i]=devoluciones[j];
    i++;
    }
    }
    printf("Fin de foto\n");
    Delayms(1);
    WriteUART2(0xAA);
    WriteUART2(0x0E);
    WriteUART2(0x0A);
    WriteUART2(0x03);
    WriteUART2(0x00);
    WriteUART2(0x00);

    for(i=0;i<16386;i++)
    {
    if(cad[i] != 0)
    printf("%d/",cad[i]);
    }
    CloseUART2();
    }
    printf("\nSe ha terminado\n");
    }

    /******************************** FIN CODE ****************************/



    The answers you give me the camera is:

    0 0 0 0 0 0
    aa e d 0 0 0
    Antes de INITIAL
    aa e 1 1 0 0
    Despues de INITIAL
    aa e 5 2 0 0
    aa e 4 3 0 0
    aa a 2 0 40 0
    Ha entrado
    Fin de foto
    77/78/80/
    Se ha terminado


    Regards.


  • #2


    What is the exact model of Camera you have and what voltage have you powered it with?
    Mark

    Comment


    • #3


      My camera is UCAM-TTL and I have it set at 5 volts. The Datasheet indicates it works to 3.3 volts, but with that voltage don´t work.

      Comment


      • #4


        Please check the FAQ http://4d.websitetoolbox.com/post?id=5365549

        Especially Questions 5 and 9
        Mark

        Comment


        • #5


          The model of chip is:

          OV 528

          -B64

          K48471.1

          O412

          Comment


          • #6


            So you've got a 3.3v camera that you say only works at all (but not properly) on 5v, which it shouldn't be powered from for extended periods of time.

            Doesn't sound good. Contact [email protected]
            Mark

            Comment


            • #7


              Thank you very much for your help.

              Comment

              Working...
              X