Телефонуйте » (+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

Новини

  • SDR в IoT

    iotSDR пропонує платформу розробок для IoT-радіо та мережевих доменів. На платі два передавачі Microchip AT86RF215, для вводу-виводу модему на Xilinx ZYNQ SoC, приймач GNSS MAX2769 для GPS, Galileo, BieDou та Glonass. Плата сумісна з ПЗ GNURadio SDR. Дозволяє розробити протоколи фізичного рівня LoRa, SigFox, WightLess, Bluetooth, BLE, 802.15.4, ZigBee тощо для IoT, або шлюз IoT через TheThingsNetwork, LPWAN або Google Thread. Пам'ять EEPROM: 1x AT24MAC602 , flash-пам'ять: 1x QSPI 128 Мб, RAM: 256 MБ DDR3,слот для Micro SD карти, входи/виходи: 2x 8-бітних інтерфейси PL, інтерфейс 8-бітного PS, Gigabit Ethernet, USB 2.0 (USB3310), USB 2.0 (CP2104), 2x SMA RF-роз'єми для приймача діапазонів IoT, 2x SMA RF-роз'єми для приймача 2,4 ГГц , RF-роз'єм приймач GNSS, FPGA-роз'єм JTAG для програмування. Розміри плати: 76,2 мм x 101,6 мм.

     

    in Новини

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