Например TDA7294

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

Текущее время: Пн июл 28, 2025 04:21:15

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


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



Начать новую тему Ответить на тему  [ Сообщений: 163 ]     ... , , , 6, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Сб фев 15, 2014 20:11:50 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Из какого прерывания? Естественно что прерывания для индикации должны идти с частотой не менее 1000Гц, тогда для 4 цифр получишь комфортные 250Гц частоту обновления, а если на 50 остановится - будет жуДко мерцать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 16:27:08 
Сверлит текстолит когтями
Аватар пользователя

Карма: 9
Рейтинг сообщений: 19
Зарегистрирован: Ср мар 10, 2010 22:28:34
Сообщений: 1287
Откуда: Запад Беларуси
Рейтинг сообщения: 0
По ходу таймеру по барабану на эти значения:
Код:
TCCR1A=0x00;
TCCR1B=0x01;
TCNT1H=0xf0;
TCNT1L=0x60;
OCR1AH=0x0f;
OCR1AL=0xa0;
TIMSK=0x40;
Как я их не менял, всё равно в протеусе одинаково показывает. Хоть бы после изменения этих переменных время на индикаторе начинало не точно с таймером протеуса считать...
Может проверить в железе?

_________________
Изображение
Изображение


Последний раз редактировалось Xatrix Вс фев 16, 2014 17:14:46, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 17:03:17 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Это всё хорошо... но ПОЧЕМУ таймер должен реагировать на все эти значения? Ты его настроил так чтобы он реагировал?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 17:19:40 
Сверлит текстолит когтями
Аватар пользователя

Карма: 9
Рейтинг сообщений: 19
Зарегистрирован: Ср мар 10, 2010 22:28:34
Сообщений: 1287
Откуда: Запад Беларуси
Рейтинг сообщения: 0
Как тогда ещё настраивается частота срабатывания прерывания?
Код:
interrupt [TIM1_COMPA] void timer1_compa_isr(void)

Есть ещё какие-то секретные переменные?

_________________
Изображение
Изображение


Последний раз редактировалось Xatrix Вс фев 16, 2014 18:15:59, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 17:36:09 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 1
Частота прерываний от таймера всегда будет одинаковая независимо от значений в регистрах, и есть только одно исключение - режим работы таймера CTC когда он считает до значения равного регистру OCR1A и сбрасывается. Где и чем у тебя обеспечен этот режим работы таймера?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 17:41:05 
Говорящий с текстолитом

Карма: 6
Рейтинг сообщений: 21
Зарегистрирован: Вс июн 16, 2013 18:41:45
Сообщений: 1699
Рейтинг сообщения: 1
Режим normal (ты сбросил все WGM на 0). Таймер считает от 0 до 0xFFFF, и какое бы ты ни записал значение в регистр сравнения, между прерываниями по сравнению всегда будет проходить одно и то же время, а именно время счета от 0 до 0xFFFF.

_________________
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 18:13:01 
Сверлит текстолит когтями
Аватар пользователя

Карма: 9
Рейтинг сообщений: 19
Зарегистрирован: Ср мар 10, 2010 22:28:34
Сообщений: 1287
Откуда: Запад Беларуси
Рейтинг сообщения: 0
т.е. надо было написать всего лишь это:
Код:
TCCR1A=0x00;
TCCR1B=0x0A;
TCNT1H=0xf8;
TCNT1L=0x30;
OCR1AH=0x07;
OCR1AL=0xd0;

и тогда само прерывание будет выглядеть так:
Код:
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
    PORTB=indic[dyn];
    if ((msec<30)&&(dyn==1))PORTD &= ~(1 << 6); else PORTD |= 1<<6; // точка
    PORTB |= 1<<dyn;
    dyn++;
    if (dyn==4)
    {
        dyn=0;
        msec++;
        if (msec==250)
        {
            sec++;
            if (sec>59)
            {
                min++;
                sec=0;
            }
            if (min>59)
            {
                hour++;
                min=0;
            }
            if (hour>23)hour=0;
            msec=0;
            if (PIND.2==0) h=1;
            if (PIND.3==0) m=1;
        }
    }
}

Можно еще ввести переменную для опроса кнопок, чтобы опрос был 2 или 5 раз в секунду.

_________________
Изображение
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 19:29:21 
Говорящий с текстолитом

Карма: 6
Рейтинг сообщений: 21
Зарегистрирован: Вс июн 16, 2013 18:41:45
Сообщений: 1699
Рейтинг сообщения: 1
Xatrix писал(а):
т.е. надо было написать всего лишь это:

Не вдавался в подробности, вроде правильности значения для делителя и для компаратора, но где разрешение прерываний для таймера 1 по сравнению с регистром А (TIMSK = 0x10)? :) Какова необходимость что-либо записывать в TCNT1H и TCNT1L? С точки зрения интервала между прерываниями, начальное значение счетчика по барабану.

