Autor Tema: Problemas con I2C y Rs232 con Pic18f4620  (Leído 708 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado LoboJoel

  • PIC10
  • *
  • Mensajes: 5
Problemas con I2C y Rs232 con Pic18f4620
« en: 14 de Diciembre de 2022, 15:01:49 »
Hola, estoy trabajando con el puerto I2c para tomar datos de un sensor de temperatura y humedad , el AM2320, y estos valors los quiero mostrar en un terminal serie. El problema es que cuando uso el puerto i2c pareciera que el puerto serie no funciona ya que no puedo muestrear los valores.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Problemas con I2C y Rs232 con Pic18f4620
« Respuesta #1 en: 14 de Diciembre de 2022, 15:09:36 »
Hola, estoy trabajando con el puerto I2c para tomar datos de un sensor de temperatura y humedad , el AM2320, y estos valors los quiero mostrar en un terminal serie. El problema es que cuando uso el puerto i2c pareciera que el puerto serie no funciona ya que no puedo muestrear los valores.

Deberías compartir código y esquemático.

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado LoboJoel

  • PIC10
  • *
  • Mensajes: 5
Re:Problemas con I2C y Rs232 con Pic18f4620
« Respuesta #2 en: 14 de Diciembre de 2022, 15:26:55 »
Este es el codigo de mi main.h

#include <18F4620.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES H4                       //High speed osc with HW enabled 4X PLL
#FUSES NOPROTECT                //Code not protected from reading
#FUSES IESO                     //Internal External Switch Over mode enabled
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES BORV21                   //Brownout reset at 2.1V
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOCPD                    //No EE protection
#FUSES STVREN                   //Stack full/underflow will cause reset
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTD                   //Data EEPROM not write protected
#FUSES NOEBTR                   //Memory not protected from table reads
#FUSES NOCPB                    //No Boot Block code protection
#FUSES NOEBTRB                  //Boot block not protected from table reads
#FUSES NOWRTC                   //configuration not registers write protected
#FUSES NOWRTB                   //Boot block not write protected
#FUSES FCMEN                    //Fail-safe clock monitor enabled
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOLPT1OSC                //Timer1 configured for higher power operation
#FUSES MCLR                     //Master Clear pin enabled

#use delay(clock=40000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3)




Y el siguiente es mi main.c... Como dije el sensor es el Am2320




Void Config();
void main()
{
 
  char bufer[10];
  unsigned long Modelo=0;
  Config();
 
  printf("Inicio de comunicacion i2c\n\r\n\r");

 
  i2c_start();
  i2c_write(0xB8 + 0x00);
  i2c_write(0x03);
  i2c_write(0x08);
  i2c_write(0x07);
  i2c_stop();
 
  i2c_start();

  bufer[0]=i2c_read();  //comando 0x03
  bufer[1]=i2c_read();  //longitud de registro
  bufer[2]=i2c_read();  //modelo High
  bufer[3]=i2c_read();  //modelo Low
  bufer[4]=i2c_read();  // Version
  bufer[5]=i2c_read();  //ID
  bufer[6]=i2c_read();  //ID 1
  bufer[7]=i2c_read();  //ID 2
  bufer[8]=i2c_read();  //ID 3
  bufer[9]=i2c_read();  //CRC
  i2c_stop();
 // i2c_start();
 
 
  //delay_ms(2000);
  Modelo=((bufer[2] )| (bufer[3]>>8));
 

 
  printf("\n\r Modelo %ld ",Modelo);

 
 
 

}


Void Config()
{
   
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF|ADC_TAD_MUL_0);
   setup_psp(PSP_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   //Setup_Oscillator parameter not selected from Intr Oscillotar Config tab

   // TODO: USER CODE!!
 
   
   
   set_tris_c(0xE8);            //01101000

}



« Última modificación: 14 de Diciembre de 2022, 15:42:44 por LoboJoel »

Desconectado LoboJoel

  • PIC10
  • *
  • Mensajes: 5
Re:Problemas con I2C y Rs232 con Pic18f4620
« Respuesta #3 en: 14 de Diciembre de 2022, 15:29:36 »
el problema esta en que cuando arranca el programa se comunica sin inconvenientes por el puerto Serie al terminal Teraterm. Pero cuando pasa a querer realizar la comunicación con el puerto I2C , y volver a escribir en el puerto serie , ya no responde.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Problemas con I2C y Rs232 con Pic18f4620
« Respuesta #4 en: 14 de Diciembre de 2022, 15:45:36 »
el problema esta en que cuando arranca el programa se comunica sin inconvenientes por el puerto Serie al terminal Teraterm. Pero cuando pasa a querer realizar la comunicación con el puerto I2C , y volver a escribir en el puerto serie , ya no responde.

¿Y dónde está el super lazo o lazo principal?

Código: C
  1. while(1)
  2. {
  3.  
  4. }

Debes tener un lazo infinito donde se repite todo el proceso una y otra vez.

Caso contrario solo se ejecuta una sola vez el código.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Problemas con I2C y Rs232 con Pic18f4620
« Respuesta #5 en: 14 de Diciembre de 2022, 15:50:24 »
el problema esta en que cuando arranca el programa se comunica sin inconvenientes por el puerto Serie al terminal Teraterm. Pero cuando pasa a querer realizar la comunicación con el puerto I2C , y volver a escribir en el puerto serie , ya no responde.

¿Y dónde está el super lazo o lazo principal?

Código: C
  1. while(1)
  2. {
  3.  
  4. }

Debes tener un lazo infinito donde se repite todo el proceso una y otra vez.

Caso contrario solo se ejecuta una sola vez el código.

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado LoboJoel

  • PIC10
  • *
  • Mensajes: 5
Re:Problemas con I2C y Rs232 con Pic18f4620
« Respuesta #6 en: 14 de Diciembre de 2022, 15:56:03 »
Si el lazo infinito lo tengo en cuenta , pero en mi caso, solo es una etapa de prueba  y no me es necesario, con solo que funcione una ves estaría bien, luego tengo que armar una librería.  Tampoco encuentro en las hojas de datos información que digan que no son compatibles  que trabajen juntos.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Problemas con I2C y Rs232 con Pic18f4620
« Respuesta #7 en: 14 de Diciembre de 2022, 16:01:01 »
Si el lazo infinito lo tengo en cuenta , pero en mi caso, solo es una etapa de prueba  y no me es necesario, con solo que funcione una ves estaría bien, luego tengo que armar una librería.  Tampoco encuentro en las hojas de datos información que digan que no son compatibles  que trabajen juntos.

Si estás simulando, podrías utilizar el analizador lógico para determinar si el bus I2C envía la señal de datos y reloj.

Si estás trabajando con el hardware físico, deberías utilizar un osciloscopio para determinar si el bus I2C funciona, claro que un analizador lógico real es mucho mejor.

Si no hay "libreria", debes leer las hojas de datos del sensor y crear tu propio código o librería.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:Problemas con I2C y Rs232 con Pic18f4620
« Respuesta #8 en: 14 de Diciembre de 2022, 16:02:24 »
Si el lazo infinito lo tengo en cuenta , pero en mi caso, solo es una etapa de prueba  y no me es necesario, con solo que funcione una ves estaría bien, luego tengo que armar una librería.  Tampoco encuentro en las hojas de datos información que digan que no son compatibles  que trabajen juntos.

¿Y de que valor son las resistencia de pull-up? ¿Cómo es el esquemático de tu hardware?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado LoboJoel

  • PIC10
  • *
  • Mensajes: 5
Re:Problemas con I2C y Rs232 con Pic18f4620
« Respuesta #9 en: 14 de Diciembre de 2022, 16:05:54 »
las resistencias que le puse son de 4k7.


 

anything