• Lunes 29 de Abril de 2024, 00:25

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - jjcorps

Páginas: [1]
1
Visual C++ / Cancelar Una Tarea
« en: Sábado 12 de Enero de 2008, 21:34 »
Hola llevo ya unos dias calentandome la cabeza y sin exito. Os explico mi problema:

1º Quiero lanzar un bucle con un conjunto de tareas al pulsar un boton y pararlo al pulsar otro boton (o el mismo).

2º El conjunto de tareas es el muestreo de una comunicación USB y el dato lo presento en un TextBox el problema es que el TextBox no muestra el dato recibido. En un bucle finito el TextBox solo muestra el ultimo dato. Creo que le falta algun refresco o algo así.

Espero que me podais ayudar. Gracias.

2
Microcontroladores / Re: Comunicar Pic Con Pic
« en: Jueves 4 de Mayo de 2006, 22:56 »
Has probao en utilizar i2c para la comunicacion entre pics?

3
Programación en C / Problemas Con I2c En Css Picc
« en: Jueves 4 de Mayo de 2006, 22:51 »
Hola tengo problemas con el i2c para comunicar un maestro con un esclavo,esta comunicacion hace lo siguiente el maestro pide informacion al esclavo el cual le responde con (0xA0)  el problema esta en que el maestro recibe siempre la señal (0xFF)  es decir todo a 1 es como si no pudiese poner niveles bajos en las lineas de comunicacion i2c.

Uso PIC16F877A tanto para el maestro como para el esclavo y la resistencia pull-up que uso para i2c es 2K2

CODIGO DEL MAESTRO
Código: Text
  1.  
  2. //////////////////////////////////////////////////
  3. // I2C master                                   //
  4. // PIC16F877A                                   //
  5. //                                 PICmaster.C  //
  6. // Crea una comunicacion entre varios PICS      //
  7. // por i2c mandando lo leido al PC por el       //
  8. // el puerto serie.                             //
  9. //                                              //
  10. // Realizado por Juan José Chica Barrera        //
  11. //////////////////////////////////////////////////
  12.  
  13.  
  14. #include <16f877A.h>
  15. #fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP
  16. #use delay(clock = 10000000)       // reloj 10MHz
  17. /*
  18.    Configuracion principal del I2C
  19.    Modo Maestro
  20.    Tasa de transferencia rapida, aunq puede tener problemas
  21.    I2c se hace por harwdware pa eso lo tenemos en el
  22. */
  23. #use i2c(MASTER,SDA=PIN_C4,SCL=PIN_C3,FAST,FORCE_HW)
  24. /*
  25.    Configuracion principal del puerto serie
  26.    velocidad de 9600 baudios
  27.    sin paridad
  28.    con un bit de parada
  29. */
  30. #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
  31.  
  32.  
  33.  
  34. /*
  35.    Rutina de ESCRITURA a un dispositivo conectado al i2c
  36.  
  37.    i2cdev --> Direccion del dispositvo
  38.    i2cdat --> Dato que le quiero enviar
  39. */
  40. void i2cw(int i2cdev, int i2cdat){
  41.  
  42.    i2c_start();                  // Inicializo comunicación I2C
  43.    i2c_write(i2cdev);            // Envio Dirección de dispositivo I2C + R/W
  44.    i2c_write(i2cdat);            // Envio byte a escribir
  45.    i2c_stop();                   // Cierro comunicacion
  46. }
  47.  
  48.  
  49. /*
  50.    Rutina de LECTURA a un dispositivo conectado al i2c
  51.  
  52.    i2cdev --> Direccion del dispositvo del que quiero leer
  53. */
  54. int  i2cr(int i2cdev){           // Rutina de lectura I2C
  55.  
  56.    int r=0x00;
  57.  
  58.    i2c_start();
  59.    i2c_write(i2cdev);
  60.    r=i2c_read();
  61.    i2c_stop();
  62.    return(r);
  63. }
  64.  
  65. unsigned int giro=80;
  66. main()
  67. {
  68.      output_float(PIN_C3);         //I2C pin float
  69.      output_float(PIN_C4);         //I2C pin float
  70.  
  71.      while(1)
  72.      {
  73.          //COMUNICACION CON EL ESCLAVO 1
  74.          giro = i2cr(0x02);           //Leo del dispositivo esclavo y lo muestro por el puerto B
  75.          printf("Prueba de i2c %U\n\r",giro);  //Lo muestro por el puerto serie
  76.          delay_ms(1000);            //Retardo de 1 segundo
  77.          giro = 0;                    //Reseteo la variable
  78.  
  79.      }
  80.  
  81.  
  82. }
  83.  
  84.  

CODIGO DEL ESCLAVO
Código: Text
  1.  
  2. //////////////////////////////////////////////////
  3. // I2C slave                                    //
  4. // PIC16F877A                                   //
  5. //                                 PICslave1.C  //
  6. // Crea una comunicacion entre varios PICS      //
  7. // siendo una comunicacion muy basica           //
  8. //                                              //
  9. // Realizado por Juan José Chica Barrera        //
  10. //////////////////////////////////////////////////
  11.  
  12. #include <16f877A.h>
  13. #fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP
  14. #use delay(clock = 10000000)       // reloj 10MHz
  15. #use fast_io(B)                    // cambio rapido de estados en los puertos
  16. /*
  17.    Configuracion principal del I2C
  18.    Modo Esclavo
  19.    Direccion 0b00000010  = 0x02  (Son 7 bits el bit que se desprecia es el de menor peso por tanto es 1)
  20.    Tasa de transferencia rapida, aunq puede tener problemas
  21.    I2c se hace por harwdware pa eso lo tenemos en el chip
  22. */
  23.  
  24. #use i2c(SLAVE,SDA=PIN_C4,SCL=PIN_C3,ADDRESS=0x02,FAST,FORCE_HW)
  25.  
  26. byte DATA = 69;  // antes era 0x0F
  27.  
  28. //Interrupcion provocada cuando algo ocurre en el i2c
  29. #INT_SSP
  30. void ssp_interupt (){
  31.      output_b(0xFF);
  32.      if(i2c_poll()){               //Si tenemos algo en el buffer de entrada
  33.            output_b(i2c_read());   //lo mostramos por el puerto B
  34.      }
  35.      else{
  36.  
  37.            i2c_write(0xA0);    //Si no esq el master quiere q le mandemos la info
  38.                                    //solamente la parte baja de un entero (1 byte)
  39.            output_b(0x00);
  40.      }
  41. }
  42.  
  43. void main (){
  44.  
  45.      set_tris_b(0x00);             //RB 7-0:OUT
  46.  
  47.      output_b(0);        //en un principio esta apagado
  48.  
  49.      enable_interrupts(GLOBAL);      //Activamos las interrupciones
  50.      enable_interrupts(INT_SSP);     //Activamos la interrupcion para el i2c
  51.  
  52.    while (1);  //bucle infinito
  53. }
  54.  
  55.  
  56.  

Envio los datos por el puerto serie para verlos en condiciones.

¿alguna idea de donde puede estar el error?

Páginas: [1]