He diseñado un circuito de microcontrolador para activar un motor de CC que utiliza señales de un chip ATmega234P a través de un puente H L239DNE. El problema que tengo es que el motor funciona más lento de lo normal mientras ejecuta el código PWM. Tan pronto como conecto un programador MKII al ISP, el motor funciona correctamente. Adjunto están mis esquemas de circuito y el código que estoy ejecutando. Cualquier ayuda sería muy apreciada!
Código ( source ):
/*
* DCM_PWM.c
*
* Created: 14/09/2018 6:31:42 PM
* Author : s4354441
*/
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
void setup_timer0 (void)
{
DDRB = (1<<DDB3) | (1<<DDB4); // set the PWM pin to output.
TCCR0A = (1<<COM0A1) | (1<<COM0A0) | (1<<COM0B1) | (1<<COM0B0) | (0<WGM01) | (1<<WGM00); // toggle OC0A on compare match
TCCR0B = (0<<WGM02) | (0<<CS02)| (0<<CS01) | (1<<CS00); //select PWM, Phase Correct
OCR0A = 0; // set output compare value
OCR0B = 0; // set output compare value
}
void PWM_func (void)
{
for (int i=0; i<255; i++) {
OCR0A = i;
_delay_ms(25);
}
for (int i=255; i>0; i--) {
OCR0A = i;
_delay_ms(10);
}
for (int i=0; i<255; i++) {
OCR0B = i;
_delay_ms(5);
}
for (int i=255; i>0; i--) {
OCR0B = i;
_delay_ms(25);
}
for (int i=0; i<255; i++) {
OCR0A = i;
_delay_ms(10);
}
}
int main (void)
{
setup_timer0();
PWM_func();
}