Например TDA7294

Форум РадиоКот • Просмотр темы - Помогите с асинхронным таймером на AtMega8a
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 08:18:48

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 71 ]    , , , 4
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Помогите с асинхронным таймером на AtMega8a
СообщениеДобавлено: Сб фев 24, 2018 11:30:53 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Сб фев 17, 2018 00:08:56
Сообщений: 91
Рейтинг сообщения: 0
Залил код от metan, за 14,5 часов ушло аж на 4 минуты, видимо все же придется делать свою "убогую" коррекцию.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с асинхронным таймером на AtMega8a
СообщениеДобавлено: Сб фев 24, 2018 14:34:07 
Вымогатель припоя

Карма: 6
Рейтинг сообщений: 167
Зарегистрирован: Ср янв 06, 2010 10:01:46
Сообщений: 550
Рейтинг сообщения: 0
Jack-Sidr писал(а):
код от metan, за 14,5 часов ушло аж на 4 минуты

Ничего не понимаю. Тут что-то явно не так. Кусочки кода, которые а вам дал, выдраны из полностью рабочего проекта.
Эти куски полностью созвучны с аппноутом производителя AVR134
Вот хорошая статья на это тему:
http://microsin.net/programming/AVR/avr ... timer.html


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с асинхронным таймером на AtMega8a
СообщениеДобавлено: Сб фев 24, 2018 18:23:40 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
А чего тут понимать, ширпотреб китайский на 33кГц. Только вот не понятно где он может использоваться?
Такой же стоит в их платах DS1307.

У меня за 175 часов убежали на 4 секунды, на этом 33кГц.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Помогите с асинхронным таймером на AtMega8a
СообщениеДобавлено: Вс фев 25, 2018 13:04:17 
Встал на лапы
Аватар пользователя

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Сб фев 17, 2018 00:08:56
Сообщений: 91
Рейтинг сообщения: 0
Странность в том, что два разных рабочих кода, которые по идеи эквивалентные, дают разный уход по времени


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите с асинхронным таймером на AtMega8a
СообщениеДобавлено: Вс фев 25, 2018 14:28:18 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Нет не странно.
Любая операция записи в счетный регистр блокирует работу таймера на время одного периода тактового сигнала таймера,
а именно на время примерно 0,0038 секунды если считать за отправную точку кварц 33кГц.
0,0038 * 3600 = 13,7 секунды за час
В моем случае, я два раза в секунду обращаюсь к регистру, 13,7 * 2 = 27,4 секунды за час.

