реклама на сайте
подробности

 
 
23 страниц V  « < 20 21 22 23 >  
Closed TopicStart new topic
> Как распознать кратковременное выключение на Tiny13, Управление режимами фонарика кнопкой питания
ARV
сообщение Jan 20 2010, 05:15
Сообщение #316


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(alevnew @ Jan 20 2010, 07:23) *
Мануалы настоящие любители трудностей читают только в состоянии крайнего отчаяния. Это не наш метод smile.gif
настоящее отчаяние возникает после 600? biggrin.gif видимо, здесь не читатели мануалов собрались, а писатели...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jan 20 2010, 05:35
Сообщение #317


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(Rst7 @ Jan 20 2010, 02:00) *
Мда. 300+ постов. Один(!) человек, который прочитал мануал.

Я счастлив, что он прочитал мануал от чего-то, что в руках не держал. А как быть с фонарями, которые есть у меня?

Вот вам программа для алгоритма по коротким включениям:
Код
#include <ioavr.h>
#include <intrinsics.h>

volatile __regvar __no_init unsigned char mode @ 15;
volatile __regvar __no_init unsigned char power_low_counter @ 14;
volatile __regvar __no_init unsigned int adc_c @ 12;

__no_init __eeprom unsigned char ee_mode;

#ifdef __cplusplus
extern "C" {
#endif
char __low_level_init()
{
  CLKPR|=(1<<CLKPCE);
  CLKPR=3; //Снизим тактовую частоту до 9.6/8 МГц
  
  DDRB=(0<<DDB5)|(0<<DDB4)|(0<<DDB3)|(0<<DDB2)|(1<<DDB1)|(1<<DDB0);
  PORTB=(0<<PORTB5)|(0<<PORTB4)|(0<<PORTB3)|(0<<PORTB1)|(0<<PORTB0);
  
  ACSR=(1<<ACD); //Analog Comparator Disable
  DIDR0=(1<<ADC0D)|(0<<ADC1D)|(1<<ADC2D)|(1<<ADC3D)|(1<<AIN1D)|(1<<AIN0D);
  PRR=(1<<PRTIM0)|(0<<PRADC);
  
  ADMUX=(1<<REFS0)| 1; // Vref=1.1V , ADC1
  ADCSRA=(1<<ADEN)|(0<<ADSC)|(1<<ADATE)|(0<<ADIF)|(1<<ADIE)|(0<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
  ADCSRB=0;      
  
  return 1;
}
#ifdef __cplusplus
}
#endif

#pragma vector=ADC_vect
__interrupt void ADC_Interrupt(void)
{  
  switch(mode)
  {
    case 0: // Яркость 100%
      if(ADC<600) power_low_counter++; else power_low_counter=0;
      if(power_low_counter>100) { ee_mode=0; mode=2; power_low_counter=0; }
      PORTB|=(1<<PORTB1);
      PORTB|=(1<<PORTB0);      
      break;
    case 1: // Яркость 40%
      if(ADC<600) power_low_counter++; else power_low_counter=0;
      if(power_low_counter>100) { ee_mode=1; mode=2; power_low_counter=0; }
      PORTB|=(1<<PORTB0);
      PORTB&=~(1<<PORTB1);
      break;
    case 2: // Яркость 4%
      if(ADC<558) power_low_counter++; else power_low_counter=0;
      if(power_low_counter>100) { ee_mode=2; mode++; }
      PORTB&=~(1<<PORTB1);
      PORTB|=(1<<PORTB0);
      __delay_cycles(10);      
      PORTB&=~(1<<PORTB0);
      break;
    default: // Защитное выключение
      PORTB&=~(1<<PORTB1);
      PORTB&=~(1<<PORTB0);
      MCUCR=(1<<SE)|(2<<SM0); //Power Down
      __sleep();
      break;
  }
};

int main( void )
{  
  __delay_cycles(100000);
  adc_c=0;  
  mode=ee_mode;
  switch(mode)
  {
    case 0:
    case 1:
      ee_mode++;
      break;
    default:
      mode=2;      
      ee_mode=0;
      break;
  }  
  power_low_counter=0;

  ADCSRA|=(1<<ADSC);  
  __enable_interrupt();
  for(;;)  
  {  
    MCUCR=(1<<SE)|(1<<SM0); //Sleep
    __sleep();
    if(adc_c<16000) adc_c++;
    else
    {
      if(adc_c==16000)
      {
        __disable_interrupt();
        PORTB&=~(1<<PORTB1);
        PORTB&=~(1<<PORTB0);
        adc_c++;        
        ee_mode=mode;
        __delay_cycles(75000);
        __enable_interrupt();
      }
    }  
  }
}
Go to the top of the page
 
+Quote Post
stells
сообщение Jan 20 2010, 06:19
Сообщение #318


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



VladislavS, Вы драйвера так и не зашунтировали? хотелось бы уже отбросить и забыть про этот вариант. правда в какую сторону дальше думать - непонятно.
а алгоритм ARV, как я понял, так никто и не попробовал?

Сообщение отредактировал stells - Jan 20 2010, 06:24
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 20 2010, 06:44
Сообщение #319


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
А как быть с фонарями, которые есть у меня?


И тем не менее. Несмотря на некоторую избитость этих слов, проверьте внимательно, может все-таки время включения (а не выключения) пляшет?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Petka
сообщение Jan 20 2010, 07:25
Сообщение #320


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Rst7 @ Jan 20 2010, 09:44) *
И тем не менее. Несмотря на некоторую избитость этих слов, проверьте внимательно, может все-таки время включения (а не выключения) пляшет?

