21.01.2016, 22:23 | #211 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Re: Ускоряем работу Arduino
Admin
Может тога задефинить оба камня с предупреждением что со 168 полностью не тестировалось пока PHP код:
|
22.01.2016, 12:30 | #212 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Ускоряем работу Arduino
Попробую на выходных
|
06.02.2016, 15:11 | #213 |
Junior Member
Регистрация: 06.02.2016
Сообщений: 1
Вес репутации: 0 |
Re: Ускоряем работу Arduino
Скажите, а если мне надо обращаться к аналоговым портам A8-A11 в меге 2560, можно добавить поддержку в библиотеку?
|
06.02.2016, 23:09 | #214 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Ускоряем работу Arduino
Если Вы знаете как добавить, то никто возражать не будет
|
07.02.2016, 12:43 | #215 |
Junior Member
Регистрация: 07.02.2016
Сообщений: 5
Вес репутации: 0 |
Re: Ускоряем работу Arduino
Спасибо автору за бибилиотеку, но не могли бы Вы прокомментировать следующее. Есть код диммера 220, написанного я так понимаю тоже Вами. http://cyber-place.ru/showthread.php?t=191. Собрал схему, все работает замечательно, но стоило внести изменение в код, а именно добавить delay(1000) в секции Setup как все перестало работать, ардуина просто зависает, причем не всегда а примерно в 50% случаев. Переписал код без использования CybelLib, все сразу заработало. Плата у мена Про Мини.
|
07.02.2016, 13:04 | #216 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Ускоряем работу Arduino
delay(1000) в секции setup, ни как не может влиять на выполнение остального кода, возможно Вы допустили ошибку в другом месте скетча
|
07.02.2016, 13:16 | #217 |
Junior Member
Регистрация: 07.02.2016
Сообщений: 5
Вес репутации: 0 |
Re: Ускоряем работу Arduino
сам в шоке, перепроверял многократно. Либо attachInterrupt либо delay. Код брал 100% Ваш, единственное изменение вносил - delay(1000), причем как я говорил баг плавающий, проявляется не каждый раз. Может конечно у меня глючная плата, но проверить на другой не мог, так как схема диммера собрана вместе с ней.
|
07.02.2016, 19:43 | #218 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Re: Ускоряем работу Arduino
В таких случаях обычно выкладывают код - битва экстрасенсов это к каналу тнт. Или ошибка найдется или удостовериться в правильности на нашем железе
|
08.02.2016, 11:10 | #219 |
Junior Member
Регистрация: 07.02.2016
Сообщений: 5
Вес репутации: 0 |
Re: Ускоряем работу Arduino
Код:
#include <CyberLib.h> //Библиотека от Cyber-Place.ru volatile uint8_t tic, Dimmer1, Dimmer2, Dimmer3; uint8_t data; void setup() { D4_Out; D5_Out; D6_Out; //Настраиваем порты на выход D4_Low; D5_Low; D6_Low; //установить на выходах низкий уровень сигнала D2_In; //настраиваем порт на вход для отслеживания прохождения сигнала через ноль //CHANGE – прерывание вызывается при любом изменении значения на входе; //RISING – вызов прерывания при изменении уровня напряжения с низкого (Low) на высокий(HIGH) //FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкий (Low) attachInterrupt(0, detect_up, LOW); // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень StartTimer1(halfcycle, 40); //время для одного разряда ШИМ StopTimer1(); //остановить таймер UART_Init(115200); //инициализация порта delay(1000); } //********************обработчики прерываний******************************* void halfcycle() //прерывания таймера { tic++; //счетчик if(Dimmer1 < tic ) D4_High; //управляем выходом if(Dimmer2 < tic ) D5_High; //управляем выходом if(Dimmer3 < tic ) D6_High; //управляем выходом } void detect_up() // обработка внешнего прерывания. Сработает по переднему фронту { tic=0; //обнулить счетчик ResumeTimer1(); //запустить таймер attachInterrupt(0, detect_down, HIGH); //перепрограммировать прерывание на другой обработчик } void detect_down() // обработка внешнего прерывания. Сработает по заднему фронту { StopTimer1(); //остановить таймер D4_Low; D5_Low; D6_Low; //логический ноль на выходы tic=0; //обнулить счетчик attachInterrupt(0, detect_up, LOW); //перепрограммировать прерывание на другой обработчик } //************************************************************************* void loop() {Start if (UART_ReadByte(data)) Dimmer1=data; Dimmer2=195; //200=мин. 0=макс Dimmer3=0; //200=мин. 0=макс End} |
08.02.2016, 11:43 | #220 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Ускоряем работу Arduino
Точно не помню какой таймер использует delay, но если Timer1 то функция StopTimer1(); останавливает таймер
|
Здесь присутствуют: 67 (пользователей: 0 , гостей: 67) | |
|
|