Телефонуйте » (+38) 096 227 41 41

Логічно випливає, що частота сигналу ШІМ визначається швидкістю лічильника. Припускаючи, що ви використовуєте ATmega168 з прошитим на ньому завантажувачем Arduino Diecimila (а це саме те, якщо ви купили Arduino Diecimila), період цього лічильника -  один системний тактовий сигнал, поділеній на певну величину попереднім подільником.

Попередній подільник – 3-х бітове значення, яке зберігається в трьох молодших бітах регістрів лічильника/таймера: CS02, CS01 і CS00. Є три таких регістри таймера/лічильника: TCCR0B, TCCR1B і TCCR2B.
Оскільки існує три різних подільники, то шість контактів ШІМ розбиті на три пари: кожна пара має свій власний попередній подільник. Наприклад, обидва контакти 5 і 6 Arduino контролюються TCCR0B, так що ви можете встановити контакти 5 і 6 Arduino для виведення сигналу ШІМ на одній частоті. Контакти 9 і 10 Arduino управляються TCCR1B, так що вони можуть бути встановлені на іншій частоті, ніж контакти 5 і 6. Контакти 3 і 11 Arduino знаходяться під контролем TCCR2B, так що вони можуть бути встановлені на третій частоті. Але ви не можете встановити різні частоти для контактів, які знаходяться під контролем одного і того ж подільника (наприклад, контакти 5 і 6 повинні бути на одній і тій же частоті).
Якщо використовуєте значення за замовчуванням, встановлене завантажувачем на платформі Arduino Diecimila, то ваші частоти ШІМ:

  • Arduino PIN5 і PIN6: 976.56 Гц
  • Arduino PIN9, PIN10, PIN11 і PIN3: 490.20 Гц (в інших джерелах - 488,28 Гц)


У налаштуваннях частини void setup()коду вашого Arduino встановіть або скиньте біти CS02, CS01 і CS00 у відповідних регістрах TCCRnB:

// Для Arduino Uno, Nano, Micro Magician, Mini Driver, Lilly Pad і будь-якої іншої плати, яка використовує ATmega 8, 168 або 328**
 
//---- Встановити частоту ШІМ для PIN5 і PIN6 ----
 
//TCCR0B = TCCR0B & B11111000 | B00000001;    //встановити подільник timer 0 в 1 1 для частоти ШІМ 62500.00 Гц
//TCCR0B = TCCR0B & B11111000 | B00000010;    //встановити подільник timer 0 в 1 8 для частоти ШІМ 7812.50 Гц
  TCCR0B = TCCR0B & B11111000 | B00000011;    //встановити подільник timer 0 в 64 для частоти ШІМ 976.56 Гц (За замовчуванням)
//TCCR0B = TCCR0B & B11111000 | B00000100;    //встановити подільник timer 0 в 256 для частоти ШІМ 244.14 Гц
//TCCR0B = TCCR0B & B11111000 | B00000101;    //встановити подільник timer 0 в 1024 для частоти ШІМ 61.04 Гц
 
//---- Встановити частоту ШІМ для PIN9 і PIN10 ----
 
//TCCR1B = TCCR1B & B11111000 | B00000001;    //встановити подільник timer 1 в 1 для частоти ШІМ 31372.55 Гц
//TCCR1B = TCCR1B & B11111000 | B00000010;    //встановити подільник timer 1 в 8 для частоти ШІМ 3921.16 Гц
  TCCR1B = TCCR1B & B11111000 | B00000011;    // встановити подільник timer 1 в 64 для частоти ШІМ 490.20 Гц (За замовчуванням)
//TCCR1B = TCCR1B & B11111000 | B00000100;    //встановити подільник timer 1 в 256 для частоти ШІМ 122.55 Гц
//TCCR1B = TCCR1B & B11111000 | B00000101;    //встановити подільник timer 1 в 1024 для частоти ШІМ 30.64 Гц
 
//---- Встановити частоту ШІМ для PIN3 і PIN11 ----
 
