Autor Tema: Problema de lectura por Usb 18f2550 alguna ayuda !!!  (Leído 1741 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Problema de lectura por Usb 18f2550 alguna ayuda !!!
« en: 10 de Mayo de 2011, 18:49:52 »
Hola buenas tardes amigos foreros necesito haber si alguien me hecha una mano por aqui; estoy culminando un proyecto de un pic 18f2550 mas un ds1307 y un dispositivo ibutton + una memoria por i2c; todo me a funcionado a la perfecciòn exepto que tengo un problema a la hora de leer la memoria i2c y enviar su contenido via usb; la conexiòn con el ordenador por usb funciona a la perfección pero el problema esta a la hora de enviar una variable que es de tipo string*8; les pego partes del codigo haber quien seria tan amable de por favor echarme una mano con el trasto este.

CODIGO DEL PIC
Citar
ProgramLoop2:   
   BStart                     'INICIO CONTACTO I2C
   BusOut WMEM, [CUENTA]  'ESCRIBO EN LA MEMORIA LA POSICIÓN EN QUE VOY A LEER
   BReStart                   
   BusIn RMEM, CUENTA, [DIA,MES,YEAR,HORA,MINU]
   CUENTA = CUENTA + 5
   DelayMS 2                 
   BStop                     
   If CUENTA > 1500 Then GoTo SALIR  'SI LA CUENTA LLEGA AL FINAL DE LA MEMORIA REINICIO                           
   USBBuffer[0] = 0         
   USBBuffer[1] = DIA       
   USBBuffer[2] = MES
   USBBuffer[3] = YEAR
   USBBuffer[4] = HORA
   USBBuffer[5] = MINU
   GoSub DoUSBOut
   For Index=7 To 0 Step -1
   BStart
   BusOut WMEM, [CUENTA]
   BReStart                 
   BusIn RMEM, CUENTA, [codigo] 'LEO LOS BYTES
   DelayMS 10               
   BStop                     
   CUENTA = CUENTA + 1
   USBBuffer[6] = codigo
   GoSub DoUSBOut
   Next Index
   GoTo ProgramLoop2         'COMPLETO EL LAZO HASTA TERMINAR DE LEER LA MEMORIA

CODIGO VISUAL BASIC

Citar
Public Sub OnRead(ByVal pHandle As Long)
   
   ' read the data (don't forget, pass the whole array)...
   If hidRead(pHandle, BufferIn(0)) Then
      ' ** YOUR CODE HERE **
      ' first byte is the report ID, e.g. BufferIn(0)
      ' the other bytes are the data from the microcontrolller...
'**********************************************************************************************
'*                                LEO LOS DATOS DESDE LA EEPROM                               *
'**********************************************************************************************
      dia = BufferIn(2)
      MES = BufferIn(3)
      ANO = BufferIn(4)
      HORA = BufferIn(5)
      MINU = BufferIn(6)
      codigo = BufferIn(7)
      If dia <> 255 Then
      Text1.Text = Text1.Text & " FECHA:" & dia & "/" & MES & "/" & ANO & " -- HORA: " & HORA & ":" & MINU & " -- SERIAL: " & codigo & vbCrLf
      End If
      End If
             
End Sub

RESULTADO QUE OBTENGO EN EL PC
Citar

 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 1
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 14
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 0
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 0
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 18
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 209
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 104
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 140
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 1
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 1
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 14
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 0
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 0
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 18
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 209
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 104
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 140
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 1
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 1
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 14
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 0
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 0
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 18
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 209
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 104
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 140
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 1

DONDE DESEARIA OBTENER LO SIGUIENTE
Citar

 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 11400182091041401
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 11400182091041401
 FECHA:10/5/11 -- HORA: 0:18 -- SERIAL: 11400182091041401

Es decir que realmente la memoria I2C solo tiene 3 registros completos que comprenden
(DD/MM/YY HH:MM  codigo[8]

Entonces ando confundido no se donde tengo el problema si en codigo del PIC o en el codigo de VISUAL BASIC :? :?

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Problema de lectura por Usb 18f2550 alguna ayuda !!!
« Respuesta #1 en: 10 de Mayo de 2011, 19:00:19 »
Si es necesario el codigo completo para mejor analisis pues lo posteo espero que alguien me pueda solventar la situacion  :(

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Problema de lectura por Usb 18f2550 alguna ayuda !!!
« Respuesta #2 en: 10 de Mayo de 2011, 20:21:41 »
¿y que tipo de comunicación es psnven?

puerto serial virtual, hid o mpusbapi.dll?

tu problema es que no hay control de flujo. debe haber un buffer que almacene todos los caracteres deseados, se puede hacer por hardware y/o por software.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Problema de lectura por Usb 18f2550 alguna ayuda !!!
« Respuesta #3 en: 10 de Mayo de 2011, 20:58:21 »
El tipo de comunicacion es por HID, y como podria hacer el desarrollo del buffer para que por ejemplo me almacene los bytes del "SERIAL" que me esta mostrando de forma incorrecta, y que luego por VB cuando haga bufferIn, me los coloque en una sola linea ?

Desconectado psnven

  • PIC10
  • *
  • Mensajes: 30
Re: Problema de lectura por Usb 18f2550 alguna ayuda !!!
« Respuesta #4 en: 11 de Mayo de 2011, 12:54:18 »
Alguna ayudita :( ??? sera algo de la definicion de las variables ???  :( No consigo donde tengo el problema