а ещё лучше выложите видео на какой-нибудь youtube.
Go to the top of the page
 
+Quote Post
ARV
сообщение Jan 20 2010, 08:40
Сообщение #321


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(stells @ Jan 20 2010, 09:19) *
а алгоритм ARV, как я понял, так никто и не попробовал?
попробовал... unsure.gif я сам... боюсь, что мои эксперименты с STK500 давали эффект все же за счет остаточного напряжения на емкостях по питанию - там их куча... когда я стал передергивать питание перемычкой V.TARGET - эффект исчез sad.gif это был выстрел в молоко sad.gif


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Jan 20 2010, 08:42
Сообщение #322





Guests






Не совсем понятно, что, в конечном итоге, желает автор данной темы.
Переключение режимов по времени включения питания - сложности никакой не представляет. Алгоритмы переключения по времени выключения - также были предложены. Причем, вполне работоспособные, в том числе - в рамках приведенной схемы фонарика. Хотите непременно узнать, как работает данное конкретное "китайское чудо"? А оно Вам нужно?
Пока только видно настойчивое желание реализовать переключение по "любимому состоянию" регистров. IMHO, это метод изначально "кривой" и ненадежный, и не заслуживает того, чтобы на него опираться. По крайней мере, я бы никогда так делать не стал. Тем более в серийных изделиях. Ну, если автор темы хочет, то как говорится - флаг в руки. smile.gif
Go to the top of the page
 
+Quote Post
stells
сообщение Jan 20 2010, 08:58
Сообщение #323


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(ARV @ Jan 20 2010, 11:40) *
мои эксперименты с STK500 давали эффект все же за счет остаточного напряжения на емкостях по питанию - там их куча...

да, экспериментировать проще на конкретной платке, я из-за питания тоже накололся, пришел к выводу, что за сотню-другую миллисекунд и РОН, и ячейки ОЗУ теряют значение и принимают любимое - единицы секунд на этом эффекте не поймать

Цитата(@Ark @ Jan 20 2010, 11:42) *
Не совсем понятно, что, в конечном итоге, желает автор данной темы.
Переключение режимов по времени включения питания - сложности никакой не представляет. Алгоритмы переключения по времени выключения - также были предложены. Причем, вполне работоспособные, в том числе - в рамках приведенной схемы фонарика. Хотите непременно узнать, как работает данное конкретное "китайское чудо"? А оно Вам нужно?

так-то оно так, но очень любопытно все-таки узнать, как реализовано переключение по времени отключения в оригинальной прошивке
Go to the top of the page
 
