Darth Cuauhtemoc писал(а):А зачем собственно нужно подключать не все катоды?
Похоже хочет полностью гасить лампу, подавая на ИД1 неиспользуемый код (специфекты, регулировка яркости и тд).
Волосатый
Боюсь после 32768 прерываний в секунду, контроллеру больше ничего не успеть.
По поводу коррекции - обычной программной коррекции раз в сутки с шагом в 0,1 сек, хватит чтоб часики тикали очень точно (при комнатных температурах). У меня например больше 2х секунд в год не убегают.
O-LED, ну почему, при кварце на 11МГц период срабатывания таймера 336 тактов процессора. Я не специалист по ассемблеру, но по моему скромному мнеию обрабатывающий код вида
O-LED писал(а):Похоже хочет полностью гасить лампу, подавая на ИД1 неиспользуемый код (специфекты, регулировка яркости и тд).
Тогда ему надо просто динамическую индикацию сделать, с анодными ключами, и рулить эффектами через анодные ключи.
Либо, если все же нужно именно статическую, вместо 155ИД1 поставить 561ИД1 и ключи на MPSA42 или MMBTA42.
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.
Волосатый писал(а):мне пришла в голову идея для варианта "часы без RTC".
А зачем так, можно же настроить прерывание по сравнению с некоторым числом, это и будет n, которое можно будет подстраивать, и его не надо будет отсчитывать программно.
Но IMHO часы без RTC, если они работают при комнатной температуре - это все же лучше подстроечным кондерчиком крутить, правда, в AVR так не получится, поскольку эти кондеры уже есть у него в животе, но можно сделать внешний генератор на инверторе. Правда, для настройки частотомер точный нужен, чтобы не ждать слишком долго, пока уход станет заметным.
А как вообще делается это в промышленных часах?
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.
Волосатый писал(а):... настроить этот таймер без делителя, чтоб частота напрямую шла на прерывание, в котором каждые n прерываний секунда инкрементировалась, и что бы это n можно было менять! Т.о. можно программно подстроить ход кварца Что бы часы много не жрали когда питание пропадает, настраивать таймер на обычную работу и вогнать в сон, или просто поставить аккумулятор с рассчетом на автономную работу в течение нескольких суток.
В общем-то так и делаю, только вместо часового кварца, при котором коррекция будет очень грубой (изменение секундного периода возможно с дискретом ~30,5 µs) пользуюсь более высокочастотными кварцами (например, 4'608кГц, при котором изменение секундного периода возможно с дискретом ~0,217 µs). За одним решается задача организации динамической индикации. Например, в моих часах частота системы контроллер + кварц составила после второй итерации 4'609'437Гц; частота полной индикации 75Гц, что для каждого индикатора составит 3333,(3) µs. Получается, что 299 периодов таймер отсчитывает 15365, а последний 300-ый период 15302 тиков. Результат виден на частотомере.
Darth Cuauhtemoc писал(а):
А почему исходников нет?
Там банальные часы, кто может - сам напишет, кто нет, тому не нужно. Кто хочет научится, тому помогу.
Egorka писал(а):
А в динамике никак нельзя ее сделать,растраты 3 дефицитных ИД1 не будет? Или те регистры только статически могут работать, из-за низкой скорости обмена последовательного порта?
Думаю можно, просто задача ставилась статика, SPI самый быстрый из последовательных интерфейсов. К155ИД1 совсем не дефицит, а вот 133 да.
Darth Cuauhtemoc писал(а):
Но если контроллер только предстоит купить, лучше взять Мегу8
Ну если брать AVR то лучше уж 88. Tiny13A была взята из-за интереса впихну в неё или нет.
Apparatchik писал(а):Tiny13A была взята из-за интереса впихну в неё или нет.
Да тут и гадать не надо Любая тинька пойдет, где есть SPI. Цепляем 74НС595 на MOSI для индикаторов, этим же регистром сканировать кнопки - уйдет 4 вывода (SCK, MOSI, защелка - на вывод, сканирование - на ввод).
Apparatchik писал(а):Ну если брать AVR то лучше уж 88.
Не знаю, мои часы влезли в Мегу8, динамическая индикация 6 разрядов, 4 разряда на катоды (155ИД1), четыре пина на чтение кнопок, один пин на прерывание от DS1307, два пина на I2C и еще два (это уже в будущем) на 1-Wire (правда, будет утрачен UART, но он мне сто лет не нужен), один на разделители часов/минут/секунд (я не ставил). И еще осталось 2 пина про запас.
Последний раз редактировалось Darth Cuauhtemoc Чт июл 25, 2013 12:18:40, всего редактировалось 3 раза.
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.
Darth Cuauhtemoc писал(а):А зачем собственно нужно подключать не все катоды?
O-LED писал(а):Похоже хочет полностью гасить лампу, подавая на ИД1 неиспользуемый код (специфекты, регулировка яркости и тд).
Ну в общем то как и сказали - в будущем хотел полностью гасить индикаторы. Сейчас, пока еще не все катоды подключены, я и заметил этот эффект.
В общем поставлю анодные ключи. Спасибо!
Волосатый писал(а): ну почему, при кварце на 11МГц период срабатывания таймера 336 тактов процессора. Я не специалист по ассемблеру, но по моему скромному мнеию обрабатывающий код займет до 50 машинных тактов, что при данной частоте будет около 15% времени процессора. А контроллеру в часах особо делать-то нечего
Я не говорю что это не возможно в принципе. Но, если камень авр, то скорее всего тактировать его захочется от встроенного 8мгц генератора, плюс дин индикация, всякие опросы кнопок, звуки и тд, плюс "писатели" зачастую далеко не специалисты по ассемблеру...... Короче выйдет всё в прытык, и с "затыками"
Был у меня такой алгоритм, не понравился, муторная настройка была, сделал по-другому
Берётся произвольный кварц и произвольный делитель, который делит частоту и изредка вызывает прерывания. Единственное, что надо знать, сколько единиц времени прошло от прерывания до прерывания и сколько этих единиц в одной, скажем, секунде (если нам нужна такая дискретность). В прерывании к регистру прибавляем число единиц времени которое прошло между прерываниями и всё. А в основном цикле это число делим на число единиц времени в секунде (можно просто сравнивать: как оказалось больше - секунда прошла и в этот регистр загружаем остаток, вернее разность между значением регистра и числа единиц времени в секунде). Так конечно получить строгие секундные интервалы не получится - будет страшный джиттер. А вот в долговременном плане - точность будет вполне приличная. Алиасинг.
Здравствуйте, давно тут не появлялся, нашел свои индикаторы, решил опять что-то сделать... есть ли схема счетчика у кого-нибудь? может получится тахометр сделать
Давеча собрал часики, но вот индикаторы, на мой взгляд, тускловаты на выходной емкости стоит напряжение 170 вольт. По замерам на самих лампах, между анодом лампы и катодом активной цифры, напряжение не превышает 20 вольт , анодные сопротивления 4,7К.
З.Ы. схемки выкладовал на пару, тройку постов выше...
Уважаемые коты! Никто не поможет с одним индикатором В-5092. Просто буду делать платку для одного хорошего человека, думаю его многие знают, это Валерий, злючий админ с сайта Технари. Просто у него только 5 таких индикаторов, а на 6-и как-то лучше часики, чем на 4-х. Не бесплатно конечно...
Darth Cuauhtemoc писал(а):Любая тинька пойдет, где есть SPI
Нету там аппаратного SPI, это раз, и флеша там всего 1024 байта, а с таким объемом не все так просто, пришлось i2c библиотеку на асме правда найденую в интернете, также пришлось неиспользуемые регистры перефирии (например OCR0B) использовать в качестве переменных.
Darth Cuauhtemoc писал(а):И еще осталось 2 пина про запас
Не в пинах дело, если посмотреть даташит, то можно увидеть, что 88ая стает нога в ногу с восьмой. Там на один больше PWM, внешнее прерывание почти на любую ногу, частота 20МГц, быстрый переход на более емкие 168ую и 328ую (отличаются лишь памятью) и т.д., и главное цена такая же.
Apparatchik писал(а):Нету там аппаратного SPI, это раз, и флеша там всего 1024 байта
Не в пинах дело, если посмотреть даташит, то можно увидеть, что 88ая стает нога в ногу с восьмой. Там на один больше PWM, внешнее прерывание почти на любую ногу, частота 20МГц, быстрый переход на более емкие 168ую и 328ую (отличаются лишь памятью) и т.д., и главное цена такая же.
Ну аппаратного нет, программно не проблема сделать, код несложный. А вот то что памяти всего 1К, это хуже. Тут действительно приходится за каждый байт бороться.
Если цена такая же, есть резон, но ко мне уже едут STM32 Хотя их как то жалко даже на часы пускать Но для часов у меня есть Меги8 и DS1307, штук семь еще можно сделать. Жалею теперь, что в свое время заказал этих АВРок с запасом Но для часов пойдет.
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.
Tvala писал(а):между анодом лампы и катодом активной цифры, напряжение не превышает 20 вольт
У вас наверно динамическая индикация? тогда мерить мультиметром на лампах что-либо бесполезно, оценить напряжение можно только осциллографом, ну или тыкать мультиметром через высоковольтный диод и электролит эдак на 10мкФ*200В. Но показания будут чуть занижены.
Возможно у вас большая пауза между гашением одной и зажиганием следующей лампы, или лампы такие, попадались мне тусклые ин-4 и ин-14 но такие одна на пятьдесят.
Darth Cuauhtemoc писал(а):едут STM32 Хотя их как то жалко даже на часы пускать
Они стоют дешевле этих мег, чо их жалеть-то? Правда у них нет EEPROM поэтому всякие настройки придется писать в DS1307 или поставить внешнюю EEPROM
Опыт приходит сразу после того, как он был нужен...
Волосатый писал(а):Они стоют дешевле этих мег, чо их жалеть-то? Правда у них нет EEPROM поэтому всякие настройки придется писать в DS1307 или поставить внешнюю EEPROM
Не дешевле, но тем не менее стольник - это чуть ли не даром за такое Жалко не денег, а множества незадействованных возможностей. А искуственно придумывать применение как то не хочется. А DS1307 не нужен - там RTC набортный, возможно, что как и в DS1307, есть батарейная память, даташит пока еще не смотрел. Но если что, на I2C епромку подвесить не проблема.
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.