Tutorial 16: Comunicación I2C de un PIC18F2550 y un rtc DS3231 utilizando XC8 y MPLABX

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 ธ.ค. 2024

ความคิดเห็น • 75

  • @agustinzuliani4578
    @agustinzuliani4578 4 ปีที่แล้ว +4

    Naaaa simplemente perfecta explicacion. Muy buen video, esto demuestra que no hace faltan videos de una hora para poder explicar bien algo. Ademas muy prolija la programacion y se entiende. Gracias.

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      Hola Agustin, gracias por los comentarios, un gusto que se entienda el contenido del video. Saludos

  • @microled2012
    @microled2012 5 ปีที่แล้ว +1

    Muy buen video ... muy claro y preciso ....!!!! saludos desde Colombia ..

    • @CarlosQL
      @CarlosQL  5 ปีที่แล้ว

      Gracias, estimado. Igualmente saludos desde Perú.

  • @juliofranciscomottaclaudio5861
    @juliofranciscomottaclaudio5861 4 ปีที่แล้ว +1

    Gran contenido!

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      Gracias por los comentarios Julio. Saludos

  • @jmartinvelandiar.339
    @jmartinvelandiar.339 ปีที่แล้ว

    Buenas tardes, primero agradecer por la claridad de sus videos, permiten entender lo que se quiere mostrar, quiero usar en un pic 18f2550 por puerto I2C un display 16X2 y un teclado matricial 4x4... hay algun video para esta opcion ?
    Le agradesco su atencion.

  • @eduardoferazzi6487
    @eduardoferazzi6487 4 ปีที่แล้ว +1

    Hola carlos queria hacerte una pregunta yo tengo un ds1307 que lo mismo mi duda es que en la hoja de datos veo en el esquema un cristal de 32.768 khz y queria saber si anda sin el cristal ya que el que tenia lo perdi y la unica casa de electronica cerca de mi casa es muy caro y se me hace imposible moverme para compraro en otro lado por la cuerntena establecida en Argentina por el COVID-19
    Un saludo
    Eduardo

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      Hola Eduardo, lamentablemente el ds1307 necesita del cristal para poder funcionar

  • @eduardoferazzi6487
    @eduardoferazzi6487 3 ปีที่แล้ว

    Hola Carlos quería saber si el pasaje puede hacer con estructura de bits más uniones
    Hasta el momento logro obtener la hora en Proteus desde el sistema pero no logro que se muestre en el LCD
    Nosé si me podes orientar en caso de que tengas conocimientos en estos dos temas mapas de bits y uniones

  • @TheDanto123
    @TheDanto123 3 ปีที่แล้ว +1

    Carlos¡¡ una consulta tengo que hacer un proyecto con este modulo, pero como hago para guardar la hora actual justa en el DS3231 a la hora de compilar en el micro el codigo?, porque el proteus toma la hora del sistema como podria hacer para que el micro tome la hora del sistema y la almacene en el DS 3231?

    • @CarlosQL
      @CarlosQL  3 ปีที่แล้ว

      Hola Daniel, en este caso tienes que utilizar algún método para configurar la hora. Puede ser mediante un teclado matricial, mediante el puerto UART o incluso mediante pulsadores. La idea es tener un periférico mediante el cual el usuario va establecer la hora actual.

    • @TheDanto123
      @TheDanto123 3 ปีที่แล้ว

      @@CarlosQL gracias por responder Carlos, si en mi caso la idea era tomarlo directamente pero veré lo del puerto UART, gracias Carlos¡¡¡

  • @eduardoferazzi6487
    @eduardoferazzi6487 4 ปีที่แล้ว +1

    Hola quisiera saber si tiene un tutotial o si podrias hacer para manerar por SPI el modulo RFID RC522
    Un saludo
    Eduardo

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว +1

      Hola Eduardo, me doy un tiempo y hago un video del tema, porque me parece muy interesante. Saludos

    • @eduardoferazzi6487
      @eduardoferazzi6487 4 ปีที่แล้ว +1

      @@CarlosQL Gracias

  • @eduardoferazzi6487
    @eduardoferazzi6487 4 ปีที่แล้ว +1

    Hola Carlos tengo un problema cuando desenchufo el pic y luego de enchufarlo no me actualiza la hora sino que me pone la ultima que le cargue desde el mplbax la pila que trae la medi con un tester y tiene 3.5v ¿Puede ser la pila que esta vencida ??

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      Hola Eduardo, tal vez estas invocando el código para cargar la hora al inicio del programa y por eso el reloj esta tomando la hora que grabaste anteriormente. Si ese no es el caso, mándame un pantalla del código al correo carlos359_7@hotmail.com

    • @eduardoferazzi6487
      @eduardoferazzi6487 4 ปีที่แล้ว

      @@CarlosQL Disculpa que no te conteste antes tuve problemas con el servicio del internet
      A las funciones las llamo antes de entrar al while y dentro del while lo que hago es leer desde el rtc
      Ahora te mando una foto del código al correo que me pásate para ver si ahí un error

  • @jhoelventuragil2180
    @jhoelventuragil2180 4 ปีที่แล้ว

    Una consulta amigo si quiero prender un LED a activar una carga dependiendo de la hora , minutos o segundo que yo quiera como haría.... gracias tu ayuda amigo

  • @eduardoferazzi6487
    @eduardoferazzi6487 4 ปีที่แล้ว +1

    Hola estuve mirando el código que implementas para manejar el I2C me entro una duda cuando configuras los registros ssp para manejar la comunicación para configurar un bit especifico mencionas directamente el bit ej SSPCON2bits.SEN los demás bits del registro no se usan y se pueden poner en 0
    Pregunto esto porque quiero mudar el código a otro compilador y maneja el registro completo no bit a bit
    Un saludo
    Eduardo

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      Hola Eduardo, efectivamente los bits que no manipulo, tienen el valor por defecto en 0x00

    • @eduardoferazzi6487
      @eduardoferazzi6487 4 ปีที่แล้ว

      @@CarlosQL Gracias. Una consulta mas para imprimir las variable por el lcd se puede mostrar asi nomas o hay que pasarlas a caracter primero

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      @@eduardoferazzi6487 Es correcto Eduardo, para mostrar una variable de tipo entera o float, primero se debe convertir a una cadena de caracteres y luego enviarlo como tal a una pantalla LCD, puedes crear una función propia para eso o usar algunas funciones del lenguaje C, como spritng()

    • @eduardoferazzi6487
      @eduardoferazzi6487 4 ปีที่แล้ว +1

      @@CarlosQL Gracias por eso no me mostraba nada

  • @montesdeocarodriguezjesus5990
    @montesdeocarodriguezjesus5990 4 ปีที่แล้ว

    Podrías hablar sobre las pantallas oled para usarlo en el pic18f4550

  • @fguille2001
    @fguille2001 4 ปีที่แล้ว +1

    muchas gracias Carlos !! se podría hacer esto aplicando las funciones del mcc, cuando tengas tiempo. un saludo desde Buenos Aires Argentina

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      Gracias por los comentarios Fernando, también tocare esos temas. Saludos de Lima, Perú

  • @jhordyperez1594
    @jhordyperez1594 5 ปีที่แล้ว +1

    una pregunta la función "CONVERTIRHORA" el lazo for que función tiene ????? podrías explicar esa parte del código seria de mucha ayuda para entender.

    • @CarlosQL
      @CarlosQL  5 ปีที่แล้ว +1

      Estamos simulando que la hora y la fecha han llegado en una cadena de caracteres, por ejemplo del puerto usar, entonces la función convertirHora lo que hace es convertir esta cadena de caracteres en números con formato bcd para guardar en el DS3231.
      Primero con el for le estamos quitando 0x30 para convertir ese carácter en un número entero. Por ejemplo ‘1’ es igual a 0x31 si le quitamos 0x30 mediante un AND lógico quedaría 0x01, Convertimos el carácter ‘1’ en 1 entero. Lo mismo hacemos con los seis caracteres.
      Luego estos numero los convertimos en BCD, ejemplo Hora[2] = 5 = 0b00000101 y Hora[3] = 00001000.
      Desplazamos 4 posiciones a la izquierda Hora[2] = 0b00000101

  • @robsrz4605
    @robsrz4605 4 ปีที่แล้ว +1

    amigo estan muy didacticos tus videos, me pregunto si podrias hacer algun tutorial del protocolo SPI, gracias

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว +1

      Gracias por los comentarios Diego. Me comprometo a tocar el tema de SPI con PIC. Saludos.

  • @eduardoferazzi6487
    @eduardoferazzi6487 4 ปีที่แล้ว +1

    Hola carlos una cosulta recomendas usar el oscilador interno que trae un pic para un reloj
    Mi duda surgido ya que el oscilador interno no es tan preciso como uno externo como es el cristal de cuarzo
    Un saludo
    Eduardo

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      Hola Eduardo, el uso del oscilador interno, depende mucho de la aplicación que vas a realizar, inclusive del ambiente donde va estar el MCU. Si hablamos de este ejemplo, con el DS3231, no hay problema, porque el que va marcar el tiempo el el chip DS3231, y estos son muy exactos. El micro lo único que va hacer es pedir la hora y fecha al DS3231. Saludos

    • @eduardoferazzi6487
      @eduardoferazzi6487 4 ปีที่แล้ว +1

      @@CarlosQL Si lo voy a realizar con un ds1307 que tengo ahí guardado junto con su cristal
      Entonces tendré en cuenta eso que si se necesita precisión usar un cristal externo
      Gracias

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว +1

      @@eduardoferazzi6487 Los DS1307 no son muy precisos, con el tiempo notaras que se ira desfasando del tiempo real. Mi recomendación es que utilices el DS3231.

    • @eduardoferazzi6487
      @eduardoferazzi6487 4 ปีที่แล้ว +1

      @@CarlosQL excelente lo cambiare

    • @eduardoferazzi6487
      @eduardoferazzi6487 4 ปีที่แล้ว

      @@CarlosQL Por ahi la pregunta es tonta tendrás un video donde expliques a detalle las funciones que desarrollaste para el manejo del LCD

  • @jonaolo
    @jonaolo 5 ปีที่แล้ว +1

    tengo un pregunta, como configuras las alarmas es que eso no lo entiendo

    • @jonaolo
      @jonaolo 5 ปีที่แล้ว

      eh estado intentando pero no logro hacer que una alarma me encienda un led no puedo configurarla

  • @jhoelventuragil2180
    @jhoelventuragil2180 4 ปีที่แล้ว +1

    una pregunta como haria para prender un led la hora que yo quiero
    gracias

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว +2

      Podrías hacerlo con un if, después de usar la función leer_hora() Recuerda que esta función devuelve los datos en formato BCD. Por ejemplo para encender un led a las 10:35
      en formato 24 horas
      if(hora==0x10 && min == 0x35)
      {
      encender_led();
      }
      Si estas usando la hora en formado am/pm, también debes incluir en la comparación el bit que indica este dato. Si quieres más pecisión también puedes incluir en la comparación los segundos.
      Saludos

    • @jhoelventuragil2180
      @jhoelventuragil2180 4 ปีที่แล้ว +1

      Gracias amigo muchas gracias

  • @eduardoferazzi9753
    @eduardoferazzi9753 4 ปีที่แล้ว

    Hola
    Primero que nada agradecerte por compartir tus conocimientos con todos nosotros si pedir nada a cambio segundo
    necesitaría orientación para cambiar el lcd 16x2 por unos display 7segmentos ya que es mas fácil conseguir los 7seg grandes que un lcd16x2 para se se pueda ver la hora y fecha desde lejos
    Un saludo
    Eduardo

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      Gracias por los comentarios Eduardo, en este video ya tienes el manejo del reloj, aquí te dejo el enlace del video con display de siete segementos, intenta unir los dos proyectos y conforme te surjan dudas me vas comentando th-cam.com/video/KwkjN3be9sI/w-d-xo.html

    • @eduardoferazzi9753
      @eduardoferazzi9753 4 ปีที่แล้ว

      @@CarlosQL Gracias por la rápida respuesta
      Tendría dos dudas que tendría que haber puesto en el comentario anterior
      1) Para no usar un pc para configurar la hora eliminamos los arreglos que creaste y remplazo por pulsadores y esos datos recibidos los convierto a BCD con la función creada?
      2) Tengo un problema con el mplab x que tarda en abrir cundo compilo y cuando quiero cargar el código al pic puede ser una mala configuración del programa o es mi netbook
      Anexo las características de la netbook
      sistema operativo windows 10
      Procesador: Intel(R) Celeron(R) CPU N2808 @ 1.58GHz (2 CPUS)~1.6GHz
      Memoria RAM 4GB
      Tarjeta grafica Intel(R) HD Graphics
      Si me puede ayudar se lo agradecería mucho
      Un saludo
      Eduardo

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      @@eduardoferazzi9753 Así es puedes crear una variable para los minutos, segundos y hora, incrementar y decrementar estas variables mediante pulsadores y luego hacer las conversiones a BDC para almacenarlo en el DS3231. Para la segundo, que programador estas usando ? si es un pickit3 también puedes descartar con el Aplicativo de pickit3 independiente

    • @eduardoferazzi9753
      @eduardoferazzi9753 4 ปีที่แล้ว

      Si. Varias veces se me cerró al estar cargando y me canse y descarge el aplicativo
      Lo que se me hace raro es que tengo una PC con mayor recursos y aún así medio que se traba cuando lo abro cuando construyó el proyecto para general el .hex y cuando quiero cargar al pic tarda un poco luego anda todo bien

    • @CarlosQL
      @CarlosQL  4 ปีที่แล้ว

      @@eduardoferazzi9753 Eso esta raro, yo tengo la última versión de mplab x, la 5.35, las últimas versiones están más pesadas.

  • @jhoelventuragil2180
    @jhoelventuragil2180 5 ปีที่แล้ว

    Una consulta... cuando yo quito la alimentacion del circuito el RTC o todo circuito, no se grava en la eepron del rtc la hora que de ser .... vuelve a la hora que esta en el programa ...una ayudadita amigo gracias.

    • @CarlosQL
      @CarlosQL  5 ปีที่แล้ว +1

      Hola Jhoel, si hablamos de un RTC, como el ds1307 o DS3231, no son memorias de tipo Eprom. Estos dispositivos pueden almacenar información sin que se pierda, gracias a las pilas de 3.3 v que poseen. Las memorias EEPROM como la AT24C32, si pueden guardar información, inslusive después de estar sin energía. Existen módulos que traen ambos dispositivos un RTC y una memoria EEPROM, pero cada uno debe tener una dirección I2C diferente, para que el microcontrolador pueda comunicarse con ellos

    • @jhoelventuragil2180
      @jhoelventuragil2180 5 ปีที่แล้ว

      Mira yo estoy trabajando con el modulo rtc ds3231 y el pic 16f876a

    • @CarlosQL
      @CarlosQL  5 ปีที่แล้ว

      @@jhoelventuragil2180 en este caso para que el RTC almacene la hora cuando esta sin energía, es asegurandote que el módulo tenga la pila de 3.3V.

    • @jhoelventuragil2180
      @jhoelventuragil2180 5 ปีที่แล้ว

      Claro tiene una pila

    • @jhoelventuragil2180
      @jhoelventuragil2180 5 ปีที่แล้ว +1

      Boy a revisar el código ... muchas gracias por tu ayuda amigo

  • @thecubeprojects
    @thecubeprojects 5 ปีที่แล้ว +1

    cONSULTA donde adquiriste la placa o como se llama ?

    • @CarlosQL
      @CarlosQL  5 ปีที่แล้ว

      Es un diseño propio.

    • @thecubeprojects
      @thecubeprojects 5 ปีที่แล้ว

      @@CarlosQL Muy buena tenes los archivos ?

    • @CarlosQL
      @CarlosQL  5 ปีที่แล้ว

      ​@@thecubeprojects dame un correo para mandarte los archivos, saludos

    • @thecubeprojects
      @thecubeprojects 5 ปีที่แล้ว

      @@CarlosQL Si te lo dejo thecubeprojects@gmail.com Muchas gracias !