Autor Tema: interrupcion del visual  (Leído 2385 veces)

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

Desconectado pitillo

  • PIC10
  • *
  • Mensajes: 7
interrupcion del visual
« en: 02 de Mayo de 2006, 13:03:48 »
Hola buenas estoy usando el visual basic para mandar un dato al pic.
el dato lo introduces en una cadena de texto y se envia cuando pulso a un boton enviar.
Mi problema es que quiero que cuando le das a enviar me haga una interrupcion para que me guarde el dato.
Tengo el siguiente programa

#include <16f628.h> // Selecciona el PIC
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT // Opciones de configuración
#use delay(clock=4000000) // Velocidad del Cristal : 4 Mhz
#use standard_io(b)
#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1) // Definición del RS232

char Keypress=' ';

#int_rda
void serial_isr() {

  Keypress=0x00;
  if(kbhit()){
    Keypress=getc();
    if(Keypress!=0x00){
      putchar(keypress);
      keypress=0x00;
    }
  }
}


void main() {

  enable_interrupts(global);
  enable_interrupts(int_rda);

  printf("\r\n\Listen on RS232 (Int)\r\n");

  do {


  } while (TRUE);
}
Pero no se si estoy haciendo bien la interrupcion, o es otro tipo, porque le envio los datos pero no me hace nada.
Si alguien me puede ayudar le estaria muy agradecido

el codigo del visual basic que tengo cuando le doy al boton enviar es el siguiente
Private Sub CmdEnviar_Click()
MSComm1.InBufferCount = 0     'reseta el buffer de recepcion
   
MSComm1.Output = TxtEnviar.Text & Chr$(13)
   
Do While MSComm1.OutBufferCount > 0
Loop
End Sub


Muchas gracias un saludo

Desconectado Sasián

  • PIC24F
  • *****
  • Mensajes: 825
    • www.sasian.es
Re: interrupcion del visual
« Respuesta #1 en: 02 de Mayo de 2006, 15:49:28 »
seguramente (aunque no se si es tu principal problema) tengas un overrun en el buffer del PIC, fijate que cada byte que recibes lo envias de nuevo dentro de la interrupción :shock: prueba a recibir cadenas completas y luego las muestras.

acuerdate que una interrupcion es para hacer sólo lo imprescindible (en tu caso capturar el caracter del puerto serie), el resto de operaciones las debes hacer en el scan principal.

creo recordar que puse algun ejemplo en http://www.electraf.net/modules.php?name=News&file=article&sid=23

saludos

Puerto Real - Cádiz - España
  www.sasian.es

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: interrupcion del visual
« Respuesta #2 en: 03 de Mayo de 2006, 03:26:39 »
   
Do While MSComm1.OutBufferCount > 0
Loop

Hola. Hacer eso nunca es bueno...ese loop consume el 100% de la aplicacion, provocando que la misma no responda(o bien que el envio por serie sea incorrecto).
Minimamente hace asi para permitir "descanzar" a la aplicacion:
Código: Visual Basic
  1. Do While MSComm1.OutBufferCount > 0
  2. DoEvents
  3. Loop

Saludos!
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything