Здравствуйте.
Пытаюсь завести диммер из шапки с Arduino UNO.
Заранее уточнил на офф.сайте:

Подключаю по следующей схеме:
Взял код из первого поста с малейшими изменениями, которые отражены в комментариях:
PHP код:
#include <CyberLib.h>
volatile uint8_t tic, Dimmer1, Dimmer2, Dimmer3;
uint8_t data;
void setup()
{
D5_Out; D6_Out; D13_Out; // Заменил D4 на D13 для отслеживания изменений на диоде L
D5_Low; D6_Low; D13_Low; // т.к. D4 на uno не поддерживает pwm
D2_In;
attachInterrupt(0, detect_up, LOW);
StartTimer1(halfcycle, 40);
StopTimer1();
UART_Init(9600);
}
void halfcycle()
{
tic++;
if(Dimmer1 < tic ) D5_High;
if(Dimmer2 < tic ) D6_High;
if(Dimmer3 < tic ) D13_High; // Заменил D4 на D13
}
void detect_up()
{
tic=0;
ResumeTimer1();
attachInterrupt(0, detect_down, HIGH);
UART_SendByte('U'); // Отладочный дамп для отслеживания срабатывания прерывания
}
void detect_down()
{
StopTimer1();
D5_Low; D6_Low; D13_Low; // Заменил D4 на D13
tic=0;
attachInterrupt(0, detect_up, LOW);
UART_SendByte('D'); // Отладочный дамп для отслеживания срабатывания прерывания
}
void loop()
{Start
Dimmer2=255; // D6
if(UART_ReadByte(data))
{
Dimmer1=data; // D5
Dimmer3=data; // D13
}
End}
В итоге получаю следующее:
- консоль бешено дампит UDUDUD..., то есть делаю вывод, что прерывания отрабатывают
- посылаю из консоли указанные в шапке параметры("Г", "d", " "):
- Г - диод L горит с минимальной яркостью, лампа светит по максимуму
- d - диод L горит со средней яркостью, лампа светит по максимуму
- Символ пробела - диод L горит с максимальной яркостью, лампа все так же светит по максимуму
- при установке диммера на D6, который, как видно из кода, всегда должен быть погашен, лампа всё так же горит
Помогите, пожалуйста, понять, что же я мог сделать не так?