Mensajes recientes

Páginas: 1 2 3 4 5 6 7 [8] 9 10
71
🔧 Módulo (I²C) con RTC DS3231 y E²PROM 24C32
Librería desarrollada para trabajar con módulos que integran el circuito integrado DS3231.
Incluye librería y ejemplos de prueba.

El módulo utilizado en esta practica se puede encontrar con el nombre de HW-084.

Versión probada con:
• Microcontrolador: PIC18F46K22 @ 64 MHz
• Tarjeta entrenadora: HL-K18
• Entorno de desarrollo: PIC18 Basic Compiler v6.10

Este popular módulo está pensado para realizar practicas de comunicación I2C, y contiene un chip DS3231M, un zócalo integrado en la PCB para insertar una batería recargable para mantener activo el reloj, y otro chip independiente que es una memoria E²PROM tipo 24C32.
El DS3231 es un reloj en tiempo real (RTC) de alta precisión y bajo coste, que integra un oscilador interno compensado por temperatura (TCXO) junto con su cristal, lo que mejora notablemente la estabilidad y reduce la necesidad de componentes externos.
Este dispositivo dispone de una entrada para batería de respaldo, lo que le permite mantener la hora incluso cuando se pierde la alimentación principal.


🧠 Características principales del DS3231
    • Comunicación mediante bus I²C (hasta 400 kHz).
    • Reloj/calendario completo:
        ◦ segundos, minutos, horas.
        ◦ día, fecha, mes y año.
        ◦ compensación automática de meses y años bisiestos (hasta 2100).
    • Formato de hora:
        ◦ 24 horas.
        ◦ 12 horas con AM/PM.
    • Alta precisión:
        ◦ ±2 ppm (≈ ±1 minuto/año en 0–40 °C).
    • Oscilador interno compensado en temperatura (TCXO).
    • Sensor de temperatura integrado (±3 °C), accesible por I²C.
    • Pin 32Khz: salida 32768hz.
    • Pin _INT/SQW salida configurable:
        ◦ Puede funcionar como salida de onda cuadrada (una o varias frecuencias dependiente de la versión del chip).
        ◦ O como salida de interrupción por alarma, activa a nivel bajo (dispone de dos alarmas independientes sobre el mismo pin).
        ◦ Nota: ambas funciones son mutuamente excluyentes:
            ▪ Si el pin se configura como onda cuadrada, no se pueden utilizar las alarmas.
            ▪ Si se configura como salida de alarma, no se puede usar como generador de onda cuadrada.
    • Pin _RST: no implementado en el módulo.
        ◦ salida de reset por fallo de alimentación.
        ◦ entrada para reset manual del microcontrolador.
    • Detección automática de fallo de alimentación y conmutación a batería.
    • Dirección base I2C para la comunicación con RTC DS3231: 0xD0.
⚠️ Nota importante sobre versiones

Existen varias versiones del chip:
    • DS3231SN → mayor precisión, salida SQW configurable (1 Hz, 1.024 kHz, 4.096 kHz, 8.192 kHz) .
    • DS3231M → menor precisión, salida SQW solo 1 Hz.
Conviene comprobar qué versión monta el módulo.

📦 Características del módulo HW-084
    • Tensión de alimentación: 3,3 V – 5,5 V
    • Chip RTC: DS3231M 
    • Zócalo para batería de respaldo del RTC.
    • EEPROM integrada: AT24C32 (32 Kbit = 4 KB)

🧩 EEPROM AT24C32
    • Capacidad: 32 Kbit (4 KB).
    • Dirección I²C base en el módulo: 0x57.
    • Dirección I2C configurable mediante pines A0/A1/A2.
    • Necesita librerías anteriormente publicadas:
    • _I2CLib.bas y _AT24C32Lib.bas.

🔋 Batería de respaldo
El módulo está preparado para usar una batería tipo LIR2032 (recargable), que mantiene el reloj en funcionamiento en ausencia de alimentación principal.
⚠️ Nota: algunos módulos están diseñados para baterías no recargables (CR2032). Conviene revisar si el circuito incluye circuito de carga que suele estar compuesto por una resistencia y un diodo.

