Например TDA7294

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





Текущее время: Вт апр 23, 2024 11:04:03

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


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



Начать новую тему Ответить на тему  [ Сообщений: 8273 ]     ... , , , 390, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 30, 2017 14:17:27 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 12
Зарегистрирован: Чт апр 04, 2013 22:22:57
Сообщений: 1357
Откуда: Белгород, РФ
Рейтинг сообщения: 0
А что там может не получится, период 6 секунд, соответственно индикатор покажет 60/6=10 оборотов в минуту.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 30, 2017 15:07:17 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
130/10=13 не такой уж и большой размах - ставь небошьшую частоту таймера и всё будет ок. (а какая точность, до единиц или до 0,1 об/мин).

Добавлено after 3 minutes 24 seconds:
есть у меня код для тахометра от 120 до 7200 об/мин с фильтрами, но довольно быстрый, (останется коэффициенты подправить) вечером поищу.

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 30, 2017 15:12:08 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
Можно пойти даже дальше и виртуально расширить разрядность таймера. Считать число переполнений счётчика и прибавлять остаток из счётного регистра.
Примерно так
very_long_interval = ovf_cnt*65536 + TCNT1;


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 30, 2017 21:49:20 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ну вот, что обещал, код мой написан в кодевижне, но выдран из проекта (могут быть небольшие нестыковки)
Спойлерчастотомер работает на Т1 в нормальном режиме + прерывание по совпадению, время переполнения не меньше макс времени между импульсами
настройка тахометра и обработчик прерывания
Код:
//тахометр
#define ContRegen   32      //max количество импульсов
#define TimUsr      0x10000 //max время усреднения 0x10000=0,5c (для данной частоты таймера)
#define T1St        TCCR1B=0x83
#define T1Sp        TCCR1B=0x80

volatile unsigned long int Speed;
volatile unsigned int  LastMeas[ContRegen];      //показание счетчика в начале замера (ну и в конце прошлого замера)
volatile unsigned char ContVriten;               //количество достоверных замеров

// Timer1 output compare A interrupt service routine
// полсекунды небыло импульса - остановим таймер
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
 {
 ContVriten=0;
 Speed=0;
 T1Sp;
 }

эта часть запускается не реже чем максимальная частота импульсов:
Код:
static unsigned char MeasN;                //номер замера
if (TIFR&(1<<5))                        //ТАХОМЕТР! (поступил импульс)
    {
    if ((ICR1-OCR1A)>1000)
       {
       MeasN=(++MeasN)%ContRegen;
       LastMeas[MeasN]=ICR1-OCR1A-1;
       OCR1A=ICR1-1;
       ContVriten+=(ContVriten<=ContRegen)? 1:0;
       }
    else {T1St;}; 
    TIFR&=(1<<5);
    };

эта часть запускается когда нужны показания
Код:
{
  Speed=0;
  i=0;
  while (i+2<ContVriten) //2-количество пропускаемых импульсов в начале измерения
    {
      unsigned int t=LastMeas[((ContRegen+MeasN-i)%ContRegen)];
      if (Speed+t>TimUsr) break;
      Speed+=t;
      i++;
    };
  if (i)  Speed=((unsigned long int)i*125000*60)/Speed;//125000 - частота Т1 в герцах
};

количество замеров для усреднения ограничивается ContRegen и TimUsr (смотря что наступит раньше)


Добавлено after 2 minutes 50 seconds:
частотомер работает на входе захвата таймера Т1

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 30, 2017 22:16:45 
Открыл глаза

Зарегистрирован: Вс июн 07, 2009 23:16:16
Сообщений: 73
Рейтинг сообщения: 0
Пока проблема вот в чем. Делаю так.
2313 работает на 8 МГц от встроенного генератора.
На Таймере0 крутится динамическая индикация и опрос одной кнопки.

Таймер1 настраиваем на 7,813 кГц, прерывание по переполнению (8,38 сек).

В процедуре обработки внешнего прерывания (срабатывания щелевой оптопары)
unsigned long int freq=TCNT1; // сохраняем в переменную текущее значение счетчика Таймера1
TCNT1=0;
// обнуляем счетчик

//вычисляем значение периода Т, сек. freq = 15748 для 30 об/мин к примеру.

Т = (7813 / freq); // Т = 7813 / 15748 получаем дробное число 0,496 сек. (Тут Я и застрял!, Все что меньше нуля и после запятой отваливается)

// находим N, об/мин.

N = (1/Т)*60;


Показывать достаточно целое количество оборотов.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс июл 30, 2017 22:35:44 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
RoTToR писал(а):
Тут Я и застрял!, Все что меньше нуля и после запятой отваливается
Дак Вам же
RoTToR писал(а):
Показывать достаточно целое количество оборотов.

Пусть отваливаются дроби :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн июл 31, 2017 04:21:56 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 12
Зарегистрирован: Чт апр 04, 2013 22:22:57
Сообщений: 1357
Откуда: Белгород, РФ
Рейтинг сообщения: 0
Т = (7813 / freq); // Т = 7813 / 15748 получаем дробное число 0,496 сек. (Тут Я и застрял!, Все что меньше нуля и после запятой отваливается)
// находим N, об/мин.

N = (1/Т)*60;

Показывать достаточно целое количество оборотов.


N=(freq*60/7813)=120,9 об/мин


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн июл 31, 2017 04:34:28 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
конечно, сначала умножать, а потом делить, чтобы в дроби не уйти и не быть там съеденным :) можно даже скобками выделирь очерёдность.

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн июл 31, 2017 15:34:56 
Первый раз сказал Мяу!

