Светодиодные фонари и световые приборы. Всё о светотехнике.
Изображения Дневники Группы Поиск
Вернуться   Форум FONAREVKA.RU Лаборатория Разработка и модификация фонарей Разработка и модификация электроники фонарей
Расширенный поиск
Забыли пароль? Регистрация

  • О нашем проекте
  • Светотехника и световые приборы
  • Правила форума
Проект FONAREVKA.RU специализируется на предоставлении всей необходимой информации по светотехнике:

— светодиодные фонари;
— различные источники питания;
— разнообразные зарядные устройства;
— освещение помещений и наружное освещение;
— световые приборы для личного, пассажирского и грузового транспорта;
— специальные световые приборы для медицины, для растений, для аквариумов, для террариумов, а также аварийно-сигнальные световые приборы;
— альтернативные источники света;
— лазеры и лазерная техника.

Если у вас есть вопросы по выбору фонарей, аккумуляторов и зарядных устройств ознакомьтесь с FAQ от наших экспертов:

F.A.Q. по выбору фонарей различных типов;
F.A.Q. по выбору аккумуляторов;
F.A.Q. по выбору зарядных устройств.
Ответ  Создать новую тему
Просмотров в теме 231231   Ответов в теме 536   Подписчиков на тему 45   Добавили в закладки 31
Опции темы Поиск в этой теме
Старый 19.07.2015, 15:26   321
Alex63
Увлеченный
 
Регистрация: 16.08.2012
Последняя активность: 19.01.2018 08:37
Адрес: Новосибирск
Сообщений: 475
Сказал(а) спасибо: 44
Поблагодарили: 270 раз(а) в 117 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Прошивка для драйвера на АТ13А,
1 белый диод (5 нога), 3 цветных - 2,3,7 ноги

7 МОД, 5 НАСТРОЕК 1 моды
Моды - Светляк_бел(М0), Настр_бел(М1), 250ма_бел(М2), 700 ма_бел(М3)
Цвет1(М4), Цвет2(М5), Цвет3(М6)

светляк убран из перебора,
Из выкл
1кк в моду1
2кк в моду 4
удержание - мун
Z- счетчик 2кк (вначале 0) во вкл состоянии

Из вкл
1 кк - выкл
2кк из белого - перевод в Z=1 , запом моды и мода 4,
Из цветного - возврат в запомненную белую, если Z=0 - М2
4 кк в 1 моде - выбор подрежима от 35ма до 200 ма
удержание в белом- перебор вверх без муна
удержание в цветном – перебор цветов

Кнопка на 6 ноге
Измерения напряжения нет
AVR_AT13_kesha_color.hex

Версия_4_цвета_kesha.doc

Не макетировал, надеюсь все работает - небольшое изменение стандартной прошивки. Кто попробует - отзовитесь.

[Исправлено: Alex63, 19.07.2015 в 16:14]
Alex63 вне форума   Ответить с цитированием Вверх
Поблагодарили: 4 раз(а)
Anruha (19.07.2015), Bobay (09.09.2015), fnksb (17.11.2015), kesha101178 (19.07.2015)
Старый 19.07.2015, 19:05   322
zazara
Ветеран Фонарёвки
 
Регистрация: 04.06.2013
Последняя активность: Вчера 22:36
Адрес: СПб
Сообщений: 5134
Сказал(а) спасибо: 466
Поблагодарили: 4560 раз(а) в 1599 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

А это к какому фонарю? Или самоделка?
zazara вне форума   Ответить с цитированием Вверх
Старый 20.07.2015, 04:41   323
Alex63
Увлеченный
 
Регистрация: 16.08.2012
Последняя активность: 19.01.2018 08:37
Адрес: Новосибирск
Сообщений: 475
Сказал(а) спасибо: 44
Поблагодарили: 270 раз(а) в 117 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

А это kesha101178 делает как я понял квадрипл с разноцветными диодами.
По конструкции вопросы к нему.
Alex63 вне форума   Ответить с цитированием Вверх
Старый 07.09.2015, 19:18   324
witalen
Ветеран Фонарёвки
 
Аватар для witalen
 
Регистрация: 08.12.2013
Последняя активность: Сегодня 00:22
Адрес: Gomel
Сообщений: 4504
Записей в дневнике: 5
Сказал(а) спасибо: 2322
Поблагодарили: 1797 раз(а) в 1097 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Хелп. Плис.
Пытался сам прошить драйвер из 101 поста.
AVR studio 5.0. скачал на комп не становиться. Попробовал через пони, как то криво стало, яркость по кругу меняется, при разрыве кнопки в режиме не устанавливается, и не выключается.
Подскажите, пожалуйста, ссылку на программку AVR studio 5.0..
__________________
я знаю, что линзовик игрушкафонарь
Не всегда нужно слушать мнение большинства,
Ибо 100500 мух не убедят меня что г....но - это вкусно.
witalen вне форума   Ответить с цитированием Вверх
Старый 07.09.2015, 20:43   325
zazara
Ветеран Фонарёвки
 
Регистрация: 04.06.2013
Последняя активность: Вчера 22:36
Адрес: СПб
Сообщений: 5134
Сказал(а) спасибо: 466
Поблагодарили: 4560 раз(а) в 1599 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Есть где-то инструкция по управлению драйвером из 315 поста? Куда сколько кликов, как программировать, как термоконтроль калибровать... А то по теме разбросано, что работает, что уже нет - непонятно.
zazara вне форума   Ответить с цитированием Вверх
Старый 07.09.2015, 21:29   326
Garrik

 
Аватар для Garrik
 
Регистрация: 22.01.2013
Последняя активность: Вчера 22:06
Адрес: Крым
Сообщений: 7249
Сказал(а) спасибо: 2232
Поблагодарили: 4899 раз(а) в 2193 сообщениях

Отправить сообщение для Garrik с помощью ICQ
По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

witalen, пользуюсь SinaProg, никаких проблем
__________________
Было: ZL (W) H60*2, H30*2, H31, Н600, SC62ww,SC52; TF Z6, Nitecore; WF602; S2, S2+; UF H3, H6; Olight ; DQG; JB, Spark, Skil

ZL (W) H32 custom, H602 custom, H602, H600, H600f, SC60tir, SC62tripl, SC63; SC600, SC600Mk3; Relight;Olight; Tank; EagleTac; Spark; Sun-n; Niteye
+ кучка
Garrik вне форума   Ответить с цитированием Вверх
Старый 08.09.2015, 19:35   327
witalen
Ветеран Фонарёвки
 
Аватар для witalen
 
Регистрация: 08.12.2013
Последняя активность: Сегодня 00:22
Адрес: Gomel
Сообщений: 4504
Записей в дневнике: 5
Сказал(а) спасибо: 2322
Поблагодарили: 1797 раз(а) в 1097 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

УРА! ЗАРАБОТАЛО!
Собираю фонарь, буду баловаться.
witalen вне форума   Ответить с цитированием Вверх
Старый 09.09.2015, 15:11   328
Alex63
Увлеченный
 
Регистрация: 16.08.2012
Последняя активность: 19.01.2018 08:37
Адрес: Новосибирск
Сообщений: 475
Сказал(а) спасибо: 44
Поблагодарили: 270 раз(а) в 117 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Цитата:
Посмотреть сообщение Сообщение от zazara :
Есть где-то инструкция по управлению драйвером из 315 поста?
Во вложенном текстовом файле в этом посте перед программой прописано все управление. И видео есть с основными функциями.

[Исправлено: Alex63, 09.09.2015 в 15:12]
Alex63 вне форума   Ответить с цитированием Вверх
Старый 10.09.2015, 19:42   329
zazara
Ветеран Фонарёвки
 
Регистрация: 04.06.2013
Последняя активность: Вчера 22:36
Адрес: СПб
Сообщений: 5134
Сказал(а) спасибо: 466
Поблагодарили: 4560 раз(а) в 1599 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Без фонаря в руках сложно понять, что там написано - сленг и сокращения и обозначения. Что есть Z?

[Исправлено: zazara, 10.09.2015 в 19:46]
zazara вне форума   Ответить с цитированием Вверх
Старый 12.09.2015, 07:25   330
Alex63
Увлеченный
 
Регистрация: 16.08.2012
Последняя активность: 19.01.2018 08:37
Адрес: Новосибирск
Сообщений: 475
Сказал(а) спасибо: 44
Поблагодарили: 270 раз(а) в 117 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Цитата:
Посмотреть сообщение Сообщение от zazara :
Что есть Z?
Сленг да, есть.
Z конечно же для пользователя неважен. Это вспомогательная константа, которая обеспечивает только одну функцию -
включение Турбо по 2кк из любой моды, по второму 2кк возврат в ту моду, из которой включали турбо. Если включали из выкл состояния, то фонарь выключится.
Alex63 вне форума   Ответить с цитированием Вверх
Старый 15.09.2015, 19:53   331
MSS
Ветеран Фонарёвки
 
Аватар для MSS
 
Регистрация: 28.04.2013
Последняя активность: 08.01.2024 23:25
Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 529
Поблагодарили: 921 раз(а) в 628 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

В переделанном драйвере на 1400мАч не сразу заработала нормально кнопка (возможно изза длинных проводов). Пока не добавили емкость параллельно кнопке 0,1мкФ.
С чем может быть связано? прошивка из первого поста.
__________________
батискаф: герметична, надійно ізольована від зовнішнього світу капсула,яка іде на дно
MSS вне форума   Ответить с цитированием Вверх
Старый 23.09.2015, 17:06   332
Volosaty
Увлеченный
 
Регистрация: 08.05.2013
Последняя активность: 14.10.2021 15:48
Адрес: Киевская обл.
Сообщений: 367
Сказал(а) спасибо: 207
Поблагодарили: 89 раз(а) в 80 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Цитата:
Посмотреть сообщение Сообщение от MSS :
Пока не добавили емкость параллельно кнопке 0,1мкФ.
Возможно высокое переходное сопротивление кнопки - конденсатор своим разрядом простреливает слой окисла.
Volosaty вне форума   Ответить с цитированием Вверх
Старый 23.09.2015, 20:53   333
MSS
Ветеран Фонарёвки
 
Аватар для MSS
 
Регистрация: 28.04.2013
Последняя активность: 08.01.2024 23:25
Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 529
Поблагодарили: 921 раз(а) в 628 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

вроде как от тиристорного паяльника была помеха... а там кто знает
MSS вне форума   Ответить с цитированием Вверх
Старый 10.10.2015, 01:56   334
AVTOELEKTRIK
Век живи, век учись.
 
Аватар для AVTOELEKTRIK
 
Регистрация: 09.11.2014
Последняя активность: 10.05.2021 23:36
Адрес: МАРИУПОЛЬ
Сообщений: 86
Сказал(а) спасибо: 52
Поблагодарили: 32 раз(а) в 20 сообщениях

Отправить сообщение для AVTOELEKTRIK с помощью Skype™
По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Доброй ночи.Помогите отредактировать прошивку TERMO 2
В общем проблема с термо контролем--- делаю активацию, грею. записываю значение-- фонарь отмаргивает что значение записано, включаю фонарь и он продолжает работать,нагревается сильнее но на предыдущий режим не переходит.Редактировал чтоб было 8 режимов из них 6 с ШИМ, переключением в предыдущий реж по двум кор кликам. .
Менял эти значения--unsigned char Mode[8]={10,20,35,55,100,170,0b00001,0b1001};

if (Nmode<7) Nmode++; // Переключение вверх до максимального режима

else if ((B == 0b00000011) & (Power == 1)) // двойному кор клику


B=0b00000011; //сброс режима на предыдущий (аналогично двойному кор клику)

B=B=0b00000011; //сброс режима на предыдущий (аналогично двойному кор клику)