🔌 Conexión típica (ejemplo I2C mediante módulo interno MSSP):
Módulo -- Pic
VCC ----- 5V
GND ----- GND
SDA ----- C4 (MSSP)
SCL ----- C3 (MSSP)

🔹 Librería

Librerías necesarias:
📡 Librería I2C para PIC18F46K22 usando MSSP1
Esta librería proporciona funciones esenciales para gestionar la comunicación I2C en modo maestro utilizando el módulo MSSP1 del PIC18F46K22. Incluye inicialización, lectura, escritura y control de transacciones I2C, tales como señales START, STOP y RESTART. Está diseñada para trabajar con dispositivos esclavos I2C como memorias EEPROM, sensores o RTCs.
    • Init_I2C: Inicializa el módulo MSSP1 en modo maestro I2C y configura la velocidad del reloj.
    • START_I2C: Envía una condición START para iniciar la comunicación en el bus I2C.
    • STOP_I2C: Envía una condición STOP para finalizar una transacción en el bus I2C.
    • ReStart_I2C: Envía una condición RESTART para continuar una transacción sin finalizarla.
    • WRITE_I2C: Escribe un byte en el bus I2C y verifica la recepción de ACK por parte del dispositivo esclavo.
    • READ_I2C: Lee un byte del bus I2C y envía un ACK o NACK tras la lectura.
    • WriteDevice_I2C: Envía la dirección del esclavo y escribe datos en el dispositivo mediante I2C.
    • ReadDevice_I2C: Envía la dirección del esclavo y lee un byte desde el dispositivo mediante I2C.

🕒 Librería DS3231 para PIC18 Basic (I2C)
Esta librería permite la comunicación con el módulo de reloj en tiempo real DS3231 (RTC), proporcionando funciones para leer, escribir y configurar el reloj. Incluye soporte para formatos de 12 y 24 horas, modos AM/PM, control de las salidas de onda cuadrada y programación de las dos alarmas internas del chip.
    • Const DS3231_ADDR = 0xD0: asigna dirección base del dispositivo.
     
    • DS3231_Init: inicializa el DS3231 verificando y reiniciando el oscilador si es necesario.
    • DS3231_Set_24h: configura el DS3231 en modo de 24 horas.
    • DS3231_Set_12h: configura el DS3231 en modo de 12 horas.
    • DS3231_Set_AM_PM: establece el modo AM o PM en formato de 12 horas.
    • DS3231_Get_AM_PM_24h: obtiene el modo actual AM/PM/24h.
    • DS3231_Set_DateTime: configura la fecha y hora en el DS3231.
    • DS3231_Get_Date: lee la fecha actual del DS3231.
    • DS3231_Get_Time: lee la hora actual del DS3231.
    • DS3231_Set_Hour: establece la hora en el DS3231, asegurando compatibilidad con el modo horario actual (12h/24h).
    • DS3231_Set_Minutes: establece los minutos en el DS3231.
    • DS3231_Set_Seconds: establece los segundos en el DS3231.
    • DS3231_Set_DayOfWeek: establece el día de la semana en el DS3231.
    • DS3231_Get_DayOfWeek: lee el día de la semana del DS3231.
    • DS3231_SquareWave: activa/desactiva la salida _INT/SQW de onda cuadrada del DS3231 y configura su frecuencia.
    • DS3231_32Khz: activa la salida 32Khz.
    • DS3231_ReadTemperature: devuelve una lectura de temperatura.
    • DS3231_SetAlarm1: establece la alarma interna 1.
    • DS3231_EnableAlarm1: On/Off alarma 1.
    • DS3231_SetAlarm2: establece la alarma interna 2.
    • DS3231_EnableAlarm2: On/Off alarma 2.
    • DS3231_ClearAlarmFlags: borra los flags de las alarmas.
    • DS3231_Write: envía un comando y datos al DS3231 en el registro especificado.
    • DS3231_Read: lee un byte de datos del registro especificado del DS3231.


💾 Librería EEPROM AT24C32 para PIC18 Basic (I2C)
Dirección base I²C en el módulo: 0x57.
En la librería "_AT24C32Lib.bas" editar la nueva dirección base de la E2Prom para este módulo:
' I2C address of the AT24C32 EEPROM (0x57 is the base address).
Const AT24C32_ADDR = 0x57

