Естественно, TIMER1 16-ти битный, в то время как код написан под 8-битный таймер. Будет время сделаю под 16-ти битный. Но можете и сами посмотреть даташит и настоить по аналогии с 8-ми битным.
#define PIN_12
#define PIN_13
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
void setup()
{
Init_PWM();
analog_Frequency(2); // предделитель от 1 до 7
}
void loop()
{
analog_Write(12, 255-brightness);
analog_Write(13, brightness);
brightness = brightness + fadeAmount;
if (brightness == 0 || brightness == 255) fadeAmount = -fadeAmount ;
delay(50);
}
P.S. #define ALL задействует все 20 выводов дуины.
Интересная тема. Глубоко "тонет" и всеравно "всплывает" и подход к проблеме очень перспективный.
Я у себя использую совсем небольшую либку для таймера 1. Делает она дето следующее:
1. генерирует временные интервалы от 4мксек до 0,5сек для каждого обслуживаемого "устройства". Величины интервалов задает само устройство на каждом такте.
2. Поддерживает такие "устройства": ШИМ 8 бит на любом пине, сервопривод 8бит на любом пине, ШИМ 8 бит на выводе сдвигового регистра расширения, сервопривод 8бит на выводе сдвигового регистра расширения, произвольное устройство конечный автомат с временными интервалами.
3. Одновременно работающих устройств - 255 (реально пробовал штук 10 - работает). Т.е. часть из них ШИМ, часть сервами ворочает, а какое-то морзянкой мигает.
4. Работа с пинами напрямую, использовать digitalWrite можно, но не желательно.
Работает на Нано и Мини. На других не тестил, должна работать на любом 328.
Если будет письменно подтвержденный массового интереса - могу опубликовать. Просто так не буду, не охота с примерами возится и описание набирать.
Интересная тема. Глубоко "тонет" и всеравно "всплывает" и подход к проблеме очень перспективный.
Я у себя использую совсем небольшую либку для таймера 1. Делает она дето следующее:
1. генерирует временные интервалы от 4мксек до 0,5сек для каждого обслуживаемого "устройства". Величины интервалов задает само устройство на каждом такте.
2. Поддерживает такие "устройства": ШИМ 8 бит на любом пине, сервопривод 8бит на любом пине, ШИМ 8 бит на выводе сдвигового регистра расширения, сервопривод 8бит на выводе сдвигового регистра расширения, произвольное устройство конечный автомат с временными интервалами.
3. Одновременно работающих устройств - 255 (реально пробовал штук 10 - работает). Т.е. часть из них ШИМ, часть сервами ворочает, а какое-то морзянкой мигает.
4. Работа с пинами напрямую, использовать digitalWrite можно, но не желательно.
Работает на Нано и Мини. На других не тестил, должна работать на любом 328.
Если будет письменно подтвержденный массового интереса - могу опубликовать. Просто так не буду, не охота с примерами возится и описание набирать.
А моглибы вы хотябы просто исходниками поделиться ?
Интересует, все-таки, вариант в виде библиотеки (да и ссылки все битые уже). Не могли бы Вы ее выложить сюда. Путем вставки кода в скетчи все получается, но нужен именно библиотечный вариант для вставки в другой мой проект по управлению семисегментным ЖКИ (1/4 multiplex , 1/3 bias)
Сам попытался (после 2 дней разбора семантики Вашего кода), не получается как то создать библиотеку самостоятельно. Знаний и пониманий еще маловато. Подозреваю что можно сделать в таком виде как тут http://robotosha.ru/arduino/multi-tasking-arduino.html
но видать от переизбытка новой информации за единицу времени, мозги переклинивает.А тут еще и работать надо )
Подскажите, кто пользуется этой чудом, почему код программного ШИМ почему-то блокирует обмен по serial. Если в скетче закоментировать строку Init_PWM(); - общение по serial команда/ответ проходят без проблем, как только подключаю код PWM - все, глухо. При попытке вывести значение любой переменной по serial - программа зависает вовсе. Пытался понять, что мешает: предположил, что код PWM задействует ШИМ и на RX TX, так как рассчитан на все пины ардуино. Пробовал оставить только строки с пинами, которые использую - эффект тот же. Видимо там что-то "зарыто" в коде ассемблера...
Естественно, TIMER1 16-ти битный, в то время как код написан под 8-битный таймер. Будет время сделаю под 16-ти битный. Но можете и сами посмотреть даташит и настоить по аналогии с 8-ми битным.
http://hwmans.blogspot.com/2014/03/attiny13a.html может кому будет полезно.
Выложите библиотеку пожалуйста.
Создайте в своем проекте новую вкладку с именем PWM:
и копируйте туда это содержимое:
пример кода:
P.S. #define ALL задействует все 20 выводов дуины.
Для ардуино леонардо (китайского образца как про мини выглядит) Нужно менять что ни будь ?
Автор, пожалуйста, сделайте по анадлогии программный ШИМ для ATmega8.
Подскажите на портах где програмный ШИМ только у меня digitalWrite не работает?
Интересная тема. Глубоко "тонет" и всеравно "всплывает" и подход к проблеме очень перспективный.
Я у себя использую совсем небольшую либку для таймера 1. Делает она дето следующее:
1. генерирует временные интервалы от 4мксек до 0,5сек для каждого обслуживаемого "устройства". Величины интервалов задает само устройство на каждом такте.
2. Поддерживает такие "устройства": ШИМ 8 бит на любом пине, сервопривод 8бит на любом пине, ШИМ 8 бит на выводе сдвигового регистра расширения, сервопривод 8бит на выводе сдвигового регистра расширения, произвольное устройство конечный автомат с временными интервалами.
3. Одновременно работающих устройств - 255 (реально пробовал штук 10 - работает). Т.е. часть из них ШИМ, часть сервами ворочает, а какое-то морзянкой мигает.
4. Работа с пинами напрямую, использовать digitalWrite можно, но не желательно.
Работает на Нано и Мини. На других не тестил, должна работать на любом 328.
Если будет письменно подтвержденный массового интереса - могу опубликовать. Просто так не буду, не охота с примерами возится и описание набирать.
Интересная тема. Глубоко "тонет" и всеравно "всплывает" и подход к проблеме очень перспективный.
Я у себя использую совсем небольшую либку для таймера 1. Делает она дето следующее:
1. генерирует временные интервалы от 4мксек до 0,5сек для каждого обслуживаемого "устройства". Величины интервалов задает само устройство на каждом такте.
2. Поддерживает такие "устройства": ШИМ 8 бит на любом пине, сервопривод 8бит на любом пине, ШИМ 8 бит на выводе сдвигового регистра расширения, сервопривод 8бит на выводе сдвигового регистра расширения, произвольное устройство конечный автомат с временными интервалами.
3. Одновременно работающих устройств - 255 (реально пробовал штук 10 - работает). Т.е. часть из них ШИМ, часть сервами ворочает, а какое-то морзянкой мигает.
4. Работа с пинами напрямую, использовать digitalWrite можно, но не желательно.
Работает на Нано и Мини. На других не тестил, должна работать на любом 328.
Если будет письменно подтвержденный массового интереса - могу опубликовать. Просто так не буду, не охота с примерами возится и описание набирать.
А моглибы вы хотябы просто исходниками поделиться ?
А моглибы вы хотябы просто исходниками поделиться ?
Пробуйте.
https://cloud.mail.ru/public/5ZoS/8W79KQrZJhttps://cloud.mail.ru/public/5ZoS/8W79KQrZJ
Слегка обрезаная. Без сдвигового регистра как стандартного устройства. Его сейчас потестить не на чем.
Простенький пример.
Шевелит сервой, шимует светодиод а вторым светодиодом SOS сигналит.
А моглибы вы хотябы просто исходниками поделиться ?
Пробуйте.
https://cloud.mail.ru/public/5ZoS/8W79KQrZJhttps://cloud.mail.ru/public/5ZoS/8W79KQrZJ
Слегка обрезаная. Без сдвигового регистра как стандартного устройства. Его сейчас потестить не на чем.
Ссылка не работатет, не могу скачать
Наверно потому что задвоилась при вставке https://cloud.mail.ru/public/5ZoS/8W79KQrZJ
У меня на уно вообще никак не работает, хотя компилируется без ошибок
Подскажите, что не так.
Делаю DMX диммер на програмном шиме, нет определяется уровень, где копать, вот так работаек как свитч
ав от так ваще ничего
Здравствуйте, Максим!
Интересует, все-таки, вариант в виде библиотеки (да и ссылки все битые уже). Не могли бы Вы ее выложить сюда. Путем вставки кода в скетчи все получается, но нужен именно библиотечный вариант для вставки в другой мой проект по управлению семисегментным ЖКИ (1/4 multiplex , 1/3 bias)
Сам попытался (после 2 дней разбора семантики Вашего кода), не получается как то создать библиотеку самостоятельно. Знаний и пониманий еще маловато. Подозреваю что можно сделать в таком виде как тут http://robotosha.ru/arduino/multi-tasking-arduino.html
но видать от переизбытка новой информации за единицу времени, мозги переклинивает.А тут еще и работать надо )
Заранее, премного благодарствую!!
Подскажите, кто пользуется этой чудом, почему код программного ШИМ почему-то блокирует обмен по serial. Если в скетче закоментировать строку Init_PWM(); - общение по serial команда/ответ проходят без проблем, как только подключаю код PWM - все, глухо. При попытке вывести значение любой переменной по serial - программа зависает вовсе. Пытался понять, что мешает: предположил, что код PWM задействует ШИМ и на RX TX, так как рассчитан на все пины ардуино. Пробовал оставить только строки с пинами, которые использую - эффект тот же. Видимо там что-то "зарыто" в коде ассемблера...
Моя программа:
Так где можно найти библиотеку от Maksima?