За основу была взята прошивка Termo 1 ---которую делал- MSS
Кто может проверьте где накосячил с редактированием -- или по незнанию не изменил какое то значение.
Вложения
Тип файла: rar Termo 2.rar (26.3 Кб, 35 просмотров)
Тип файла: rar Termo_1.rar (26.4 Кб, 35 просмотров)
__________________
С Уважением Валерий.
AVTOELEKTRIK вне форума   Ответить с цитированием Вверх
Старый 10.10.2015, 22:13   335
AVTOELEKTRIK
Век живи, век учись.
 
Аватар для AVTOELEKTRIK
 
Регистрация: 09.11.2014
Последняя активность: 10.05.2021 23:36
Адрес: МАРИУПОЛЬ
Сообщений: 86
Сказал(а) спасибо: 52
Поблагодарили: 32 раз(а) в 20 сообщениях

Отправить сообщение для AVTOELEKTRIK с помощью Skype™
По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Цитата:
Посмотреть сообщение Сообщение от AVTOELEKTRIK :
Доброй ночи.Помогите отредактировать прошивку TERMO 2
Вопрос снят---все работает.
AVTOELEKTRIK вне форума   Ответить с цитированием Вверх
Старый 10.10.2015, 22:32   336
MSS
Ветеран Фонарёвки
 
Аватар для MSS
 
Регистрация: 28.04.2013
Последняя активность: 08.01.2024 23:25
Адрес: Харьков
Сообщений: 3980
Сказал(а) спасибо: 529
Поблагодарили: 921 раз(а) в 628 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

ночью оно плохо думается что было?
MSS вне форума   Ответить с цитированием Вверх
Старый 11.10.2015, 00:53   337
AVTOELEKTRIK
Век живи, век учись.
 
Аватар для AVTOELEKTRIK
 
Регистрация: 09.11.2014
Последняя активность: 10.05.2021 23:36
Адрес: МАРИУПОЛЬ
Сообщений: 86
Сказал(а) спасибо: 52
Поблагодарили: 32 раз(а) в 20 сообщениях

Отправить сообщение для AVTOELEKTRIK с помощью Skype™
По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Цитата:
Посмотреть сообщение Сообщение от MSS :
ночью оно плохо думается что было?
Похоже что виновата кнопка без фиксации которую я использовал для прерывания 6 ноги. еще днем проверю пару раз --и тогда точно пойму причину. Хотя странно ---фонарь отмаргивал пять раз (значение сохранено) --но режим не сбрасывал.В сообщении 334 не указал что я еще изменил в
ISR(WDT_vect) значение WDTCR = 0x43; на-- WDTCR = 0x44; и кор клик стал чуть длиннее что для меня более комфортно при переключении реж---изменил еще когда драйвер для Яркого луча прошивал-- вот и здесь изменил.

[Исправлено: AVTOELEKTRIK, 11.10.2015 в 01:00]
AVTOELEKTRIK вне форума   Ответить с цитированием Вверх
Старый 11.10.2015, 16:44   338
AVTOELEKTRIK
Век живи, век учись.
 
Аватар для AVTOELEKTRIK
 
Регистрация: 09.11.2014
Последняя активность: 10.05.2021 23:36
Адрес: МАРИУПОЛЬ
Сообщений: 86
Сказал(а) спасибо: 52
Поблагодарили: 32 раз(а) в 20 сообщениях

Отправить сообщение для AVTOELEKTRIK с помощью Skype™
По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Цитата:
Посмотреть сообщение Сообщение от AVTOELEKTRIK :
Похоже что виновата кнопка без фиксации которую я использовал для прерывания 6 ноги. еще днем проверю пару раз --и тогда точно пойму причину
Причина была в кнопке без фиксации, проверил с нормальной тактовой----работает нормально.
AVTOELEKTRIK вне форума   Ответить с цитированием Вверх
Старый 12.10.2015, 14:45   339
AVTOELEKTRIK
Век живи, век учись.
 
Аватар для AVTOELEKTRIK
 
Регистрация: 09.11.2014
Последняя активность: 10.05.2021 23:36
Адрес: МАРИУПОЛЬ
Сообщений: 86
Сказал(а) спасибо: 52
Поблагодарили: 32 раз(а) в 20 сообщениях

Отправить сообщение для AVTOELEKTRIK с помощью Skype™
По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Добрый день.Гуру подскажите где в прошивке ceramic прописан таймер и какая часть файла нужна для прописания таймера в другую прошивку.
/*
* LED Driver Tactical Button
*
* Created: 1.04.2014
*
* FIRMWARE VERSION: 4.0
* Add indication of chosen group
*
*
* This code is distributed under the GNU Public License
* which can be found at http://www.gnu.org/licenses...
*
* Author: Ceramic https://forum.fonarevka.ru/...
*/
#include<avr/io.h>
#include<avr/delay.h>
#include<avr/interrupt.h>

unsigned char P = 0;
volatile unsigned char B = 0;
unsigned char NB = 0;
volatile unsigned char Cod = 1;
unsigned char adch_val;
unsigned char nV=0;
unsigned char Timer=0;
unsigned char Power=0;
unsigned char Nmode=0;
unsigned char NGroupe=0;
unsigned char Mode[3][2]={{5,32},{112,255},{0b01000,0b11001}};
unsigned char volt [4] = {146, 156, 165, 174};

static inline void delay_()
{
_delay_ms(800);
}

static inline void blink()
{
TCCR0A = 0x00;
PORTB &=~ 0b11001;
delay_();
PORTB |= 0b00001;
delay_();
PORTB &=~ 0b00001;
}

static inline void Off()
{
Power = 0;
OCR0A = 0x00;
TCCR0B = 0x00;
TCCR0A = 0x00;
PORTB = 0x02;
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x00;
MCUCR=0x30;
GIMSK=0x40;
BODCR = 0x03;
BODCR = 0x02;
sei();
asm("sleep");
MCUCR &=~(1<<SE);
TCCR0B = 0x1;
}

static inline void SwitchMode()
{
unsigned char n;
if (B == 0b00000111)
{
for (n = 0; n<5; n++)
{
blink();
if (adch_val<volt[n]) break;
}
delay_();
delay_();
goto m2;
}
else if ((B == 0b00010000) & (Power == 0))
{
Nmode=0; NGroupe=0;
}
else if ((B == 0b00010000) & (Power == 1))
{
NGroupe=0;
if (Nmode<2) Nmode++;
else Nmode=0;
}
else if ((B == 0b00010001) & (Power == 1))
{
if (Nmode>0)
{
if (NGroupe==1) NGroupe=0;
else {NGroupe=1; Nmode--;}
}
}
else if ((B == 0b00000011) & (Power == 0))
{
Nmode=1; NGroupe=0;
}
else if ((B == 0b00000011) & (Power == 1))
{
if (NGroupe==0) NGroupe=1;
else NGroupe=0;
}
else if ((Power == 0) & (B == 0b00000001))
{
Nmode=2; NGroupe=0;
}
else
{
if ((Power == 0) || (B == 0b00000001)) Off();
goto m2;
}
Power = 1;
m2: Cod=0;
n=Mode[Nmode][NGroupe];
if (Power==1)
{
TCCR0A = 0x00;
PORTB &=~ 0b11001;
if (Nmode>1) PORTB |= n;
else
{
TCCR0A = 0x83;
OCR0A = n;
}
}
else Off();
}

void main(void) __attribute__((__noreturn__));
void main(void)
{
DDRB = 0b11001;
CLKPR = 0x80;
CLKPR = 0x01;
ACSR = 0x80;
ADMUX = 0x61;
while(1)
{
if (Cod==1) SwitchMode();
}
}

ISR(INT0_vect)
{
GIMSK=0x00;
if (P==0)
{
P=1;
B=0;
}
else if (P==2) P=3;
else if (P==4) P=6;
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x40;
}

ISR(WDT_vect)
{
GIMSK=0x00;
if (P==0)
{
DDRB = 0x1B;
PORTB &= ~_BV(PB1);
ADCSRA = 0x8F;
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x42;
ADCSRA |= (1<<ADSC);
}
else
{
if ((bit_is_set(PINB,PB1)))
{
if ((P==1) || (P==4))
{
if (P==4)
{
if ( B!=0b10000 ) Cod=1 ;
}
NB=0;
P=0;
}
else
{
if (P==3)
{
B|=(1<<NB++);
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x44;
}
else
{ WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x42;
}
P=4;
}
MCUCR=0x00;
}
else
{
if (P==5)
{
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x00;
}
else
{
if (P==2)
{
P=4;
B=0b10000;
Cod=1;
if (Power==0)
{
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x00;
}
else
{
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x45;
}
}
else if (P==4) Cod=1;
else
{
P=2;
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x44;
}
}
MCUCR=0x03;
}
GIMSK=0x40;
}
}

ISR (ADC_vect)
{
adch_val = ADCH;
ADCSRA = 0;
DDRB = 0x19;
PORTB |= _BV(PB1);
if (adch_val<125)
{
B = 0b00010001;
Cod=1;
if (adch_val<115)
{
nV++;
if (nV>3) B=0b00010000;
}
else nV=0;
}
if ( (Nmode==2) & (NGroupe==1) )
{
Timer++;
}
else Timer = 0;
if (Timer>13)
{
B = 0b00010001;
Cod=1;
Timer = 0;
}
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x61;
GIMSK=0x40;
}

P/S Или кто может добавить в этот файл таймер на 3-4 минуты работу старшего режима со сбросом в режим ниже.
/*
* LED Driver Tactical Button
*
* Created: 09.04.2013 3:36:20
*
* FIRMWARE VERSION: 1.0
*
* This code is distributed under the GNU Public License
* which can be found at http://www.gnu.org/licenses...
*
* Author: Ceramic https://forum.fonarevka.ru/...
*/
#include<avr/io.h>
#include<avr/delay.h>
#include<avr/interrupt.h>

unsigned char P = 0;
volatile unsigned char B = 0;
unsigned char NB = 0;
volatile unsigned char Cod = 1;
unsigned char adch_val;
unsigned char nV=0;
unsigned char Power=0;
unsigned char Nmode=2;
unsigned char Mode[7]={10,20,35,55,100, 170, 0b00001}; //
unsigned char volt [4] = {146, 156, 165, 174};
static inline void delay_()
{

_delay_ms(800);
}

static inline void blink()
{
TCCR0A = 0x00;
PORTB &=~ 0b11001;
delay_();
PORTB |= 0b00001;
delay_();
PORTB &=~ 0b00001;
}

static inline void Off()
{
Power = 0;
Nmode=0; //сбрасываем для включения на первый режим яркости
OCR0A = 0x00;
TCCR0B = 0x00;
TCCR0A = 0x00;
PORTB = 0x02;
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x00;
MCUCR=0x30;
GIMSK=0x40;
BODCR = 0x03;
BODCR = 0x02;
sei();
asm("sleep");
MCUCR &=~(1<<SE);
TCCR0B = 0x1;
}

static inline void SwitchMode()
{
unsigned char n; ///мигалка
if (B == 0b00000111)
{
for (n = 0; n<5; n++)
{
blink();
if (adch_val<volt[n]) break;
}
delay_();
delay_();
goto m2;
}
else if ((B == 0b00000001) & (Power == 1)) //одинарный КК
{
if (Nmode<6) Nmode++; //переключение по кругу
else Nmode = 0;
}
else if ((B == 0b00000011) & (Power == 1)) //двойной КК
{
if (Nmode>1) Nmode--;
}

else if ((Power == 0) & (B == 0b00010000));
else
{
if ((Power == 0) || (B == 0b00010000)) Off();
goto m2;
}
Power = 1;
m2: Cod=0;
n=Mode[Nmode];
if (Power==1)
{
TCCR0A = 0x00;
PORTB &=~ 0b11001;
if (Nmode>5) PORTB |= n;
else
{
TCCR0A = 0x83;
OCR0A = n;
}
}
else Off();
}

