Autor Tema: Pic y usb  (Leído 2857 veces)

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

Desconectado lycans2005

  • PIC10
  • *
  • Mensajes: 23
Pic y usb
« en: 11 de Octubre de 2010, 05:33:15 »
Hola, mi problema es que no he podido hacer que el pic me guarde 17 datos, son 17 numeros  0 y 1
para ellos hice un buffer de 32
pero cuando envio al pic, solo me recibe hasta la posicion 7....alguien sabe como hago para poder guardar mis 17 numeros en cada posicion del buffer
gracias

Código: [Seleccionar]
Device = 18F4550                     'SELECCIONAMOS EL PIC Y LA FRECUENCIA DE TRABAJO (48Mhz PARA USB)
Xtal = 48                         'Oscilador 48MHz (Usuando uno de  20MHz)
USB_Descriptor = "Receptor2DESC.inc" 'Descripcion del controlador USB
'------------SERIAL PARA RF---------------------------------------------------
Include "modedefs.bas"               'Libreria para comunicacion
Dim SerString[18] As Byte            'Crear arreglo de 25-byte
Dim B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15,B16,B17 As Byte  'Variable para cada bit
'LOS TAMAÑOS DEL BUFFER USB
Symbol USBBufferSizeMax = 32
Symbol USBBufferSizeTX  = 32
Symbol USBBufferSizeRX  = 32
Dim    USBBuffer[USBBufferSizeMax] As Byte
'REGISTROS Y BANDERAS
Dim PP0 As Byte System        'REGISTRO DENTRO DEL PIC USBPOLL STATUS
Symbol CARRY_FLAG = STATUS.0  'EN ESTADO ALTO SI EL PIC NO TIENE EL CONTROL SOBRE EL BUFFER
Symbol ATTACHED_STATE = 6     'SI USB ESTÁ CONECTADO
GoSub AttachToUSB             'ME VOY A VER SI ESTÀ CONECTADO AL INICIAR EL PROGRAMA
DelayMS 300                    'Tiempo de espera para estabilizar el sistema


' *****************************************************************    
' *****************************************************************
' * LAZO PRINCIPAL DEL PROGRAMA MIENTRAS SE ESTÁ CONECTADO A USB; *
' * RECUERDA QUE DEBES MANTENER LA CONEXIÓN "VIVA" CON LLAMADOS   *
' * CONSTANTES A LAS RUTINAS USBPoll, USBIn or USBOut CADA ALGUNOS*
' * MILISEGUNDOS O MÁS                                            *
' *****************************************************************
' *****************************************************************
PRINCIPAL:
    USBBuffer[0] = 0                'EL PRIMER BYTE ES DE REPORTE DE CONEXIÓN
    GoSub DoUSBOut                  'TRANSMITO LO ALMACENADO EN EL BUFFER
    DelayMS 1                       'DOY UN TIEMPO DE DEMORA
      GoTo Cargar                  ' CARGO DATOS Y REGRESO
      'DelayMS 50                    ' TIEMPO DE RETARDO
      'GoSub Enviar                  ' ENVIO DATOS CARGADOS
        
   'GoTo PRINCIPAL                   ' VOY A PRINCIPAL
End
' ************************************************************
' *               RUTINA DE RECEPCIÓN DE DATOS               *
' ************************************************************
DoUSBIn:
   USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn
   Return  
' ************************************************************
' *              RUTINA DE TRANSMISIÓN DE DATOS              *
' ************************************************************
DoUSBOut:
   USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut
   Return
' ************************************************************
' *           ESPERA HASTA QUE EL USB SE CONECTE             *
' ************************************************************
AttachToUSB:
   Repeat
      USBPoll
   Until PP0 = ATTACHED_STATE
   Return
'************************ Funcion para recibir tados **************************************************
Cargar:

