Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
En este instructivo, te explicaré cómo
- controlar un motor de CC con PWM
- comunicarse a través de UART
- manejar las interrupciones del temporizador
En primer lugar, usaremos una placa de desarrollo del sistema AVR Core que puede encontrar en Aliexpress alrededor de 4 USD. El enlace de la placa de desarrollo está aquí. También usaremos Atmel ICE Debugger y Atmel Studio para programar y depurar nuestro software.
Paso 1: Profundización en la hoja de datos y el código fuente - Velocidad del reloj
En 1. la bala definimos nuestra frecuencia de cristal donde podemos ver en la placa de desarrollo
Paso 2: Configuración de registros UART
Para comunicarse con UART, debe configurar los registros de velocidad en baudios de USART: UBRRnL y UBRRnH correctamente, puede calcularlo usted mismo o puede usar la calculadora en línea para obtener los valores correctos fácilmente
Calculadora online
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
Entonces se calcula el valor MYUBBR, en el registro UCSR0B habilitamos RXEN0 (habilitación de recv) TXEN0 (habilitación de transmisión) y RXCIE0 (RX para interrupción). En el registro UCSR0C seleccionamos tamaño de caracteres de 8 bits.
Después de configurar el bit de interrupción RX, debemos agregar la función ISR para USART0_RX_vect
ISR (USART0_RX_vect) {char rcvChar = UDR0; if (rcvChar! = '\ n') {buffer [bufferIndex] = rcvChar; bufferIndex ++; }}
No debe hacer ninguna lógica comercial en su rutina de servicio de interrupciones. Tienes que hacer que la función regrese lo antes posible.
Paso 3: Configuración de PWM
En la función initPWM configuramos nuestro escalador de reloj de CPU, modo Timer / Counter como Fast PWM y configuramos su comportamiento con bits COM
También debemos conectar el motor de CC al pin OC2 que se especifica en la Tabla 66. Compare el modo de salida, el modo PWM rápido en nuestra hoja de datos, también verá que el pin OC2 es (OC2 / OC1C) PB7
Paso 4: Resultado
Cuando carga el código fuente en el archivo adjunto.
Puede ingresar un nuevo valor PWM (0-255) desde UART (puede usar el terminal de puerto serie arduino) para configurar la velocidad del motor de CC.