Нужен скетч для нано

И ГОЛОС КАК У АЛКАШЕЙ

1 лайк

Две ардуинки полюбому дешевле 2 тыр)

5 лайков

на двух таймерах возможно!

Results for frequency: 10000.00Hz
Prescaler: 1; MaxValue: 799; Frequency: 10000.00Hz; Diff: 0.00Hz
Prescaler: 8; MaxValue: 99; Frequency: 10000.00Hz; Diff: 0.00Hz
Prescaler: 64; MaxValue: 12; Frequency: 9615.38Hz; Diff: 384.62Hz
Prescaler: 256; MaxValue: 2; Frequency: 10416.67Hz; Diff: 416.67Hz
Prescaler: 1024; MaxValue: 0; Frequency: 7812.50Hz; Diff: 2187.50Hz

Results for frequency: 15625.00Hz
Prescaler: 1; MaxValue: 511; Frequency: 15625.00Hz; Diff: 0.00Hz
Prescaler: 8; MaxValue: 63; Frequency: 15625.00Hz; Diff: 0.00Hz
Prescaler: 64; MaxValue: 7; Frequency: 15625.00Hz; Diff: 0.00Hz
Prescaler: 256; MaxValue: 1; Frequency: 15625.00Hz; Diff: 0.00Hz
Prescaler: 1024; MaxValue: 0; Frequency: 7812.50Hz; Diff: 7812.50Hz

почитать можно тут

1 лайк
enum Prescalers {
   PRESCALER_STOP = 0,
   PRESCALER_1 = 1, 
   PRESCALER_8 = 2, 
   PRESCALER_32 = 3, 
   PRESCALER_64 = 4, 
   PRESCALER_128 = 5, 
   PRESCALER_256 = 6, 
   PRESCALER_1024 = 7  
};

void set_Timer1(){   //Freq=10000Hz
   uint8_t prescaler = PRESCALER_8;
   uint16_t topValue = 99;
   pinMode(10, OUTPUT);
   TCCR1A = 0x10;              // Инвертирование пина 10 по сравнению
   TCCR1B = 0x08 | prescaler;  // Установить СТС режим и делитель частоты
   OCR1A = topValue;           // установить TOP равным topValue
}

void set_Timer2(){   //Freq=15625Hz
   uint8_t prescaler2 = PRESCALER_8;
   uint8_t topValue2 = 63;
   pinMode(11, OUTPUT);
   TCCR2A = 0x42;               // Инвертирование пина 11 по сравнению       
   TCCR2B = 0x00 | prescaler2;  // Установить СТС режим и делитель частоты 
   OCR2A = topValue2;           // установить TOP равным topValue            
}

void start_Timer1(){
  TCCR1A = 0x10;              // Инвертирование пина 10 по сравнению
}
void start_Timer2(){
  TCCR2A = 0x42;              // Инвертирование пина 11 по сравнению
}

void setup() {
  // Запустим таймеры для частоты 10000 выход Pin 10 для частоты 15625 выход 11
  set_Timer1();
  start_Timer1();
  set_Timer2();
  start_Timer2();
}

void loop() { }

Рассчитать требуемые константы таймеров можно тут:

1 лайк

всем спасибо, особо - ua6em, усе арбайтн…
приобрел еще небольшой опыт в программировании авр

А чеж ты тогда галку “вопрос решен” себе поставил?
Типа сам спроси и сам решил?

1 лайк

извиняюсь, только вчера здесь зарегистрировался, еще не знаком с “кнопками”, исправлюсь)))