Но, оптимизировал бы один момент:
Было:
Код:
if ((msec<30)&&(dyn==1))PORTD &= ~(1 << 6); else PORTD |= 1<<6; // точка

Как сделал бы я:
Код:
if (msec == 30 && dyn == 1) PORTD ^= (1 << 6)

ибо незачем насиловать точку записью того же самого значения, какое было на каждой миллисекунде. Но это так, к слову, оно работало бы и без оптимизации.

А вот существенно - что такое PORTB? Это катодные ключи на семисегментник или анодные на знакоместа? Судя по
Код:
PORTB=indic[dyn];

катодные, а если судить по
Код:
PORTB |= 1<<dyn;

то анодные. Причем если анодные, то работать не будет - "бегущую 1" надо делать так (конечно, если значение старшей тетрады неважно и нули там допустимы)
Код:
PORTB = 1 << dyn;

а c |= у тебя получилось бы вот что:
Первое прерывание dyn == 0 PORTB == 0b00000001
Второе прерывание dyn == 1 PORTB == 0b00000011
Третье прерывание dyn == 2 PORTB == 0b00000111
Четвертое прерывание dyn == 3 PORTB == 0b00001111
ну а далее PORTB == 0b00001111 навсегда никогда больше не меняясь :)

_________________
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 21:05:17 
Сверлит текстолит когтями
Аватар пользователя

Карма: 9
Рейтинг сообщений: 19
Зарегистрирован: Ср мар 10, 2010 22:28:34
Сообщений: 1287
Откуда: Запад Беларуси
Рейтинг сообщения: 0
Darth Cuauhtemoc писал(а):
А вот существенно - что такое PORTB? Это катодные ключи на семисегментник или анодные на знакоместа?

и то, и другое.
0-3 - выходы на ключи
4-7 - выходы на К176ИД2
чтобы вывести время, сперва выполняется функция display, в которой числа разделяются на 2 цифры (десятки и единицы) и по этой цифре в массив indic записываются 1 байтовые числа из массива digits. В массиве digits первые 4 бита - нули, а вторые - цифры и когда я записываю в PORTВ значение массива indic - первые 4 бита порта обнуляются автоматически, тем самым закрывая ключи. Поэтому мне не приходится заботиться о принудительном закрытии транзисторов...

Специально поставил:
Код:
PORTB = 1 << dyn;

и проверил в протеусе. Ничего не работает, а когда вернул на место:
Код:
PORTB |= 1 << dyn;

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

_________________
Изображение
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 21:09:15 
Говорящий с текстолитом

Карма: 6
Рейтинг сообщений: 21
Зарегистрирован: Вс июн 16, 2013 18:41:45
Сообщений: 1699
Рейтинг сообщения: 0
Xatrix писал(а):
В массиве digits первые 4 бита - нули, а вторые - цифры и когда я записываю в PORTВ значение массива indic - первые 4 бита порта обнуляются автоматически, тем самым закрывая ключи. Поэтому мне не приходится заботиться о принудительном закрытии транзисторов...

Код:
PORTB |= 1 << dyn;


Ну в таком случае у тебя все правильно было. Извини, что сбил с толку :)

_________________
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 21:15:56 
Сверлит текстолит когтями
Аватар пользователя

Карма: 9
Рейтинг сообщений: 19
Зарегистрирован: Ср мар 10, 2010 22:28:34
Сообщений: 1287
Откуда: Запад Беларуси
Рейтинг сообщения: 0
Если честно, вот откуда у меня значения для таймера :oops:
Вложение:
timer.png

Обнулил эти:
Код:
TCNT1H=0x00;
TCNT1L=0x00;
Считает, как и прежде. Значит эта прога какая-то...

_________________
Изображение
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 21:29:11 
Говорящий с текстолитом

Карма: 6
Рейтинг сообщений: 21
Зарегистрирован: Вс июн 16, 2013 18:41:45
Сообщений: 1699
Рейтинг сообщения: 0
Xatrix писал(а):
Считает, как и прежде. Значит эта прога какая-то...

Да конечно, куда денется, я ж говорил что начальное значение счетчика для интервала между прерываниями абсолютно параллельно.

_________________
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 22:00:49 
Сверлит текстолит когтями
Аватар пользователя

Карма: 9
Рейтинг сообщений: 19
Зарегистрирован: Ср мар 10, 2010 22:28:34
Сообщений: 1287
Откуда: Запад Беларуси
Рейтинг сообщения: 0
Вместо ЗП-1 поставлю 0,25ГДШ-2 50ом. Пищит отлично. Подойдут ли номиналы резисторов для этого дина?
Или может поставить дин 0,5Вт, 8ом от компьютера?

_________________
Изображение
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вс фев 16, 2014 22:09:15 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Прога-то как раз нормальная, такая частота получилась бы если бы ты загружал указанные значения TCNT1 в КАЖДОМ прерывании по переполнению. Так тоже можно делать, но только в случае когда не нужно точное значение частоты т.к. такой сброс происходит в момент когда таймер уже насчитает несколько тактов - а значит следующее прерывание будет позже прогнозируемого времени. Причем просчитать заранее эти такты довольно сложно, а если есть еще какие-то прерывания в программе - то и вовсе нельзя гарантировать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Пн фев 17, 2014 20:23:33 
Сверлит текстолит когтями
Аватар пользователя

Карма: 9
Рейтинг сообщений: 19
Зарегистрирован: Ср мар 10, 2010 22:28:34
Сообщений: 1287
Откуда: Запад Беларуси
Рейтинг сообщения: 0
Всё супер, отлично. Работает. Вот фотки, кому интересно:
https://www.dropbox.com/sh/n6rx1qe4i1jjp0b/_A2GnfbQx2
Питание от обычной зарядки для телефона. На плате предусмотрена возможность подключения телефонного аккумулятора, но пока не подключил...
Может добавить ещё один бит для будильника, чтобы звенел до тех пор, пока не нажму на кнопку?.. :))
Теперь осталась долгая работа с подсчётом и исправлением погрешности... :)

_________________
Изображение
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Пн фев 17, 2014 20:33:40 
Говорящий с текстолитом

Карма: 6
Рейтинг сообщений: 21
Зарегистрирован: Вс июн 16, 2013 18:41:45
Сообщений: 1699
Рейтинг сообщения: 0
Слушай, и правда супер! Не хуже родных ВЛИшных выглядит :) Респект :) Поздравляю :beer:
Ну, теперь с МК освоился, желаю тебе побольше конструкций хороших :)

Тока в будущем если часы, моя тебе рекомендация - юзать RTC с батарейкой, ибо часы, в которых время сбивается при отключении питания - моветон :)
Ну а если без RTC, то все таки классика - запускать контроллер от набортного RC на высокой частоте, а кварц часовой цеплять на таймер. Так правильнее будет.

_________________
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Пн фев 17, 2014 20:48:44 
Сверлит текстолит когтями
Аватар пользователя

Карма: 9
Рейтинг сообщений: 19
Зарегистрирован: Ср мар 10, 2010 22:28:34
Сообщений: 1287
Откуда: Запад Беларуси
Рейтинг сообщения: 0
Это, конечно понятно, когда дело касается меги8, а у меня используется tiny2313. Там возможностей немного меньше. Да и задача стояла полностью повторить функционал микры КА1016ХЛ1, но на МК, с чем тинька с дешифратором успешно справилась. Можно было бы и без К176ИД2, но для начала пойдёт.. :))

_________________
Изображение
Изображение


Последний раз редактировалось Xatrix Пн фев 17, 2014 21:30:06, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Пн фев 17, 2014 20:55:01 
Друг Кота
Аватар пользователя

Карма: 51
Рейтинг сообщений: 6076
Зарегистрирован: Чт окт 04, 2012 09:46:20
Сообщений: 5248
Откуда: г. Ростов-на-Дону
Рейтинг сообщения: 0
Xatrix, всё хорошо смотрится! Старым корпусам надо давать вторую жизнь. МОЛОДЕЦ!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Пн фев 17, 2014 20:57:13 
Говорящий с текстолитом

Карма: 6
Рейтинг сообщений: 21
Зарегистрирован: Вс июн 16, 2013 18:41:45
Сообщений: 1699
Рейтинг сообщения: 0
Если контроллер покупаешь, а не так, что есть ведро 2313 и надо их использовать - то вообще то контроллер подбирается под задачу, а не задача втискивается в имеющийся на руках контроллер. Т.е. смотришь, сколько надо ног, дабы корпуса не плодить, если часы - можно ли цепануть часовой кварц без внешней логики ну и т.п.
ОРИОН писал(а):
Xatrix, всё хорошо смотрится! Старым корпусам надо давать вторую жизнь. МОЛОДЕЦ!

Да вообще классно :) Я думал, светики бессовестно опошлят винтажный девайс, а нет оказывается. Смотрятся как родные :)

_________________
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Часы на LED индикаторах.
СообщениеДобавлено: Вт фев 18, 2014 03:33:51 
Сверлит текстолит когтями
Аватар пользователя

Карма: 9
Рейтинг сообщений: 19
Зарегистрирован: Ср мар 10, 2010 22:28:34
Сообщений: 1287
Откуда: Запад Беларуси
Рейтинг сообщения: 0
Еще один вопрос.
построечный конденсатор можно ставить на любой вывод из 2-х XTAL или тут тоже есть определённости?

_________________
Изображение
Изображение


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

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


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

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 225


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

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


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