¿Cómo cambio la frecuencia PWM en un Arduino Uno?

2

Actualmente estoy tratando de cambiar la frecuencia PWM del estándar de 490 Hz a otra cosa, literalmente a otra cosa.

Anteriormente usé una biblioteca timer1 disponible en Arduino, pero me molestó y comenzó a configurar las cosas manualmente.

#include "test.h"

test::test()
{
  pinMode(10,OUTPUT);
  //Timer1 setup1 Interrup at 1hz
  cli(); // Stop interrupts
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1 = 0;
  OCR1A = 15624; // Compare register value = cpu_fre/(interrupt_freq*prescaler)-1 (must be <65536)
  TCCR1B |= (1 << WGM12);
  TCCR1B |= (1 << CS12)| (1 << CS11) | (1 << CS10); 
  TIMSK1 |= (1 << OCIE1A);

  sei(); //allow interrupts
}

ISR(TIMER1_COMPA_vect)
{
 digitalWrite(10,!digitalRead(10));
}

aquí está el principal

#include "test.h"

test test1;

void setup() 
{
Serial.begin(230400);   
  // put your setup code here, to run once:
}

void loop() 
{

}

Esto debería crear una interrupción cada 1 Hz cambiando el estado del pin. pero en su lugar crea una señal PWM de 490 Hz ...

Cambiar el prescaler u OCR1A solo cambia el ciclo de trabajo de la señal, y no la frecuencia en sí misma.

¿Qué estoy haciendo mal aquí?

    
pregunta Carlton Banks

0 respuestas

Lea otras preguntas en las etiquetas