/****************************************************************
Ejercicio 1.
Señal de onda cuadrada a frecuencia de 10 kHz.
Usar temporizador (no vale PWM)
Un periodo dura 100us
Tengo que cambiar el signo de la salida cada 50us
****************************************************************/
#define pinSalida 25
volatile bool conmutaSalida;
hw_timer_t *timer = NULL;
/*
CuentaFinalizada() activa una variable booleana
que indica que debe conmutarse el valor de la salida
*/
void IRAM_ATTR CuentaFinalizada(void)
{
conmutaSalida = true;
}
void setup() {
pinMode(pinSalida, OUTPUT);
timer = timerBegin(1000000); // Configurado a 1 MHz.
timerAttachInterrupt(timer, &CuentaFinalizada); // point to the ISR
timerAlarm(timer, 50, true, 0); // Como va a 1 MHz, si cuenta hasta 50, cuenta 50 us
digitalWrite(pinSalida, LOW);
}
void loop() {
if (conmutaSalida) {
conmutaSalida = false;
digitalWrite(pinSalida, !digitalRead(pinSalida));
}
}