+Quote Post
ARV
сообщение Jan 20 2010, 09:11
Сообщение #324


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(stells @ Jan 20 2010, 11:58) *
так-то оно так, но очень любопытно все-таки узнать, как реализовано переключение по времени отключения в оригинальной прошивке
а вот мне чисто из академического интереса хотелось бы получить надежный алгоритм решения задачи, даже не алгоритм, а конкретный код, применимый всегда или почти всегда smile.gif главное, одинаковый результат, а процесс его достижения не обязательно должен совпадать...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Jan 20 2010, 09:13
Сообщение #325





Guests






Цитата
но очень любопытно все-таки узнать, как реализовано переключение по времени отключения в оригинальной прошивке

Точно это можно узнать, только считав прошивку. Либо спросить непосредственно у автора. smile.gif
В любом случае, imho, метод будет основан на RC-цепочке с постоянной времени порядка 1с, в том или ином виде.
Других методов (если не считать "просадку" батареи и саморазогрев) я что-то не вижу. Может кто предложит?
Go to the top of the page
 
+Quote Post
stells
сообщение Jan 20 2010, 09:32
Сообщение #326


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(ARV @ Jan 20 2010, 12:11) *
а вот мне чисто из академического интереса хотелось бы получить надежный алгоритм решения задачи

ну для АВР с делителем на питании и внутренним АЦП алгоритм понятен и опробован. он сбоил, но видимо потому, что контроллер отключался спонтанно. если ловить момент отключения питания и оставлять кондер УВХ в одинаковом состоянии, то сбои исчезнут
Go to the top of the page
 
+Quote Post
МП41
сообщение Jan 20 2010, 09:36
Сообщение #327


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



Может заняться вопросом поиска сколупывающего прошивку устройства? wink.gif


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Jan 20 2010, 14:14
Сообщение #328


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата(SysRq @ Jan 20 2010, 02:03) *
Этот алгоритм уже предлагали в #106.
...
Перевод не верен.

106-пост начинается со слов "Я бы сделал так...". Я же привел алгоритм с сайта, на котором продается данный драйвер, а не привел свою собственную реализацию алгоритма.
А дословно я и не переводил. Просто пересказал принцип. Хотя соглашусь, что между "переключить" и "оставить" в данном случае есть небольшая разница.

Цитата(SysRq @ Jan 20 2010, 02:03) *
... эти инструкции или не про этот фонарик, или автор темы чего-то недоговаривает (о времени включения никто ничего не спрашивал)...

Цитата(VladislavS @ Jan 20 2010, 07:35) *
Я счастлив, что он прочитал мануал от чего-то, что в руках не держал. А как быть с фонарями, которые есть у меня?

2 VladislavS:
Я и не утверждал, что это алгоритм именно вашего драйвера. Я привел алгоритм драйвера по указанной ссылке (которых схемотехнически полностью повторяет Ваш)
Но, честно говоря, я сомневаюсь, что для данного девайса китайцы наштамповали кучу разных прошивок. Хотя кто их знает. Китайцев много smile.gif
Еще есть вероятность того, что писатели мануала ошиблись.

И все-таки, попробуйте по приведенному алгоритму попереключать. В частности, сменить группу режимов. Если группа менятся не будет, то прошивка точно не та.
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jan 20 2010, 15:51
Сообщение #329


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Нет там никаких групп режимов...
А что-то попробовать смогу только посоле того как вот эту штуку починю.
A-50
Go to the top of the page
 
+Quote Post
Александр Куличо...
сообщение Jan 20 2010, 18:34
Сообщение #330


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 6-03-06
Из: Украина, г. Винница
Пользователь №: 15 017



Цитата
Нет там никаких групп режимов...
А что-то попробовать смогу только посоле того как....

Поражает Ваша категоричность. Еще не пробывали, а уже заявляете, что групп нету.
Go to the top of the page
 
+Quote Post

23 страниц V  « < 20 21 22 23 >
Closed TopicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 07:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.0152 секунд с 7
ELECTRONIX ©2004-2016