📂 Archivos incluidos:
Test RTC DS3231.bas: código de test (rutina principal).
_Pic18F46K22Lib.bas: librería para facilitar la configuración Pic18F46K22.
_I2CLib.bas: librería para facilitar la configuración y control I2C hardware.
_DS3231Lib.bas: librería especifica para el control del DS3231.
Los resultados se muestran por UART.


Salida de datos por consola serie:


72
Off Topic / Re:informacion sobre un curso de la editorial F&G Editores
« Último mensaje por Gusfavio en 07 de Abril de 2026, 15:21:46 »
Alguien aquí podría volver a compartir los 4 libros? Todos los enlaces están caídos
73
Simuladores de circuitos / Simular 7segmentos
« Último mensaje por Fer_TACA en 06 de Abril de 2026, 06:33:41 »
Hola a todos,
Alguien me puede decir como poder simular el funcionamiento de los displays de 7 segmentos de cátodo común controlados por transistores.
Si pongo inversores, por ejemplo Cd4049 funciona perfecto.

En algún sitio, hay personas que dicen que cambiando un parámetro de la simulación en proteus indican que se puede simular, pero no sé cuál no como hacerlo.

Alguna idea al respecto?

F.
74
Python / ¿Cuándo dejar de usar Python? Los 3 límites que todo programador descubre tarde
« Último mensaje por DominusDRR en 26 de Marzo de 2026, 16:25:03 »
75
Ahi lo pude solucionar dogflu66, era un problema de fusibles mal configurados. Saludos !
76
Librerías y diagrama de conexión:

77
📟 Librería para el control de RTC basado en DS1307 y memoria EEPROM 24C32
(Oshonsoft PIC Basic Compiler).


Librería desarrollada para trabajar con módulos que integran el circuito integrado DS1307.
Incluye librería y ejemplos de prueba.

Versión probada con:
    • Microcontrolador: PIC18F46K22 @ 64 MHz
    • Tarjeta entrenadora: HL-K18
    • Entorno de desarrollo: PIC18 Simulator IDE v5.99

📌 Módulo Tiny o HW-111 (RTC DS1307 + EEPROM 24C32) – Prácticas con PIC18
En esta publicación se presenta el módulo HW-111 (se puede encontrar el mismo módulo con varios nombres distintos), una pequeña tarjeta muy popular que integra varios circuitos integrados muy utilizados en sistemas embebidos:
    • DS1307 → Reloj en Tiempo Real (RTC) con comunicación serie I2C.
    • 24C32 → Memoria EEPROM o E²PROM con comunicación serie I2C.
    • DS18B20 → Sensor de temperatura (no incluido en la PCB) con comunicación serie 1wire.
Este módulo permite realizar prácticas muy interesantes relacionadas con:
    • Gestión de fecha y hora.
    • Uso del bus I2C.
    • Manejo de memoria E²PROM externa (EEProm AT24C32).
    • Sistemas con batería de respaldo recargable tipo LIR2032.
Además, ambos circuitos integrados comparten el mismo bus I2C (resistencias de polarización del bus I2C incorporadas en PCB), que lo convierte en un excelente sistema práctico para aprender a manejar múltiples dispositivos en un mismo bus.
El módulo incorpora un zócalo para incorporar una batería recargable, que permite mantener la memoria ram y reloj incorporados en el DS1307 funcionado incluso en ausencia de alimentación principal.
Si se desea añadir al módulo el circuito integrado DS18B20, no olvidar soldar también la resistencia de Pull-Up del pin I/O que no viene integrada en el módulo.

⚠ Advertencia importante:
Para utilizar baterías no recargables tipo CR2032 hay que desconectar el circuito de carga de la batería de respaldo, esto se realiza mediante la extracción de los siguientes componentes de la PCB: R5, D1, R4 y R6. Una vez extraídos los componentes se procede a realizar un puente entre los pad de la PCB pertenecientes a R6. Los componentes eliminados pertenecen al circuito de carga que es externo al DS1307, ya que este circuito integrado no tiene internamente circuito de carga.

🔧 Componentes principales del módulo

El módulo HW-111 está compuesto por:

🕒 DS1307 – Real Time Clock (RTC)
Circuito integrado encargado de mantener la fecha y hora del sistema.
Características principales:
    • Comunicación I2C
    • Formato horario 12h / 24h
    • Registro de:
        ◦ segundos
        ◦ minutos
        ◦ horas
        ◦ día de la semana
        ◦ día del mes
        ◦ mes
        ◦ año
    • Ajuste automático de meses y años bisiestos
    • 56 bytes de RAM interna
    • Salida SQW/OUT para generar onda cuadrada
    • Consumo extremadamente bajo en modo batería
Frecuencias posibles en la salida SQW:
    • 1 Hz
    • 4.096 kHz
    • 8.192 kHz
    • 32.768 kHz
Dirección I2C del DS1307 en este módulo:
Escritura : 0xD0
Lectura   : 0xD1

💾 24C32 – Memoria EEPROM I2C
Memoria no volátil utilizada para almacenar información permanente.
Características:
    • Capacidad: 32 Kbit (4 KB)
    • Comunicación I2C
    • Retención de datos superior a 100 años
    • Más de 1 millón de ciclos de escritura
Dirección I2C típica en este módulo:
0x50 escritura
0x51 lectura

📡 Bus I2C compartido
Una ventaja importante del HW-111 es que ambos dispositivos comparten el mismo bus I2C.

PIC
 │
 ├── DS1307 (RTC)
 │
 └── 24C32 (EEPROM)

Esto permite practicar:
    • direccionamiento de dispositivos
    • acceso a múltiples periféricos
    • organización de datos

🔹 Librerías

Las librerías implementada incluye todas las funciones necesarias para:
    • Inicializar el DS1307.
    • Leer y escribir fecha y hora.
    • Acceder a los registros de control.
    • Leer y escribir en la RAM interna.
    • Escribir y leer en la E²PROM 24C32.

Librerías necesarias:
📡 Librería I2C para PIC18F46K22 usando MSSP1
Esta librería proporciona funciones esenciales para gestionar la comunicación I2C en modo maestro utilizando el módulo MSSP1 del PIC18F46K22. Incluye inicialización, lectura, escritura y control de transacciones I2C, tales como señales START, STOP y RESTART. Está diseñada para trabajar con dispositivos esclavos I2C como memorias EEPROM, sensores o RTCs.
    • Init_I2C: Inicializa el módulo MSSP1 en modo maestro I2C y configura la velocidad del reloj.
    • START_I2C: Envía una condición START para iniciar la comunicación en el bus I2C.
    • STOP_I2C: Envía una condición STOP para finalizar una transacción en el bus I2C.
    • ReStart_I2C: Envía una condición RESTART para continuar una transacción sin finalizarla.
    • WRITE_I2C: Escribe un byte en el bus I2C y verifica la recepción de ACK por parte del dispositivo esclavo.
    • READ_I2C: Lee un byte del bus I2C y envía un ACK o NACK tras la lectura.
    • WriteDevice_I2C: Envía la dirección del esclavo y escribe datos en el dispositivo mediante I2C.
    • ReadDevice_I2C: Envía la dirección del esclavo y lee un byte desde el dispositivo mediante I2C.

🕒 Librería DS1307 para PIC18 Basic (I2C)
Esta librería permite la comunicación con el módulo de reloj en tiempo real DS1307 (RTC), proporcionando funciones para leer, escribir y configurar el reloj. Incluye soporte para formatos de 12 y 24 horas, modos AM/PM y control de la salida de onda cuadrada.
    • DS1307_Init: Inicializa el DS1307 verificando y reiniciando el oscilador si es necesario.
    • DS1307_Set_24h: Configura el DS1307 en modo de 24 horas.
    • DS1307_Set_12h: Configura el DS1307 en modo de 12 horas.
    • DS1307_Set_AM_PM: Establece el modo AM o PM en formato de 12 horas.
    • DS1307_Get_AM_PM_24h: Obtiene el modo actual AM/PM/24h.
    • DS1307_Write: Envía un comando y datos al DS1307 en el registro especificado.
    • DS1307_Read: Lee un byte de datos del registro especificado del DS1307.
    • DS1307_Set_DateTime: Configura la fecha y hora en el DS1307.
    • DS1307_Get_Date: Lee la fecha actual del DS1307.
    • DS1307_Get_Time: Lee la hora actual del DS1307.
    • DS1307_Set_Hour: Establece la hora en el DS1307, asegurando compatibilidad con el modo horario actual (12h/24h).
    • DS1307_Set_Minutes: Establece los minutos en el DS1307.
    • DS1307_Set_Seconds: Establece los segundos en el DS1307.
    • DS1307_Set_DayOfWeek: Establece el día de la semana en el DS1307.
    • DS1307_Get_DayOfWeek: Lee el día de la semana del DS1307.
    • DS1307_SquareWave: Activa la salida de onda cuadrada del DS1307 y configura su frecuencia.
    • DS1307_Write_RAM: Escribe un byte en la memoria RAM volátil del DS1307.
    • DS1307_Read_RAM: Lee un byte de la memoria RAM del DS1307.

