Autor Tema: PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)  (Leído 859414 veces)

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

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE (Índice en página 1)
« Respuesta #810 en: 13 de Marzo de 2024, 06:38:01 »
Hola amigos, hace tiempo que deje el hilo no por falta de visitas sino por falta de participación.
De todas maneras esto es un llamamiento para aquellos que siguen usando este lenguaje, que viene integrado con un IDE que tiene simulador propio tanto de Basic como de Assembler. Ya lo utilicen como hobby, como nostalgia de otros tiempo o por que simple mente le gusta el lenguaje Basic, o no lo utilizan pero les gusta participar porque alguna vez lo usaron. Si lo gramos reunir un reducido grupo de personas que quieran compartir sus experimentos, tanto pasados como futuros, podemos plantearnos continuarlo. El lenguaje ha tenido importantes mejoras que le permiten trabajar casi en cualquier proyecto deseado. El mero hecho de ampliar sus librerías el hilo ya tendría diversión y debate por años. Si alguien esta interesado, y para no contaminar el hilo puede enviarme un mensaje por la mensajería privada del foro.

Independientemente de lo expuesto hace algún tiempo que estoy continuando con el tema por aquí:
https://www.electro-tech-online.com/forums/oshonsoft/ , en Ingles.
« Última modificación: 12 de Junio de 2024, 07:27:36 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #811 en: 06 de Agosto de 2025, 15:38:46 »
🔍 Scan I2C con PIC18

Versión probada con: PIC18F46K22 @ 64 MHz (tarjeta HL-K18)
Entorno: Pic18 Simulator IDE v5.90

¿Tienes varios dispositivos I2C conectados y no estás seguro de sus direcciones?. Esta pequeña herramienta puede ayudarte.

📁 Librería destacada: I2C_Scan.bas
📌 Plataforma: PIC18 (I2C y Uart por hardware) + compilador Oshonsoft Basic.
Se utiliza Pic con módulo I2C y módulo uart interno, pero de ser necesario se puede reescribir el código para usar librerias por sofware incorporadas en el compilador.

Esta librería escanea automáticamente el bus I2C desde la dirección 0x03 hasta 0x77, detectando dispositivos que respondan con ACK. Los resultados se muestran por UART (por defecto UART1), indicando las direcciones encontradas y el número total de dispositivos conectados.

🔧 Requiere:

Librería I2CLib.bas (con funciones I2C).

Puerto serie inicializado para salida de datos.

⚙️ Cómo funciona:

I2C_Ping: comprueba si un dispositivo responde a una dirección I2C.

I2C_Scan: recorre todas las direcciones válidas, detecta los dispositivos y muestra los resultados.

🛠️ Ideal para:
Diagnóstico rápido de conexiones I2C, identificación de sensores, memorias EEPROM y otros periféricos.

📂 Archivos incluidos:
Test Scan I2C.bas, I2C_Scan.bas, I2CLib.bas

Ejemplo de resultado para la conocida tarjeta EB_E2Prom ya descrita hace tiempo, que esta compuesta
por un termómetro DS1624 (dirección 0x49) y una E2Prom ATMEL 24C04N (direcciones 0x50 página1 y 0x51 página 2):

Ready
EB_E2Prom PCB:
I2C device on: 0x0049
I2C device on: 0x0050
I2C device on: 0x0051
Total devices: 3
End scan
« Última modificación: 04 de Febrero de 2026, 17:23:12 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #812 en: 07 de Agosto de 2025, 14:21:21 »
🔧 DS1624 (I2C) – Termómetro Digital y EEPROM con PIC18 (Oshonsoft)

Versión probada con: PIC18F46K22 @ 64 MHz (tarjeta HL-K18)
Entorno: Pic18 Simulator IDE v5.90

El DS1624 es un circuito integrado que combina dos funciones clave en un solo dispositivo:

🧊 1. Medición de temperatura digital
Mide la temperatura con una resolución de 0,03125 °C.

El valor se entrega en formato de 2 bytes (MSB y LSB).

Soporta dos modos de funcionamiento:

Conversión continua (modo automático)

Modo one-shot (ideal para aplicaciones de bajo consumo)

💾 2. Memoria EEPROM integrada
Incorpora 256 bytes de EEPROM no volátil, útil para guardar datos del usuario como configuraciones, parámetros de calibración o registros.

Su contenido se conserva incluso sin alimentación.

El DS1624 se comunica mediante una interfaz I²C de 2 hilos, lo que permite su integración sencilla con microcontroladores. Cada dispositivo se puede direccionar de forma única mediante pines configurables.

📚 Librería DS1624 para PIC18 (Oshonsoft BASIC)
Esta librería escrita en PIC18 Basic (Oshonsoft) permite manejar el DS1624 a través del bus I²C. Requiere incluir el archivo I2CLib.bas para las operaciones I²C básicas.

📌 Funciones disponibles:
DS1624_Config_Temp(mode As Bit) As Byte
Configura el modo de conversión de temperatura:

mode = 0 → Conversión continua (lecturas periódicas automáticas)

mode = 1 → Modo one-shot (requiere comando para cada conversión)

DS1624_Init_Temp() As Byte
Inicia una conversión de temperatura. Solo necesario si se usa en modo one-shot. Envía el comando Start Convert T (0xEE).

DS1624_Rd_Temp() As Single
Lee y devuelve la temperatura actual en grados Celsius (con precisión de punto flotante):

MSB: parte entera

LSB: fracción (5 bits más significativos)

Fórmula:
Temperatura = MSB + 0.03125 × (LSB >> 3)

DS1624_Wr_E2PROM(address As Byte, value As Byte) As Byte
Escribe un byte en la dirección EEPROM especificada (0 a 255) usando el comando Write EEPROM (0x17). La función espera 5 ms para completar el ciclo de escritura.

DS1624_Rd_E2PROM(address As Byte) As Byte
Lee un byte desde la EEPROM en la dirección indicada usando el comando Read EEPROM (0x17).

Salida del valor de temperatura medido mediante módulo uart (RS232) del pic.

📂 Archivos incluidos:
Test_DS1624.bas
DS1624_Lib.bas
I2CLib.bas
I2C_Scan.bas
« Última modificación: 04 de Febrero de 2026, 17:27:06 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #813 en: 07 de Agosto de 2025, 15:19:42 »
🖥️ Control de LCD1602/2004 vía I2C con PCF8574 y PIC18 (Oshonsoft BASIC)

Librería para trabajar con display tipo control paralelo LCD1602/2004 mediante I2C, usando el chip expansor I/O "PCF8574".
LCDs alfanuméricos basados en el controlador HD44780.


Versión probada con: PIC18F46K22 @ 64 MHz (tarjeta HL-K18)
Entorno: Pic18 Simulator IDE v5.90

Me pareció interesante la posibilidad de controlar el clásico display LCD 1602/2004 de interfaz paralela (dos o cuatro líneas de 16 o 20 caracteres) utilizando únicamente dos hilos mediante el bus I2C. Existen kits que integran este LCD con una placa adaptadora basada en el chip PCF8574, que es un expansor de E/S de 8 bits que puede configurarse como entradas o salidas y que se comunica a través del protocolo I2C.

Conectando el PCF8574 al microcontrolador a través de las líneas SDA y SCL, junto con los dos hilos de alimentación es posible manejar completamente el LCD. Para ello, desarrollé una librería que controla el LCD en modo de 4 bits y 2 bits de control, integrada con una librería anterior que escribí para el PCF8574, resultando en una solución completa para el manejo del LCD1602/2004 por I2C.

🔹 Requisitos:
El microcontrolador debe contar con un módulo I2C y usar la librería I2CLib previamente desarrollada.