'                           ' (En visual es una posición corrida)
''----Bit 1  
'   GoSub DoUSBIn                 ' ME VOY A LEER EL BUFFER DE ENTRADA, Cago el buffer en el vector
'   B1= USBBuffer[1]
'   DelayMS 1                     'TIEMPO DE RETARDO
'   'Para poder enviar un 0 en el caso de que lo sea
'   If B1=0 Then
'   SerString[0] =   "0"  ' Cargo caracter "0" en la posicion 0 del buffer
'   Else
'   SerString[0] =   "1"  ' Cargo caracter "0" en la posicion 0 del buffer
'   End If
'----Bit 2
'   GoSub DoUSBIn                
'   B2= USBBuffer[2]
'   DelayMS 1
'   If B2=0 Then
'   SerString[1] =   "0"  
'   Else
'   SerString[1] =   "1"  
'   End If
'----Bit 3
'   GoSub DoUSBIn                
'   B3= USBBuffer[3]
'   DelayMS 1
'   If B3=0 Then
'   SerString[2] =   "0"
'   Else
'   SerString[2] =   "1"    
'   End If
'----Bit 4
'   GoSub DoUSBIn                
'   B4= USBBuffer[4]
'   DelayMS 1
'   If B4=0 Then
'   SerString[3] =   "0"  
'   Else
'   SerString[3] =   "1"  
'   End If
'----Bit 5
'   GoSub DoUSBIn                
'   B5= USBBuffer[5]
'   DelayMS 1
'   If B5=0 Then
'   SerString[4] =   "0"  
'   Else
'   SerString[4] =   "1"  
'   End If
'----Bit 6
'   GoSub DoUSBIn                
'   B6= USBBuffer[6]
'   DelayMS 1
'   If B6=0 Then
'   SerString[5] =   "0"  
'   Else
'   SerString[5] =   "1"    
'   End If
'----Bit 7
'   GoSub DoUSBIn                
'   B7= USBBuffer[7]
'   DelayMS 1
'   If B7=0 Then
'   SerString[6] =   "0"  
'   Else
'   SerString[6] =   "1"  
'   End If
' ----Bit 8
'   GoSub DoUSBIn                
'   B8= USBBuffer[8]
'   DelayMS 1
'   If B8=0 Then
'   SerString[7] =   "0"  
'   Else
'   SerString[7] =   "1"  
'   End If    
  
  
' '----Bit 9
'   GoSub DoUSBIn                
'   B9= USBBuffer[9]
'   DelayMS 1
'   If B9=0 Then
'   SerString[8] =   "0"  
'   Else
'   SerString[8] =   "1"  
'   End If
' '----Bit 10
'   GoSub DoUSBIn                
'   B10= USBBuffer[10]
'   DelayMS 1
'   If B10=0 Then
'   SerString[9] =   "0"  
'   Else
'   SerString[9] =   "1"  
'   End If
' '----Bit 11
'   GoSub DoUSBIn                
'   B11= USBBuffer[11]
'   DelayMS 1
'   If B11=0 Then
'   SerString[10] =   "0"  
'   Else
'   SerString[10] =   "1"  
'   End If
' '----Bit 12
'   GoSub DoUSBIn                
'   B12= USBBuffer[12]
'   DelayMS 1
'   If B12=0 Then
'   SerString[11] =   "0"  
'   Else
'   SerString[11] =   "1"  
'   End If
'  '----Bit 13
'   GoSub DoUSBIn                
'   B13= USBBuffer[13]
'   DelayMS 1
'   If B13=0 Then
'   SerString[12] =   "0"  
'   Else
'   SerString[12] =   "1"  
'   End If
' '----Bit 14
'   GoSub DoUSBIn                
'   B14= USBBuffer[14]
'   DelayMS 1
'   If B14=0 Then
'   SerString[13] =   "0"  
'   Else
'   SerString[13] =   "1"  
'   End If
' '----Bit 15
'   GoSub DoUSBIn                
'   B15= USBBuffer[15]
'   DelayMS 1
'   If B15=0 Then
'   SerString[14] =   "0"  
'   Else
'   SerString[14] =   "1"  
'   End If
' '----Bit 16
'   GoSub DoUSBIn                
'   B16= USBBuffer[16]
'   DelayMS 1
'   If B16=0 Then
'   SerString[15] =   "0"  
'   Else
'   SerString[15] =   "1"  
'   End If
' '----Bit 17
'   GoSub DoUSBIn                
'   B17= USBBuffer[17]
'   DelayMS 1
'   If B17=0 Then
'   SerString[16] =   "0"  
'   Else
'   SerString[16] =   "1"  
'   End If
 
 GoTo Enviar                
'Return
'*******************************************************************************************************
Enviar:
    SerOut PORTC.6, T2400 , [  Str SerString ]  ' Envia los 20-byte string.
    DelayMS 50
    GoTo PRINCIPAL
« Última modificación: 11 de Octubre de 2010, 14:50:49 por un Moderador »