void main(void) __attribute__((__noreturn__));
void main(void)
{
DDRB = 0b11001;
CLKPR = 0x80;
CLKPR = 0x01;
ACSR = 0x80;
ADMUX = 0x61;
while(1)
{
if (Cod==1) SwitchMode();
}
}

ISR(INT0_vect)
{
GIMSK=0x00;
if (P==0)
{
P=1;
B=0;
}
else if (P==2) P=3;
else if (P==4) P=6;
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x40;
}

ISR(WDT_vect)
{
GIMSK=0x00;
if (P==0)
{
if (ADMUX == 0x61) //измерение напряжения на делителе
{
DDRB = 0xB;
PORTB &= ~_BV(PB1);//периодическое подключение делителя
}

ADCSRA = 0x8F;
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x00;
ADCSRA |= (1<<ADSC);
}
else
{
if ((bit_is_set(PINB,PB1)))
{
if ((P==1) || (P==4))
{
if (P==4) Cod=1;
NB=0;
P=0;
}
else
{
if (P==3)
{
B|=(1<<NB);
NB++;
}
P=4;
}
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x45;//0.5sec
MCUCR=0x00;
}
else
{
if (P==5)
{
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x00;
}
else
{
if (P==2)
{
P=5;
B|=((1<<NB)<<4);
NB++;
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x00;
}
else
{
P=2;
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x44;//0.125sec
}
}

MCUCR=0x03;
}
GIMSK=0x40;
}
}


ISR (ADC_vect)
{
adch_val = ADCH;
ADCSRA = 0;
DDRB = 0x19;
PORTB |= _BV(PB1);
if (adch_val<146)
{
Cod=1;
B=0b00000011;
if (adch_val<130)
{
nV++;
if (nV>3) B=0b00010000;
}
else nV=0;
}
WDTCR |= (1<<WDCE) | (1<<WDE);
WDTCR = 0x61;
GIMSK=0x40;
}

Спасибо.

[Исправлено: AVTOELEKTRIK, 12.10.2015 в 15:02]
AVTOELEKTRIK вне форума   Ответить с цитированием Вверх
Старый 12.10.2015, 17:07 Автор темы   340
ceramic
Ветеран Фонарёвки
 
Аватар для ceramic
 
Регистрация: 08.10.2011
Последняя активность: 30.03.2024 21:54
Адрес: 哈尔滨
Сообщений: 8022
Сказал(а) спасибо: 934
Поблагодарили: 5193 раз(а) в 2784 сообщениях

По умолчанию Re: Модифицируем народный линейный драйвер для тактовой кнопки

Цитата:
Посмотреть сообщение Сообщение от AVTOELEKTRIK :
где в прошивке ceramic прописан таймер
В самом конце, в обработчике прерываний.
Код:
ISR (ADC_vect)
{
adch_val = ADCH;
ADCSRA = 0;
DDRB = 0x19;
PORTB |= _BV(PB1);
if (adch_val<125)
{
B = 0b00010001;
Cod=1;
if (adch_val<115)
{
nV++;
if (nV>3) B=0b00010000;
}
else nV=0;
}
if ( (Nmode==2) & (NGroupe==1) )   Если старший режим:
{
Timer++;                           увеличиваем счетчик (раз в 8 секунд):
}
else Timer = 0;                    если другой режим -- обнуляем счетчик.
if (Timer>13)                      Если счетчик таймера > 13 (~2 мин)
{
B = 0b00010001;                    генерируем код
Cod=1;                             понижения режима
Timer = 0;                         и сбрасываем счетчик
}
WDTCR |= (1<<WDCE) | (1<<WDE); |
WDTCR = 0x61;                  | Выставляем прерывание на 8 секунд.
GIMSK=0x40;                    |
}
ceramic вне форума   Ответить с цитированием Вверх
Поблагодарили: 1 раз
AVTOELEKTRIK (12.10.2015)
Ответ  Создать новую тему





Copyright ©2007 - 2024, FONAREVKA.RU

Powered by vBulletin®
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot

Правила форума | Отказ от ответственности

Время генерации страницы 0.15147 секунды с 17 запросами