//TCCR2B = TCCR2B & B11111000 | B00000001;    //встановити подільник timer 2 в 1 для частоти ШІМ 31372.55 Гц
//TCCR2B = TCCR2B & B11111000 | B00000010;    //встановити подільник timer 2 в 8 для частоти ШІМ 3921.16 Гц
//TCCR2B = TCCR2B & B11111000 | B00000011;    //встановити подільник timer 2 в 32 для частоти ШІМ 980.39 Гц
  TCCR2B = TCCR2B & B11111000 | B00000100;    //встановити подільник timer 2 в 64 для частоти ШІМ 490.20 Гц (За замовчуванням)
//TCCR2B = TCCR2B & B11111000 | B00000101;    //встановити подільник timer 2 в 128 для частоти ШІМ 245.10 Гц
//TCCR2B = TCCR2B & B11111000 | B00000110;    //встановити подільник timer 2 в 256 для частоти ШІМ 122.55 Гц
//TCCR2B = TCCR2B & B11111000 | B00000111;    //встановити подільник timer 2 в 1024 для частоти ШІМ 30.64 Гц
 
//Для Arduino Mega1280, Mega2560, MegaADK, Spider і будь-якої іншої плати, яка використовує ATmega1280 або ATmega2560**
 
//---- Встановити частоту ШІМ для PIN4 & PIN13 -----
 
//TCCR0B = TCCR0B & B11111000 | B00000001;    //встановити подільник timer 0 в 1 для частоти ШІМ 62500.00 Гц
//TCCR0B = TCCR0B & B11111000 | B00000010;    //встановити подільник timer 0 в 8 для частоти ШІМ 7812.50 Гц
  TCCR0B = TCCR0B & B11111000 | B00000011;    //встановити подільник timer 0 в 64 для частоти ШІМ 976.56 Гц (За замовчуванням)
//TCCR0B = TCCR0B & B11111000 | B00000100;    //встановити подільник timer 0 в 256 для частоти ШІМ 244.14 Гц
//TCCR0B = TCCR0B & B11111000 | B00000101;    //встановити подільник timer 0 в 1024 для частоти ШІМ 61.04 Гц
 
//-----Встановити частоту ШІМ для PIN11 & PIN12 -----
 
//TCCR1B = TCCR1B & B11111000 | B00000001;    //встановити подільник timer 1 в 1 для частоти ШІМ 31372.55 Гц
//TCCR1B = TCCR1B & B11111000 | B00000010;    // встановити подільник timer 1 в 8 для частоти ШІМ 3921.16 Гц
  TCCR1B = TCCR1B & B11111000 | B00000011;    // встановити подільник timer 1 в 64 для частоти ШІМ 490.20 Гц (За замовчуванням)
//TCCR1B = TCCR1B & B11111000 | B00000100;    //встановити подільник timer 1 в 256 для частоти ШІМ 122.55 Гц
//TCCR1B = TCCR1B & B11111000 | B00000101;    //встановити подільник timer 1 в 1024 для частоти ШІМ 30.64 Гц
 
//--- Встановити частоту ШІМ для PIN9 & PIN10 -----
 
//TCCR2B = TCCR2B & B11111000 | B00000001;    //встановити подільник timer 2 в 1 для частоти ШІМ 31372.55 Гц
//TCCR2B = TCCR2B & B11111000 | B00000010;    //встановити подільник timer 2 в 8 для частоти ШІМ 3921.16 Гц
//TCCR2B = TCCR2B & B11111000 | B00000011;    //встановити подільник timer 2 в 32 для частоти ШІМ 980.39 Гц
  TCCR2B = TCCR2B & B11111000 | B00000100;    //встановити подільник timer 2 в 64 для частоти ШІМ 490.20 Гц (За замовчуванням)
//TCCR2B = TCCR2B & B11111000 | B00000101;    //встановити подільник timer 2 в 128 для частоти ШІМ 245.10 Гц
//TCCR2B = TCCR2B & B11111000 | B00000110;    //встановити подільник timer 2 в 256 для частоти ШІМ 122.55 Гц
//TCCR2B = TCCR2B & B11111000 | B00000111;    //встановити подільник timer 2 в 1024 для частоти ШІМ 30.64 Гц
 
//--- Встановити частоту ШІМ для PIN2, PIN3 & PIN5 ---
 
//TCCR3B = TCCR3B & B11111000 | B00000001;    //встановити подільник timer 3 в 1 для частоти ШІМ 31372.55 Гц
//TCCR3B = TCCR3B & B11111000 | B00000010;    //встановити подільник timer 3 в 8 для частоти ШІМ 3921.16 Гц
  TCCR3B = TCCR3B & B11111000 | B00000011;    //встановити подільник timer 3 в 64 для частоти ШІМ 490.20 Гц (За замовчуванням)
//TCCR3B = TCCR3B & B11111000 | B00000100;    //встановити подільник timer 3 в 256 для частоти ШІМ 122.55 Гц
//TCCR3B = TCCR3B & B11111000 | B00000101;    // встановити подільник timer 3 в 1024 для частоти ШІМ 30.64 Гц
 
//--- Встановити частоту ШІМ для PIN6, PIN7 & PIN8 ----
 
//TCCR4B = TCCR4B & B11111000 | B00000001;    //встановити подільник timer 4 в 1 для частоти ШІМ 31372.55 Гц
//TCCR4B = TCCR4B & B11111000 | B00000010;    //встановити подільник timer 4 в 8 для частоти ШІМ 3921.16 Гц
  TCCR4B = TCCR4B & B11111000 | B00000011;    //встановити подільник timer 4 в 64 для частоти ШІМ 490.20 Гц (За замовчуванням)
//TCCR4B = TCCR4B & B11111000 | B00000100;    //встановити подільник timer 4 в 256 для частоти ШІМ 122.55 Гц
//TCCR4B = TCCR4B & B11111000 | B00000101;    //встановити подільник timer 4 в 1024 для частоти ШІМ 30.64 Гц
 
//- Встановити частоту ШІМ для PIN44, PIN45 & PIN46 ---
 
//TCCR5B = TCCR5B & B11111000 | B00000001;    //встановити подільник timer 5 в 1 для частоти ШІМ 31372.55 Гц
//TCCR5B = TCCR5B & B11111000 | B00000010;    //встановити подільник timer 5 в 8 для частоти ШІМ 3921.16 Гц
  TCCR5B = TCCR5B & B11111000 | B00000011;    //встановити подільник timer 5 в 64 для частоти ШІМ 490.20 Гц (За замовчуванням)
//TCCR5B = TCCR5B & B11111000 | B00000100;    //встановити подільник timer 5 в 256 для частоти ШІМ 122.55 Гц
//TCCR5B = TCCR5B & B11111000 | B00000101;    //встановити подільник timer 5 в 1024 для частоти ШІМ 30.64 Гц
За матеріалами: arduino-info.wikispaces.com

Новини

  • Модуль SMARC запускає Android або Linux на Snapdragon 820
    Модуль SMARC запускає Android або Linux на Snapdragon 820

    SMART 2.0 "Snapdragon 820 SOM" iWave має 3 Гб LPDDR4, 32 Гб eMMC, Wi-Fi та Bluetooth, а також вхідні/вихідні виводи, включаючи GbE, HDMI 2.0, MIPI-CSI, USB 3.0 та PCIe. Комп'ютер розміром 82x50 мм працює на ОС Android Snailbone або вище, з наступною підтримкою Linux. Snapdragon 820 об'єднує чотири 14-нм Cortex з технологією FinFET - два на частоті 2,15 ГГц, а два з 1,6 ГГц, які намагаються імітувати високоякісні Cortex-A72. Крім того, SoC оснащений 624 МГц Adreno 530 GPU, Hexagon 680 DSP і 14-розрядним ISP для Spectra. Snapdragon 820 SOM підтримує кодування H.265 4K@60 та кодування 4K@30.

    in Новини

Записатися на курс