Пытаюсь использовать кнопки для изменения частоты генератора, но не получается

alex@123
Offline
Зарегистрирован: 03.02.2022
Здравствуйте
 Пытаюсь использовать кнопки для изменения частоты генератора, но не получается, помогите пожалуйста.
 
/////////////////////////////////////////////
//#define TIMER1_TOP (249)
//#define TIMER1_TOP (200)
int k;
float TIMER1_TOP (k);
///////////////////////////////////////////

const int T0OutputPin = 9;

void setup()
{
  digitalWrite(T0OutputPin, LOW);
  pinMode(T0OutputPin, OUTPUT);
  pinMode(A1, INPUT_PULLUP);    //k++
  pinMode(A2, INPUT_PULLUP);   //k--
  cli();
  // Stop timer 0 which was set up by the Arduino core
  TCCR0B = 0; // stop the timer
  TIMSK0 = 0; // disable interrupt
  TIFR0 = 0x07; // clear any pending interrupt

  ADCSRB = (1 << ADTS2) | (1 << ADTS1); // auto-trigger ADC on timer/counter 1 overflow
  ADCSRA = (1 << ADEN) | (1 << ADSC) | (1 << ADATE) | (1 << ADPS2); // enable adc, enable auto-trigger, prescaler = 16 (1MHz ADC clock)
  DIDR0 = 1;

  // Set up timer 1.
  // Prescaler = 1, phase correct PWM mode, TOP = ICR1A
  TCCR1A = (1 << COM1A1) | (1 << WGM11);
  TCCR1B = (1 << WGM12) | (1 << WGM13) | (1 << CS10); // CTC mode, prescaler = 1
  TCCR1C = 0;
  OCR1AH = (TIMER1_TOP / 2 >> 8);
  OCR1AH = (TIMER1_TOP / 2 >> 8);

  OCR1AL = (TIMER1_TOP / 2 & 0xFF);
  ICR1H = (TIMER1_TOP >> 8);
  ICR1L = (TIMER1_TOP & 0xFF);
  TCNT1H = 0;
  TCNT1L = 0;
  TIFR1 = 0x07; // clear any pending interrupt
  TIMSK1 = (1 << TOIE1);
}
void loop()
{
  if (digitalRead(A1) == LOW)
  {
    k++;
  }
  if (digitalRead(A2) == LOW)
  {
    k--;
  }
}

 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А где тот код, который пытается менять частоту?

alex@123
Offline
Зарегистрирован: 03.02.2022
Частоту можна менять используя - #define TIMER1_TOP (249).
 Вместо 249 поставил k которого величина должна меняться в void loop()
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Я не спрашиваю, как можно менять частоту, я хочу увидеть Ваши попытки сделать это. (ведь Вы пишете "пытаюсь использовать" - вот и покажите, как Вы пытаетесь)

b707
Offline
Зарегистрирован: 26.05.2017

alex@123 -  а вы вообще понимаете, что означают вот эти две строчки?

int k;
float TIMER1_TOP (k);

думаю что не понимаете.

Я вот гарантирую вам, что они делают совсем не то, что вы думаете. Во всяком случае могу вас уверить, что при изменении в программе значения переменной k у вас TIMER1_TOP не меняется.

Более того, сдается мне что вы в этом коде вообще ни строчки не понимаете... Этот код хотя бы компилируется?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

alex@123 пишет:

Здравствуйте
 Пытаюсь использовать кнопки для изменения частоты генератора, но не получается
 
И не получится, пока код понимать не начнешь.