Autor Tema: USB 18f4550 volcado de datos, problema con mUSBUSARTIsTxTrfReady()  (Leído 2127 veces)

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

Desconectado redep

  • PIC12
  • **
  • Mensajes: 75
bueno,  me esta dando algun que otro problema mi conexion usb. Me explico para la conexion del USB con el visual basic no me da ningun problema en la mayoria de los casos( a veces me sale le de puerto invalido pero bueno...), tambien me recibe bien la informacion cada 5 min sin ningun problema el problema llega cuando quiero hacer el volcado de las memorias eeprom que son 1024 bytes y los quiero hacer enviando paquetes de 19bytes al PC lo mas rapido posible hay me ocurre un problema que no se mandan, y no se a que se debe si al tiempo que tarda en sacar 19bytes de las epprom no lo se la verdad

Código: [Seleccionar]
void volcado(void){//VOLCADO DE DATOS DE LA EEPROM  AL USB
if (flagVolcado==1){
HabilitarI2C(MASTER,SLEW_OFF);//inicializo modulo
SSPADD = 39;

}else{
goto finVolcado;
}
if(dir1!=0 || dir2!=0 || integrado!=0xA0){

c=0;
vol1=0;
vol2=0;
integradoVol=0xA0;

}else{
goto finVolcado;
}

if(paqueteFormado==0){
for (a = 1; a<=8; a++){
for (b = 0; b<=65535; b++){

output_buffer[c]=LeeDato_i2c_eeprom(integradoVol,vol2,vol1);
c=c+1;
//determinar que dato lee
if(vol1==0xFF & vol2==0xFF) {
vol1=0;
vol2=0;
if(integradoVol==174 || integradoVol==175){
integradoVol=0xA0;
}else{
integradoVol=integradoVol+2;
}
}else{
if(vol1==0xFF){
vol1=0x00;
vol2=vol2+1;
}else{
vol1=vol1+1;
}
}

if(c==13){
goto paquete;
}
}
}
paquete:
paqueteFormado=1;
}//paquete formado


if(mUSBUSARTIsTxTrfReady()){
mUSBUSARTTxRam((byte*)output_buffer,19)
if(dir1==vol1 & dir2==vol2 & integrado==integradoVol){
flagVolcado=0;
paqueteFormado=0;
c=0;
if(estadoGuardado==1){
flagGuardado=1;
estadoGuardado=0;
}
goto finVolcado;
}
paqueteFormado=0;

}
if(flagVolcado=1){
estadoGuardado=1;
flagVolcado=0;

finVolcado:
Delay1TCY();
}



}

Esta echo de la anterior forma porque segun el firmware del USB no se deben utilizar while para no bloquear la conexion. Haber si me podeis ayudar, si os sirve de algo en la recepcion tengo.

Código: [Seleccionar]
dummy = DoEvents()
         Loop Until MSComm1.InBufferCount = 19
         RxData() = MSComm1.Input


 

anything