Salidas de Conmutación Rápida
A diferencia de las Salidas Digitales, el siguiente ejemplo mejora la conmutación logrando una velocidad superior. Algunos cambios en el código, como las definiciones de los pines, son necesarios:
// P33
#define LED_BUILTIN_PORT 3
#define LED_BUILTIN_PIN 3
Este código para el CH552 se enfoca en la implementación de la conmutación rápida de un LED en el pin P3.3.
Diagrama de Conexión
Código
Ejemplo:
Puedes acceder al código de ejemplo, siguiendo la ruta:
Archivo -> Ejemplos -> Unit_SketchLab -> BlinkFastFuntion
// La función de configuración se ejecuta una vez al presionar el botón de reinicio o encender la placa
void setup() {
// Inicializar el pin digital LED_BUILTIN como salida.
pinModeFast(LED_BUILTIN_PORT, LED_BUILTIN_PIN, OUTPUT);
}
// La función de loop se ejecuta una y otra vez infinitamente
void loop() {
digitalWriteFast(LED_BUILTIN_PORT, LED_BUILTIN_PIN, HIGH); // Encender el LED (HIGH es el nivel de voltaje)
delay(1000); // Esperar un segundo
digitalWriteFast(LED_BUILTIN_PORT, LED_BUILTIN_PIN, LOW); // Apagar el LED al hacer que el voltaje sea LOW
delay(1000); // Esperar un segundo
}
Compilar y correr un programa
Para poder cargar el archivo, configura el entorno con las siguientes especificaciones:
Reloj: 16 Mhz.
Método de carga: USB.
Ajuste de carga a: "Default CDC".
Carga un programa ingresando al modo de BOOT (cargador de arranque). Desconecte el cable USB, presione el botón BOOT en la tarjeta de desarrollo y luego vuelve a conectar a la PC.
Resultados
Explicación
Se definen el puerto
(LED_BUILTIN_PORT)
y el pin(LED_BUILTIN_PIN)
del LED integrado en la placa.En la función
setup()
, se configura el pin del LED como salida utilizandopinModeFast()
.En la función
loop()
, se utilizadigitalWriteFast()
para alternar rápidamente entre encender y apagar el LED con intervalos de 1 segundo usandodelay(1000)
.
Notas Adicionales:
La frecuencia de conmutación está determinada por el tiempo de espera (delay
). Puedes ajustar el tiempo de espera según tus necesidades.
Este código es un ejemplo básico de cómo lograr una conmutación rápida en un pin digital en el CH552 utilizando las funciones de manipulación de pines rápidas disponibles.
#define LED_BUILTIN_PORT 3
#define LED_BUILTIN_PIN 3
// La función de configuración se ejecuta una vez al presionar el botón de reinicio o encender la placa
void setup() {
// Inicializar el pin digital LED_BUILTIN como salida.
pinModeFast(LED_BUILTIN_PORT, LED_BUILTIN_PIN, OUTPUT);
}
// La función de loop se ejecuta una y otra vez infinitamente
void loop() {
digitalWriteFast(LED_BUILTIN_PORT, LED_BUILTIN_PIN, HIGH); // encender el LED (HIGH es el nivel de voltaje)
// delay(1000); // esperar un segundo
digitalWriteFast(LED_BUILTIN_PORT, LED_BUILTIN_PIN, LOW); // apagar el LED al hacer que el voltaje sea LOW
// delay(1000); // esperar un segundo
}
Visualización con Osciloscopio
Similar a la práctica anterior, se ilustra la conexión de la salida del pin 3.3
al osciloscopio.
Sin embargo, al considerar que se trabaja con una frecuencia de mayor velocidad, alcanza aproximadamente los 400 kHz.
Como se puede apreciar en esta imagen:
⌨️ con ❤️ por UNIT-Electronics 😊