🔹 Funciones principales (`Lcd1602_I2CLib.bas`):

 `LCD_Init()`
  Inicializa el LCD en modo 4 bits, sin cursor, caracteres 5x8.

 `LCD_DefChar(...)`
  Permite definir un carácter personalizado en la CGRAM del LCD.

 `LCD_PosXY(x, y)`
  Posiciona el cursor en las coordenadas especificadas.

 `LCD_PutC(char)`
  Muestra un carácter ASCII en la posición actual.

 `LCD_CursorBlink(sBit)`
  Activa o desactiva el parpadeo del cursor.

 `LCD_Cursor(sBit)`
  Muestra u oculta el cursor.

 `LCD_BackLight(sBit)`
  Enciende o apaga la retroiluminación del LCD.

 `LCD_Out(line, pos, texto)`
  Imprime una cadena de hasta 20 caracteres en una posición determinada.

 `LCD_Line1Home()`, `LCD_Line2Home()`, `LCD_Line3Home()`, `LCD_Line4Home()`
  Mueven el cursor al inicio de la línea 1, 2, 3 o línea 4.

 `LCD_Line1Pos(x)`, `LCD_Line2Pos(x)`, LCD_Line3Pos(x)`, `LCD_Line4Pos(x) `
  Posicionan el cursor en una columna específica de la línea 1, 2, 3 o 4.

 `LCD_Line1Clear()`, `LCD_Line2Clear()`, `LCD_Line3Clear()`, `LCD_Line4Clear()`
  Borran completamente la línea 1, 2, 3 o línea 4.

 `LCD_Clear()`
  Borra todo el contenido del LCD y reinicia el cursor.

🔹 Ampliación de la librería con funciones especiales para representar números grandes:
Amplié la funcionalidad de la librería para controlar pantallas LCD1602 o 2004 vía I2C (PCF8574) con la capacidad de mostrar números grandes en pantalla. Se adjunta la librería modificada y los archivos necesarios junto con una captura del LCD.

`LCD_OutBigNum(2, 5, #Temp + "ºC   ")`
 Se indica la línea y posición, la función solo afecta a los números, es decir, solo agranda los números.
 

📂 Archivos:
`Test_LCD1602.bas`, `I2CLib.bas`, `Lcd1602_I2CLib.bas`

Nota: a partir de la versión v5.83 del IDE se añadió de forma nativa el uso del PCF8574 por software para el control de LCD1604/2004, por lo que usando las funciones nativas se puede controlar y simular el dispositivo, dejare un ejemplo más adelante.
« Última modificación: 17 de Mayo de 2026, 06:01:50 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #814 en: 07 de Agosto de 2025, 15:45:55 »
El que quiera usar las librerías nativas para controlar el LCD1602/2004 por software I2C, dejo un ejemplo para realizar pruebas con el simulador integrado en el IDE.
LCDs alfanuméricos basados en el controlador HD44780.

Adjunto archivos de test y resultados:

« Última modificación: 17 de Mayo de 2026, 06:08:08 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #815 en: 13 de Agosto de 2025, 09:51:27 »
📟 Librerías TM1637 para Oshonsoft PIC Basic Compiler

Librería para trabajar con módulos basados en el circuito integrado TM1637 – Librería y pruebas

Versión probada con: PIC18F46K22 @ 64 MHz (tarjeta HL-K18)
Entorno: Pic18 Simulator IDE v5.91

Adjunto la librería para trabajar con módulos basados en el TM1637 (similar a I2C pero el TM1637 no cumple el estandar I2C).

Durante el desarrollo surgieron varios problemas:

Velocidad variable según el módulo.
No todas las PCB basadas en TM1637 que se pueden obtener ya montadas para puebas trabajan a la misma velocidad.

La línea DIO tiene que ser configurada como colector abierto.

Bucle infinito en I2CAsk (se añade un contador para terminación del bucle en caso de no haber respuesta del módulo).

Tras tener en cuentas los puntos anteriores la librería funciona correctamente.

También clasifiqué los módulos en dos tipos según la velocidad de respuesta:

Rápidos:

DIO → retardo de 1 µs

CLK → retardo de 1 µs

Lentos:

DIO → retardo de 30 µs

CLK → retardo de 1 µs

---
🔹 Resumiendo:

🔹 Utilidad de la librería
Esta librería permite controlar módulos basados en el chip TM1637, tanto en su versión de 4 dígitos como en la de 6 dígitos con teclado incorporado.

Soporta:
* Encendido/apagado del display.
* Ajuste de brillo.
* Escritura de caracteres númericos y Hex. individuales o cadenas completas de los mismos.
* Lectura del teclado si el módulo dispone de el.

Incluye:
* Funciones para trabajar con números, caracteres hex. y cadenas formateadas.

---

🔹 Principales funciones de la librería

Inicialización y configuración:

* TM1637_Init() → Inicializa el display y establece brillo máximo.
* TM1637_Bright(bright) → Ajusta el brillo (0x00 a 0x07).

Escritura de datos:

* TM1637_WriteChar(dato, posición) → Escribe un patrón de segmentos en un dígito concreto.
* TM1637_Write4Char(d0,d1,d2,d3) → Escribe 4 caracteres consecutivos (módulos de 4 dígitos).
* TM1637_WriteNumber(numero) → Muestra un número largo en módulos de 6 dígitos.
* TM1637_WriteString(cadena) → Muestra una cadena formateada (números, letras Hex., puntos y dos puntos).

Lectura del teclado:

* TM1637_ScanKey() → Devuelve el estado de las teclas en un byte (cada bit representa una tecla).

Funciones auxiliares:

* TM1637_Digit(indice) → Devuelve el patrón de segmentos para un dígito o símbolo predefinido.
* TM1637_GetCharIndex(caracter) → Convierte un carácter ASCII a su índice de patrón.

Selecciona el número de digitos del módulo:

* Const TM1637_DIGIT_NUMBER = 6 → Número de dígitos del display (establecido en 4 o 6 dependiendo de su hardware).

---

🔹 Notas importantes

* La línea DIO debe configurarse como open-drain: salida a nivel bajo para ‘0’ y entrada (alta-impedancia) para ‘1’.
* No todas las PCBs para pruebas basadas en TM1637 trabajan a la misma velocidad, por lo que es posible ajustar TM1637_DELAY1 y TM1637_DELAY2 según el módulo.
* Se recuerda que para evitar problemas de read-modify-write en PIC18, se usan registros LATx para escritura y PORTx para lectura.
---


📂 Archivos:

« Última modificación: 04 de Febrero de 2026, 17:35:22 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #816 en: 14 de Agosto de 2025, 09:20:42 »
📟 Librería TM1638 para PIC18 (Oshonsoft PIC Basic)


Librería para trabajar con módulos badados en TM1638 – Librería y pruebas.

Versión probada con: PIC18F46K22 @ 64 MHz (tarjeta HL-K18)
Entorno: Pic18 Simulator IDE v5.91

🔹 Introducción
El TM1638 es un controlador para módulos que combinan display de 7 segmentos, teclas y LEDs en una misma placa. Es una evolución respecto al TM1637, ya que:

Ofrece un número mayor de dígitos, control sobre led independientes y lectura de teclas que pueden leerse de forma individual o simultáneamente.

Permite control total de cada elemento (segmento, LED, tecla) desde el microcontrolador.

Utiliza también solo 3 líneas de conexión, pero con un protocolo propio sencillo (no I²C ni SPI).

Esto lo convierte en una opción más versátil para proyectos que requieren tanto visualización como entrada de usuario y señalización luminosa en una sola tarjeta.

🔹 Descripción de la librería
Tras la experiencia con la librería del TM1637 (módulos de 4 y 6 dígitos con teclado), he desarrollado la librería TM1638Lib para controlar módulos basados en TM1638, usando Oshonsoft PIC Basic Compiler.
El módulo probado es de tipo LED&KEY con 8 dígitos, 8 LEDs y 8 teclas, todos controlables individualmente.

La comunicación requiere solo 3 señales: CLK, DIO y STB (latch), y el protocolo es muy simple.

🔹 Actualización:
Posteriormente la librería ha sido ampliada para ser compatible también con el módulo QYF-TM1638 (8 dígitos y 16 teclas).

🔹 Funciones principales

Inicialización y configuración:

SmgDisplayTM1638() → Inicializa el display (LED&KEY modo por defecto).

Set_QYF_TM1638() → Habilita el modo QYF.

Set_LEDKEY_TM1638() → Habilita el modo LED&KEY.

BrightTM1638(level) → Selecciona los niveles de brillo (0–7).

🔹 Salida de datos:

writeRawDigitTM1638(pattern, digit) → Escribe un patrón de segmentos en un dígito.

writeRawLedTM1638(state, led) → Selecciona el estado del LED ON o OFF.

displayValuesTM1638(seg0..seg7) → Envía 8 patrones de segmentos a la vez.

DisplayStringTM1638(text) → Mostrar texto (A ... F, signo negativo y punto) o números con formato.

Input (Keys):

ScanKeyTM1638() → Lee el estado de las teclas.

📂 Archivos incluidos

Test LED&KEY TM1638.bas

Test QFY TM1638.bas

TM1638Lib.bas

🔹 Ejemplo en vídeo
« Última modificación: 04 de Febrero de 2026, 17:41:21 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #817 en: 14 de Agosto de 2025, 11:01:25 »
📟 Librería TM1651 para PIC18 (Oshonsoft PIC Basic)

Indicador de nivel de batería con TM1651 – Librería y pruebas

Versión probada con: PIC18F46K22 @ 64 MHz (tarjeta HL-K18)
Entorno: Pic18 Simulator IDE v5.91

Hola,

He estado buscando placas que integren el circuito TM1651 para realizar prácticas, pero el único producto ya terminado que he encontrado es un indicador de nivel de batería por LEDs que utiliza este integrado.

El TM1651 permite controlar un display de 4 dígitos de 7 segmentos y leer hasta 6 teclas. La escritura de la librería para este chip ha sido especialmente sencilla, ya que es muy similar al TM1637. Por este motivo, adapté la librería que previamente había desarrollado para el TM1637 para que funcione con el TM1651.

En esta adaptación eliminé todas las funciones relacionadas con el control de dígitos y la lectura de teclas, y implementé funciones específicas para manejar los LEDs incluidos en la PCB del indicador de batería.

Comparto aquí todos los archivos necesarios para experimentar con este módulo basado en TM1651.

Funciones incluidas:

  • TM1651_Init()
    Inicializa el módulo, enciende todos los segmentos y ajusta el brillo al máximo.

  • TM1651_OutSeg(Seg As Byte, sBit As Bit)
    Enciende o apaga un segmento específico del indicador (número de segmento 0–3, estado 0=Apagado / 1=Encendido).

  • TM1651_Clear()
    Apaga todos los segmentos del indicador.

  • TM1651_Full()
    Enciende todos los segmentos del indicador.

  • TM1651_Bright(Bright As Byte)
    Ajusta el brillo de los LEDs en un rango de 0 (mínimo) a 7 (máximo).
Características destacadas:

Comunicación mediante dos líneas (CLK y DIO) usando protocolo propio.

Control rápido y sencillo de segmentos individuales o de todo el display.

Posibilidad de ajuste de brillo en varios niveles.

📂 Archivos incluidos:
Test TM1651.bas
TM1651Lib.bas
« Última modificación: 04 de Febrero de 2026, 17:51:46 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #818 en: 15 de Agosto de 2025, 08:00:28 »
📟 Librería MAX7219 para PIC18 (Oshonsoft PIC Basic)

MAX7219: 8-Digit Display via Soft & Hard SPI (Oshonsoft)

Versión probada con: PIC18F46K22 @ 64 MHz (tarjeta HL-K18)
Entorno: Pic18 Simulator IDE v5.91

🔹 Introducción:

El MAX7219 es un circuito integrado controlador de pantallas LED diseñado por Maxim Integrated.
Permite manejar hasta 8 dígitos de 7 segmentos (o 64 LEDs individuales) utilizando solo tres líneas de comunicación serie: DIN (datos), CLK (reloj) y CS/LOAD (selección).
Su protocolo de transmisión es sincrónico, muy similar al SPI (Serial Peripheral Interface), aunque con un formato y secuencia propios.
Max7219 no es exactamente SPI, para utilizar exactamente el modo SPI existe el Max7221.

El chip se encarga internamente del multiplexado, del control de corriente de los LEDs y de la gestión de brillo (con 16 niveles), lo que reduce de forma significativa la carga de trabajo del microcontrolador y simplifica el diseño del hardware.

La librería presentada está desarrollada en PIC18 Basic (Oshonsoft) y facilita el uso del MAX7219, proporcionando funciones para inicializar el chip, enviar datos, limpiar la pantalla, ajustar la intensidad de brillo y mostrar cadenas de texto de forma sencilla.

---

🔹 Funciones disponibles

* MAX7219_Init()
  Configura los pines de comunicación, inicializa el MAX7219 y lo deja listo para el funcionamiento básico.

* MAX7219_Send(reg As Byte, data As Byte)
  Envía datos a un registro específico del MAX7219.

* MAX7219_Clear()
  Apaga todos los segmentos de los 8 dígitos conectados.

* MAX7219_Full
  Enciende todos los segmentos de los 8 dígitos conectados.

* MAX7219_SetIntensity(intensity As Byte)
  Ajusta el brillo de la pantalla con un valor entre 0 (mínimo) y 15 (máximo).

* MAX7219_DisplayString(_string[16] As String)
  Muestra en pantalla una cadena de texto formateada, gestionando caracteres Hex. y puntos decimales.

* MAX7219_Digits(index As Byte) As Byte
  Devuelve la máscara de bits correspondiente al carácter solicitado.

* MAX7219_GetSegmentIndex(char As Byte) As Byte
  Devuelve el índice de segmento para un carácter (números, letras Hex., espacios o símbolos).

---

📂 Archivos para pruebas con SPI por software:

* Test Max7219 Display.bas
* MAX7219_DisplayLib.bas

---

📂 Archivos para pruebas con SPI por hardware:

* Test Max7219 Display SPI.bas
* MAX7219_SPI_DisplayLib.bas
* SPI_Lib.bas`

---
« Última modificación: 13 de Diciembre de 2025, 20:41:22 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #819 en: 15 de Agosto de 2025, 08:04:15 »
Adjunto una imagen del módulo display de 8 digitos controlado mediante Max7219, que se puede conseguir facilmente ya terminado para pruebas y su conexión al Pic.
« Última modificación: 23 de Agosto de 2025, 08:41:09 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #820 en: 15 de Agosto de 2025, 16:05:13 »
📟 Librería MAX7219 para PIC18 (Oshonsoft PIC Basic)

MAX7219: matrices 8x8 LED (Pic18 Basic compiler).

Dejo aquí una nueva práctica utilizando bloques de LED 8x8 (matrices) controlados con el chip MAX7219.

Módulos en cascada: cuando hacemos referencia a varios controladores MAX7219 conectados en serie para manejar múltiples matrices de LEDs o displays de 7 segmentos.

La idea es:

Cada MAX7219 se encarga de un bloque (por ejemplo, una matriz 8×8 o un display de 8 dígitos).

Se pueden encadenar conectando la salida de datos (DOUT) de un módulo a la entrada de datos (DIN) del siguiente.

El reloj (CLK) y la señal de carga (CS/LOAD) se comparten entre todos los módulos.

Esto permite formar una cadena o cascada de módulos, donde se envían los datos de forma secuencial y cada MAX7219 “toma” los suyos.

La librería incluye las funciones básicas de configuración y las necesarias para que cada usuario pueda desarrollar las suyas propias. Además, ya incorpora las funciones típicas para realizar desplazamiento lateral del texto, tanto a izquierda como a derecha, con el fin de facilitar las pruebas de funcionamiento y servir de base para otros proyectos.

Esta versión es una actualización de otra más antigua. El cambio principal es la incorporación de un FrameBuffer mejorado (anteriormente llamado VideoRam), que ahora permite encadenar varios módulos para ampliar el número de celdas 8x8 controladas de forma sencilla.

La librería utiliza el módulo SPI del PIC y, por defecto, está configurada para gestionar un bloque de 4 matrices. Para adaptarla a un número distinto de matrices, basta con editar la cabecera del archivo Max7219SPI_Lib.bas y modificar tanto la constante que define la cantidad de matrices como la longitud del FrameBuffer.

Calculada como:

Número de matrices × 8


🔹 Ejemplos de configuración:

Bloque de 4 matrices:

Const MAX7219_MATRIX_COUNT = 4  ' Número de matrices encadenadas (>=1)
Dim FrameBuffer(32) As Byte             ' 8 filas × 4 matrices


Bloque de 8 matrices:

Const MAX7219_MATRIX_COUNT = 8  ' Número de matrices encadenadas (>=1)
Dim FrameBuffer(64) As Byte             ' 8 filas × 8 matrices

🔹 Funciones principales incluidas:

MAX7219_Init() → Inicializa el MAX7219 y el framebuffer.

MAX7219_ClearMatrix() → Apaga todos los LEDs de las matrices.

MAX7219_Bright(Brillo) → Ajusta el brillo de 0 a 15.

LeftShift(P_FrameBuffer, texto) → Desplazamiento del texto de izquierda a derecha.

RightShift(P_FrameBuffer, texto) → Desplazamiento del texto de derecha a izquierda.

📌 Recordatorio sobre el MAX7219 y la comunicación SPI-like

Este chip ya fue comentado en un hilo anterior usando displays de 7 segmentos.
El MAX7219 puede controlar hasta 8 dígitos de 7 segmentos o una matriz 8×8 usando únicamente tres líneas: DIN (datos), CLK (reloj) y LOAD/CS (latch).
Aunque se programa de forma muy similar a SPI modo 0 (CKP=0, CKE=1), el MAX7219 no es estrictamente compatible con el estándar SPI, pero funciona perfectamente con el módulo SPI del PIC o con SPI por software.
El envío se hace en ráfagas de 16 bits (registro + dato), y en cadenas, el primer par enviado llega al módulo más alejado y el último par al más cercano al microcontrolador.


📂 Archivos de la práctica:

Test Matrix Max7219 SPI.bas → Programa de prueba.

Max7219SPI_Lib.bas → Librería principal para control del MAX7219.

SPI_Lib.bas → Librería de funciones SPI.

Nota: por pura curiosidad he encadenado 20 matrices y funciona perfecto.

Video del ejemplo:

« Última modificación: 08 de Febrero de 2026, 21:04:40 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #821 en: 01 de Marzo de 2026, 17:31:02 »
📟 Librería para el control de RTC basado en DS1302 (Oshonsoft PIC Basic Compiler)

RTC DS1302: reloj en tiempo real con calendario.

Librería desarrollada para trabajar con módulos basados en el circuito integrado DS1302.
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

🕒 RTC DS1302

El DS1302 es un circuito integrado que incorpora:

    • Un reloj en tiempo real (RTC) con calendario.
    • 31 bytes de memoria RAM interna de propósito general.
    • Circuito de respaldo de alimentación mediante batería.
En ausencia de alimentación principal si la batería de respaldo está conectada, el reloj permanece en funcionamiento y
la memoria RAM interna conserva los datos durante años.
En este ejemplo se utiliza un módulo comercial ampliamente disponible que integra todos los componentes necesarios
para realizar la práctica. El módulo incluye además un zócalo para alojar una batería de respaldo no recargable,
normalmente del tipo CR2032, encargada de mantener activo el RTC cuando se interrumpe la alimentación principal.
    • Trickle charger: deshabilitado por defecto.
Esta función se utiliza cuando, en lugar de emplear una batería no recargable como fuente de respaldo, se conecta
un supercondensador o una batería recargable.
El DS1302 incorpora un sistema de carga por goteo (trickle charge) que permite suministrar una pequeña corriente
de mantenimiento hacia el elemento de respaldo. Esta corriente puede configurarse mediante un registro específico de
control, donde se seleccionan distintas combinaciones de resistencia interna y diodo de protección.
De este modo, es posible adaptar la corriente de carga a las características del dispositivo de respaldo utilizado.

     ⚠ Advertencia importante:
No debe habilitarse el trickle charger cuando se utilice una pila de litio no recargable (por ejemplo, tipo CR2032),
ya que podría dañarse, provocar fugas o reducir significativamente su vida útil. Esta función solo debe activarse cuando
el elemento de respaldo sea recargable (batería recargable o supercondensador) adecuado para carga continua de baja corriente.


🔌 Interfaz de comunicación

El DS1302 utiliza una interfaz serie síncrona de 3 hilos:

    • CLK → Señal de reloj.
    • DATA (I/O) → Línea bidireccional de datos.
    • RST (CE) → Habilitación de comunicación.

Funcionamiento básico:

    • El pin DATA se emplea tanto para transmisión como para recepción.
    • En una operación de escritura, primero se envía un byte de dirección y a continuación el dato correspondiente.
    • En una operación de lectura, se envía la dirección del registro y posteriormente el dispositivo devuelve el dato.
    • Todas las transferencias están sincronizadas por la señal CLK.
    • El pin RST (CE) debe ponerse a nivel alto antes de iniciar la comunicación y mantenerse activo durante toda la transacción.

Las direcciones enviadas hacen referencia a los registros internos del DS1302, que incluyen:

    • Registros de segundos, minutos, horas.
    • Día semana, día mes, mes y año.
    • Registro de control.
    • Registros de RAM.

🔹 Librería

La librería implementada incluye todas las funciones necesarias para:

    • Inicializar el DS1302.
    • Leer y escribir fecha y hora.
    • Acceder a los registros de control.
    • Leer y escribir en la RAM interna.

Permite el control completo tanto del RTC como de la RAM interna, facilitando su integración en proyectos desarrollados con Oshonsoft PIC Basic.

Las funciones principales son las siguientes:

Init_DS1302() ' Inicializa el RTC.
Set_DS1302_24h() ' Configura el RTC en modo de 24 horas.
Set_DS1302_12h() ' Configura el RTC en modo de 12 horas.
Set_DS1302_AM_PM(bit) ' Establece el modo AM/PM.
Get_DS1302_AM_PM_24h() ' Obtiene el modo actual (AM, PM o 24 horas) del RTC.
RTC_Set_DateTime(day, mth, year, dow, hr, min) ' Escribe la fecha y la hora en el DS1302.
RTC_Get_Date(day, mth, year, dow) ' Lee la fecha actual.
RTC_Get_Time(hr, min, sec) ' Lee la hora actual.
RTC_Set_Hour(hr) ' Escribe la hora en el DS1302.
RTC_Set_Minutes(min) ' Escribe los minutos en el DS1302.
RTC_Set_Seconds(sec) ' Escribe los segundos en el DS1302.
RTC_Write_NVRam(address, data) ' Escribe un dato en la RAM no volátil de propósito general.
RTC_Read_NVRam(address) ' Lee un dato de la RAM no volátil de propósito general.

📂 Archivos incluidos:

• Test RTC DS1302.bas: código de test (rutina principal).
• _Pic18F46K22Lib.bas: librería para facilitar la configuración Pic18F46K22.
• _DS1302Lib.bas: librería especifica para el control del DS1302.

Los resultados se muestran por UART.
« Última modificación: 01 de Marzo de 2026, 18:16:10 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #822 en: 21 de Marzo de 2026, 12:34:39 »
📟 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.
« Última modificación: 21 de Marzo de 2026, 15:01:04 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #823 en: 21 de Marzo de 2026, 12:35:58 »
Librerías y diagrama de conexión:

« Última modificación: 21 de Marzo de 2026, 14:52:12 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)
« Respuesta #824 en: 08 de Abril de 2026, 20:44:55 »
🔧 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:


« Última modificación: 25 de Abril de 2026, 05:25:51 por dogflu66 »
Saludos desde Granada, España.


 

anything