💾 Librería EEPROM AT24C32 para PIC18 Basic (I2C)
Esta librería proporciona funciones esenciales para la comunicación con la memoria EEPROM AT24C32 mediante el protocolo I2C. Incluye métodos para leer, escribir y gestionar la memoria, soportando operaciones a nivel de byte y de página.
    • EEPROM_WriteByte: Escribe un byte de datos en una dirección de memoria de 16 bits especificada.
    • EEPROM_ReadByte: Lee un byte de datos desde una dirección de memoria de 16 bits especificada.
    • EEPROM_WritePage: Escribe hasta 32 bytes (una página) comenzando desde una dirección de memoria especificada.
    • EEPROM_ReadSequential: Lee múltiples bytes de forma secuencial desde una dirección de memoria especificada.

📂 Archivos incluidos:
Test RTC DS1307.bas: código de test (rutina principal).
Test AT24C32 I2C.bas: código de test (rutina principal).
_Pic18F46K22Lib.bas: librería para facilitar la configuración Pic18F46K22.
_I2CLib.bas: librería para facilitar el uso del módulo I2C.
_DS1307Lib.bas: librería especifica para el control del DS1307.
_AT24C32Lib.bas: librería especifica para el control de I2CProm AT24C32.

Los resultados se muestran por UART.
78
Lenguaje Basic para microcontroladores PIC / Programacion
« Último mensaje por perla en 21 de Marzo de 2026, 08:29:05 »
Hola a todos. Queria decir que estoy muy agradecido a toda la comunidad por buestros esfuerzos y ayudas prestadas en el pasado.
El nuevo tema es aconsecuencias de vuestros recomendanciones de iniciarme y pasar a C, muy, por fin consegui tiempo y me puse y mi conclunión es desactrosa y buena, explico lo ultimo que intente fue con MPLAB en su version gratuita con su ultima version y demas, casi termino en siquiatria, los problemas y demás conflictos venian solos por lo que me di cuenta que yo no estaba a la altura ya que está claro que si otros lo consiguen el problema es mio.
Pase a CCS C compliler en su version de prueba de 45 días y apollado por el curso de Sergio A. Castaño Giraldo de, EXCELENTE todo muy bien explicado y detallado y el programa de CCS muy bueno, paracedido de manejar al microcode Studio.
Mi conclusion que trabajar en C si esta muy bien y tienes un amplio abanico para el manejo de dispositivos modernos cosa que no sucede de igual forma con el que to trabajo microcode Studio, por lo que de momento me quedo donde estoy y más adelante me bajare la version de pago de CCS C compiler que me parece muy interesante.
79
Ares / Pasar Proteus 9 de inglés a español
« Último mensaje por Fer_TACA en 19 de Marzo de 2026, 07:54:23 »
Hola,
¿Alguien sabe y puede decirme cómo puedo pasar proteus 9 del idioma inglés a español?

Aprovechando, las librerías personalizadas, con 3D, se pueden usar los de la versión 8 en la versión 9?

Loa misma pregunta para las plantillas personalizadas.

C.
80
Hace tiempo que no programo en CCS, pero si sigues teniendo problemas puedes añadir la siguiente línea y ver que pasa:
setup_oscillator(osc_8mhz | OSC_PLL_ON);
Páginas: 1 2 3 4 5 6 7 [8] 9 10
anything