Либо так, либо искать нормальный кварц на 32768Гц.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Помогите с асинхронным таймером на AtMega8a
СообщениеДобавлено: Вт фев 27, 2018 11:46:14 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4220
Откуда: Ижевск
Рейтинг сообщения: 0
Решил, для себя, разобраться с работой в асинхронном режиме и POWER SAVE. Для начала, загрузил в m8 выложенный выше код Test_8_2, в котором в секундном прерывании вывел стробик на с лапы PB5 (просто удобный доступ на плате). Период, по мне, мало похож на секунду, да ещё при токе потребления >5мА (встроенный RC 8МГц). Оставил в покое эту программу.
В программе ниже на PB5 формируется минутный интервал. Ток потребления < 10мкА. Стоящая в седьмом разряде числа 59'999'99x,x просто радует глаз.
Вложение:
TEST_M8.zip [1.17 KiB]
Скачиваний: 112
FUSE-биты встроенный RC 8МГц CKSEL=0100, SUT10=10, CKOPT=0. Проверил с N=64, получил тоже самое, только ток возрос до 15мкА.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с асинхронным таймером на AtMega8a
СообщениеДобавлено: Ср фев 28, 2018 09:17:59 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
akl в Test_8 было по совпадению TIM2_COMP.
Какая разница, вводим переменную и корректируем как хотим, к примеру так
Спойлер
Код:
interrupt [TIM2_COMP] void timer2_ovf_isr(void)
{
// Place your code here
   if(millis_t== 0) {
    OCR2A=127; }
   if(++millis_t ==3600) // допустим раз в 3600 секунд коррекция
   {
     millis_t=0;
     OCR2A = 127+-сколько надо; // один тик таймера примерно равен 0,0078 секунды, +учитываем эти же 0,0078сек на перенастройку таймера
   }
    sec++;
    if (sec == 60)
      {
          sec = 0;
          min ++;
      };

    if (min == 60)
      {
          min = 0;
          hour ++;
      };
    if (hour > 23)
      {
         hour = 0;
      };
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с асинхронным таймером на AtMega8a
СообщениеДобавлено: Ср фев 28, 2018 12:27:46 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4220
Откуда: Ижевск
Рейтинг сообщения: 0
Вы делаете ошибку, полагая частоту часового кварца равной 32'768Гц. У меня, к примеру, генерирует на частоте 32'776Гц. Получается, что программа, отсчитав 256*128=32'768 говорит - секунда прошла и, 32776-32768=8 тактов как не бывало, а это ~244мкс. За час коррекцией OCR2 не отделаетесь. Поэтому, кто-то ставит подстроечный конденсатор и крутит его до посинения, кому-то и так сойдёт, кто-то, типа меня, занимается программной коррекцией. :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с асинхронным таймером на AtMega8a
СообщениеДобавлено: Чт мар 01, 2018 18:16:00 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
akl не знаю на сколь у меня кварц.
Спойлер
Код:
// Timer/Counter 2 initialization
// Clock source: Crystal on TOSC1 pin
// Clock value: PCK2/256
// Mode: CTC top=OCR2A
// OC2A output: Disconnected
// OC2B output: Disconnected
ASSR=(0<<EXCLK) | (1<<AS2);
TCCR2A=(0<<COM2A1) | (0<<COM2A0) | (0<<COM2B1) | (0<<COM2B0) | (1<<WGM21) | (0<<WGM20);
TCCR2B=(0<<WGM22) | (1<<CS22) | (1<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2A=127;   
OCR2B=0x00;


interrupt [TIM2_COMPA] void timer2_compa_isr(void)
{
// Place your code here
   if (++t.second==60)
   {
      t.second=0;
      if (++t.minute==60)
      {
         t.minute=0;
         if (++t.hour==24)
         {
            t.hour=0;
            if (++t.date==31)
            {
               t.date=1;
            }
         }
      }
  }
}

 
6 часов прошло, как бы секунда в секунду. 6 часов мало, надо больше.
И да, ток потребления 6-7мкА.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с асинхронным таймером на AtMega8a
СообщениеДобавлено: Вт мар 06, 2018 07:53:49 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
akl после многих экспериментов мои часики приняли вид
Спойлер
Код:
// Timer/Counter 2 initialization
// Clock source: Crystal on TOSC1 pin
// Clock value: PCK2/256
// Mode: CTC top=OCR2A
// OC2A output: Disconnected
// OC2B output: Disconnected
ASSR=(0<<EXCLK) | (1<<AS2);
TCCR2A=(0<<COM2A1) | (0<<COM2A0) | (0<<COM2B1) | (0<<COM2B0) | (1<<WGM21) | (0<<WGM20);
TCCR2B=(0<<WGM22) | (1<<CS22) | (1<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2A=127;   
OCR2B=0x00;


interrupt [TIM2_COMPA] void timer2_compa_isr(void)
{

   if(millis_t== 0)
    OCR2A=127;
   if(++millis_t ==680) 
   {
     millis_t=0;
     OCR2A = 129;
   }

   if (++t.second==60)
   {
      t.second=0;
      if (++t.minute==60)
      {
         t.minute=0;
         if (++t.hour==24)
         {
            t.hour=0;
            if (++t.date==31)
            {
               t.date=1;
            }
         }
      }
  }
}
Корректировка была один раз в 680 секунд.
За 60 часов наблюдается отставание в 1 секунду, +-там милли секунды не контролирую.
Опять ексель, опять расчеты, и получаю что корректировать надо уже через 853 секунды.
Меняю в прошивке 680 на 853, опять сброс счетчика и ждемс.....

Это как решать уравнение о трех неизвестных, без спец приборов это очень долго и мучительно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите с асинхронным таймером на AtMega8a
СообщениеДобавлено: Вт мар 06, 2018 08:20:58 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
без спец приборов это очень долго и мучительно.

может пригодится:
у меня давно "ходят" радиокотовские часики на меге16 тоже с асинхронным таймером
http://radiokot.ru/circuit/digital/home/103/
коррекцию производил всего два раза - уже несколько лет не трогаю
Цитата:
Коррекция хода производится один раз в сутки, в 00-00. Если часы спешат к примеру на 5 сек в сутки, то в 00-00-00 время установится в 23-59-55, если же часы отстают на 5 сек, то в 00-00-00 время установится в 00-00-05. Шаг коррекции – 0,1 сек. Максимальная коррекция – 59,9 сек/сутки.

исходник присутствует


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 71 ]    , , , 4

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: nicruzhov и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y