Зарегистрирован: Пн мар 29, 2010 12:19:06
Сообщений: 38
Рейтинг сообщения: 0
Подскажите, а в CVAVR возможна работа с данными EEPROM напрямую?
Т.е. я могу, скажем, проинициализировать две переменные как-то так:
eeprom unsigned char epp1=10;
eeprom unsigned char epp2=20;

а потом в коде оперировать ими без переприсваивания другим переменным?
Например :
if (epp1<epp2) операция1,операция2....;
if (epp1>0) операция1,операция2....;

Спасибо!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн июл 31, 2017 17:21:27 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
да

Добавлено after 52 seconds:
только запись в них долгая, а так всё норм

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн июл 31, 2017 22:19:14 
Открыл глаза

Зарегистрирован: Вс июн 07, 2009 23:16:16
Сообщений: 73
Рейтинг сообщения: 0
Всем спасибо! Все заработало. Стыдно за свою глупость.....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 01, 2017 19:10:05 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Чт июн 24, 2010 20:58:59
Сообщений: 375
Рейтинг сообщения: 0
Здравствуйте! А вот кто подскажет,зачем например считают до скольки например досчитает регистр TCNT, если это может быть назначенная какая-нибудь переменная? В чем тут смысл подсчета именно таймера,а не переменной?Кто разъяснит?

Добавлено after 2 minutes 52 seconds:
Собственно спросил ,ттак как нужно для работы вот этого пульта https://ru.aliexpress.com/item/Hot-Sell ... 0.0.naVpHu
заодно,кто подскажет какой в нем протокол и на какой несущей частоте?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 01, 2017 19:22:20 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
просто пока считает таймер - процессор может что нибудь другое делать.

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 01, 2017 19:26:18 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Чт июн 24, 2010 20:58:59
Сообщений: 375
Рейтинг сообщения: 0
То есть исключительно для экономии процессорного времени? Но если программа не так велика то разницы в работе скорее всего никакой не будет?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 01, 2017 19:33:13 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
таймер настраивать проще на нужную частоту, вход захвата имеет аппаратный антидребезг, да и аппетит приходит во время еды: сейчас проц свободен, а потом придумаешь чем занять...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 01, 2017 20:52:32 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Чт июн 24, 2010 20:58:59
Сообщений: 375
Рейтинг сообщения: 0
А как прокомментируете вот такой способ получения преырывистого звонка для обычного буззера со встроенным генератором?

void ring_a (void)
{
if(alb>=0&&alb<=4)in=0;
if(alb>=5&&alb<=9)in=1; //прерывистый звонок
if(alb>=10)alb=0;
if(ik>=0&&ik<=49)ip=0;
if(ik>=50&&ik<=99)ip=1;
if(ik>=100)ik=0;
alarm_a=(ip&in);
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср авг 02, 2017 00:03:13 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Таймер считает на аппаратном уровне. Ни одним программным способом Вы не сможете посчитать, например, такты микроконтроллера.

PS: причём тут "способ получения прерывистого звонка", расписанный выше, совершенно не понятно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср авг 02, 2017 00:19:43 
Это не хвост, это антенна
Аватар пользователя

Карма: 17
Рейтинг сообщений: 12
Зарегистрирован: Чт апр 04, 2013 22:22:57
Сообщений: 1357
Откуда: Белгород, РФ
Рейтинг сообщения: 0
То есть исключительно для экономии процессорного времени? Но если программа не так велика то разницы в работе скорее всего никакой не будет?


На высокой частоте программный счет вообще невозможен.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср авг 02, 2017 06:44:02 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
ra9ust писал(а):
А как прокомментируете вот такой способ получения преырывистого звонка для обычного буззера со встроенным генератором?

Муть какая-то. Диапазоны 0..4 и 5..9 вложены в 0..49 и 50..99. Лучше в двоичной системе это делать:
Код:
uint8_t ring;
цикл (аппаратное прерывание или обычный while - неважно) {
  if (++ring & (0b00001001)
    // поднимаем ножку
  else
    // опускаем ножку
}

Естественно, биты можно сдвигать левее, чтобы получить нужную частоту включения (0b00000001) на фоне флага разрешено/запрещено (0b00001000).
Как это работает - понять очень просто. Переменная ring крутится с переполнением от 0 до 255, бипер включается при соответствующих установленных битах ring:
Спойлер
Код:
...
00100
00101
00110
00111
01000
01001 - писк
01010
01011 - писк
01100
01101 - писк
01110
01111 - писк
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001 - писк
11010
11011 - писк
11100
11101 - писк
11110
11111 - писк
...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср авг 02, 2017 07:35:01 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Чт июн 24, 2010 20:58:59
Сообщений: 375
Рейтинг сообщения: 0
ra9ust писал(а):
А как прокомментируете вот такой способ получения преырывистого звонка для обычного буззера со встроенным генератором?

Муть какая-то. Диапазоны 0..4 и 5..9 вложены в 0..49 и 50..99. Лучше в двоичной системе это делать:
Код:
uint8_t ring;
цикл (аппаратное прерывание или обычный while - неважно) {
  if (++ring & (0b00001001)
    // поднимаем ножку
  else
    // опускаем ножку
}

Естественно, биты можно сдвигать левее, чтобы получить нужную частоту включения (0b00000001) на фоне флага разрешено/запрещено (0b00001000).
Как это работает - понять очень просто. Переменная ring крутится с переполнением от 0 до 255, бипер включается при соответствующих установленных битах ring:
Спойлер
Код:
...
00100
00101
00110
00111
01000
01001 - писк
01010
01011 - писк
01100
01101 - писк
01110
01111 - писк
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001 - писк
11010
11011 - писк
11100
11101 - писк
11110
11111 - писк
...

Муть, но работает, ведь всё понятно там. А вот двоичный способ пожалуй возьму на заметку, спасибо!


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 43


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

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


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