Часы-термометр на Atmega16 и Nokia3310 lcd

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
within
Открыл глаза
Сообщения: 52
Зарегистрирован: Ср сен 02, 2009 21:39:06
Откуда: Николаев

Re: Часы-термометр на Atmega16 и Nokia3310 lcd

Сообщение within »

Да, кстати. А разве клавиатура от телефона была сделана не по матричной схеме, типа 3х4?
А у меня своя плата и куча свободных портов. Нафига мне матрицу делать?
- Прерывание же опрашивает клавиатуру. Плюс антидребезг, плюс контроль много-нажатия клавиш и прочие плюшки.
Мне нужно будет держать кнопку максимум секунду для срабатывания? Не удовлетворяет т.з.
Ну какая тебе разница сколько лет я держу в руках паяльник и клаву?
А разница в том, что ты истерически кричал о продолжительности обработчика прерывания. А проблемка оказалась в другом) Железо учи, специалист(с большой буквы)) Кварц я не заземлил. Он и ловил помехи как сумасшедший. А разница в заполнении цикла while объясняется расположением устройства - возле монитора, далеко от него. Низкая вероятность совпадения, но совпало, ... . Так что, ... .
Очень жаль, когда люди упираются лбом в что-то, хотя это и не логично совсем. А свою логику не объясняют.
Реклама
mas123
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Re: Часы-термометр на Atmega16 и Nokia3310 lcd

Сообщение mas123 »

within писал(а):
Да, кстати. А разве клавиатура от телефона была сделана не по матричной схеме, типа 3х4?
А у меня своя плата и куча свободных портов. Нафига мне матрицу делать?
Поня-я-ятно, считаешь себя умнее всех. А не подумал, почему же эти глупые создатели телефонов делают матрицу? Да и вообще все клавиатуры с кучкой кнопок сделаны матрицей?
Ладно, я понял - с контроллерами ты дел не имел вообще, и embedded системы не входят в твой "широкий круг"
within писал(а):
- Прерывание же опрашивает клавиатуру. Плюс антидребезг, плюс контроль много-нажатия клавиш и прочие плюшки.
Мне нужно будет держать кнопку максимум секунду для срабатывания? Не удовлетворяет т.з.
Т.е. не умеешь.
У меня стеклоподъемник опрашивает кнопки в прерывании и все работает по условиям "пока нажата клавиша", "если кратко нажали клавишу"...
Не веришь мне - "нивапрос". Посмотри на свою клаву от компа, там матрица. В твоих любимый игрушках ты и долго клавиши жмешь и коротко - всё обрабатывает.
within писал(а):
Ну какая тебе разница сколько лет я держу в руках паяльник и клаву?
А проблемка оказалась в другом) Железо учи, специалист(с большой буквы)) Кварц я не заземлил. Он и ловил помехи как сумасшедший. А разница в заполнении цикла while объясняется расположением устройства - возле монитора, далеко от него.
Как тебе сказать - железо я знаю хорошо, как-никак контроллеры и процессоры требуют это.
Хм, ты обвиняешь меня в своем ламерстве? Гениально.
- А ты сам предоставил схему / фотку устройства? Чтобы все могли увидеть проблему в железе?
- ты где-нить упоминал о связи содержимого main() и о координатах расположения устройства?
- в 6-м сообщении темы я советовал подключить осцилл на живом приборе + подключить к сигналу "1 сек". Сделав это, ты сразу бы увидел что период прерывания не 1000 мс
- я тебя спрашивал о наводке на ногу PD5, обо по коду она могла влиять на время.

Нашел причину - ну и молодец. :beer:

Так скрытничаешь и боишься огласить свой "широкий круг" + постоянное упоминание преподов в нескольких темах - с полной ясностью показываешь и свой возраст и опытность.
А свой сарказм "специалист(с большой буквы)" перемести себе в /dev/ass 8) Сделай сначала часы, которые будут несколько лет тиках без твоего вмешательства - тогда поговорим... о создании промышленных систем с синхронизацией времени с точностью +/- десяток наносекунд :)))

Я понимаю источник твоего сарказма - те самые 8 пунктов. 8) Надеюсь, ты их исправил уже.
Вот тебе еще:
9 ) Ты очень удачно сделал часы в этом году. У тебя есть целых 4 года чтобы исправить ошибку... если часики столько проживут :)

Код: Выделить всё

   if((mes==1)||(mes==3)||(mes==5)||(mes==7)||(mes==8)||(mes==10)||(mes==12))  //если в месяце 31 день, то устанавливаем макс. количество дней 31
     {                                                                         //
      max_den=31;                                                              //
     }                                                                         //
   if((mes==4)||(mes==6)||(mes==9)||(mes==11)) //если в месяце 30 день, то устанавливаем макс. количество дней 30
     {                                         //
      max_den=30;                              //
     }                                         //
   if(mes==2)     //если в месяце 28 день, то устанавливаем макс. количество дней 28
     {            //
      max_den=28; //
     }            //
   if(den>max_den) //если дней становиться больше, чем дней в текущем месяце, то ставим первое число и переходим на следующий месяц
     {             //
      den=1;       //
      mes++;       //
     }             //
Во-первых специалисты с любой буквы это оптимизируют, убрав кучу лишних сравнений.
А во-вторых... ходят слухи, что некие тёмные силы портят календарь - добавляют лишний день в феврале :twisted:
Поэтому специалисты делают примерно так:

Код: Выделить всё

    char cMaxDay = 31;
    if( cMonth == 1 )
    { // февраль: 28 / 29 дней
        cMaxDay = 29; // високосный год
        if( g_dataTime.m_nYear & 0x03 )
        { // обычный год
            cMaxDay = 28;
        }
    }else
    {
        if( cMonth == 3 || cMonth == 5
        || cMonth == 8 || cMonth == 10 )
        {
            cMaxDay = 30;
        }
    }
ЗЫ: я даже не надеюсь, что мои часы доживут до 2100 года, поэтому обработка високосности упрощена :)
Реклама
Аватара пользователя
within
Открыл глаза
Сообщения: 52
Зарегистрирован: Ср сен 02, 2009 21:39:06
Откуда: Николаев

Re: Часы-термометр на Atmega16 и Nokia3310 lcd

Сообщение within »

Поня-я-ятно, считаешь себя умнее всех. А не подумал, почему же эти глупые создатели телефонов делают матрицу? Да и вообще все клавиатуры с кучкой кнопок сделаны матрицей?
Ну, и почему же? Объясни)
В твоих любимый игрушках ты и долго клавиши жмешь и коротко - всё обрабатывает.
Несколько лет уже не играю) Так что ты способен сильно ошибаться в своих суждениях.
- А ты сам предоставил схему / фотку устройства? Чтобы все могли увидеть проблему в железе?
Я думал, что проблема в коде. Но, не в прерывании. А ты бараньим лбом своим упёрся в него. Я говорю - не там, ты говоришь - там. Принял бы это как должное и посоветовал бы обратить внимание на другие аспекты - может кварц начинает работать нестабильно. А то, что я настаивал на while, то значит прерывание точно исключил, а вот в нём засомневался. Посмотрёв на него, мог бы сказать, что там нет чего-то такого, что может повлиять особо. Задержка времени может запрещать прерывания? В твоём компиляторё(не ассемблер) она запрещает? Думаю, что нет. А Вижн что? Умнее всех? Перепишет функцию с коренными изменениями свойств?

Код: Выделить всё

- я тебя спрашивал о наводке на ногу PD5, обо по коду она могла влиять на время.
И как изменение уровня может повлиять на точность часов? Блесни умом ещё раз.
Так скрытничаешь и боишься огласить свой "широкий круг" + постоянное упоминание преподов в нескольких темах - с полной ясностью показываешь и свой возраст и опытность.
А свой сарказм "специалист(с большой буквы)" перемести себе в /dev/ass Сделай сначала часы, которые будут несколько лет тиках без твоего вмешательства - тогда поговорим... о создании промышленных систем с синхронизацией времени с точностью +/- десяток наносекунд
Процитируй упоминания преподов в разных темах, не будь голословен. И какой мой возраст? Что такое, сарказм задел?) Как ты ко мне, так и я к тебе. Ты знаешь много, но ума - нет никакого. В чем разница, подумай сам. А поговорим мы о таких системах тогда, когда я захочу это сделать. Но мне это как-то не нужно совсем. Так что не выпендривайся. Хотя можем поговорить о ковке металла, к примеру. Контроллеры - одна часть из обширной области, о которой говорил. Что ты делал, помимо контроллеров? Я не говорю, что ты, кроме программирования, ничего не умеешь. Просто интересуюсь. И лет тебе сколько?
Во-первых специалисты с любой буквы это оптимизируют, убрав кучу лишних сравнений.
Во первых, сначала что-то делают работоспособное, а потом оптимизируют. Специалисты Форда Мустанг не сразу создали.
Очень жаль, когда люди упираются лбом в что-то, хотя это и не логично совсем. А свою логику не объясняют.
mas123
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Re: Часы-термометр на Atmega16 и Nokia3310 lcd

Сообщение mas123 »

within писал(а):
Да и вообще все клавиатуры с кучкой кнопок сделаны матрицей?
Ну, и почему же? Объясни)
потому что ресурсов много не бывает - это хех, основной закон программирования :))
В данном случае - свободных ног много не бывает. Ты используешь 13 кнопок == захватил 13 выводов.
А для опроса 12 кнопок достаточно 8 выводов.
within писал(а):Несколько лет уже не играю) Так что ты способен сильно ошибаться в своих суждениях.
Способен, и даже не скрываю этого. Даже больше - я рад что способен ошибаться.
within писал(а):
- А ты сам предоставил схему / фотку устройства? Чтобы все могли увидеть проблему в железе?
Я думал, что проблема в коде. Но, не в прерывании. А ты бараньим лбом своим упёрся в него. Я говорю - не там, ты говоришь - там. Принял бы это как должное и посоветовал бы обратить внимание на другие аспекты - может кварц начинает работать нестабильно.
Отвечу твоими же словами - в main() пусто, значит нечему глючить. Остается только прерывание. Я говорю там, а ты бараньим лбом уперся в пустой цикл. Принял бы как должное - подключил осцилл на живом приборе и увидел бы сразу период секундного импульса.

А по поводу задержки: если уж ты начал уверять, что дело в main(), то и начали разбираться кто может вырубать прерывания. Раз нет ничего кроме delay() - надо проверять и её.
within писал(а):

Код: Выделить всё

- я тебя спрашивал о наводке на ногу PD5, обо по коду она могла влиять на время.
И как изменение уровня может повлиять на точность часов? Блесни умом ещё раз.
У тебя по коду нажатие клавиши на PD5 изменяет время и перезапускает таймер. Да, я знаю что это где-то глубоко в меню.
within писал(а):
Так скрытничаешь и боишься огласить свой "широкий круг" + постоянное упоминание преподов в нескольких темах
Процитируй упоминания преподов в разных темах, не будь голословен.
Уже в этой теме минимум 3 раза "Ты преподом не работаешь?", "Видать, давно это было....Я понял, что ты сейчас не преподаешь.", "Сегодня проконсультировался с преподом знакомым".
Тема "Точность хода часов на Atmega8" - "Вам только преподами работать)"
Дальше искать лень, ибо достаточно :)
within писал(а):И какой мой возраст?
Я предполагал 15-17 лет, но последующий поиск по форуму сместил цифру на 20-23.
within писал(а):Что такое, сарказм задел?)
Представляешь - нет :)
within писал(а):Ты знаешь много, но ума - нет никакого. В чем разница, подумай сам.
Ещё, ещё скажи что-нить подобное! :)))
within писал(а):Хотя можем поговорить о ковке металла, к примеру.
Увы, в этом я совершенно не копенгаген.
within писал(а):Контроллеры - одна часть из обширной области, о которой говорил.
Увы, контроллеры ты не знаешь. Ты их только начинаешь изучать. Иначе бы не было таких вопросов о прерывании. Фраза типа "А у меня своя плата и куча свободных портов" пропадает после 2-3 проектов.
within писал(а):Что ты делал, помимо контроллеров? Я не говорю, что ты, кроме программирования, ничего не умеешь. Просто интересуюсь.
Гм, на прерыдущей странице я расписывал что делал :)
* На Спектруе на моем софте была создана SPBZxNet, я же писал оболочку выпускаемой нами еженедельной газеты. Это не контролеры :)
Разработка софта на ПЦ (это тоже не контролер).
* Работа с сетью (FTP + локалка): полная автоматизация своей предыдущей работе, моя прога фффкалывает без меня уже лет 7.
* Ещё FTP-сканер, но уже free'шная прожка. Всё ещё пользуются ею в этих инетах, и приходится новые фичи добавлять.
* БД клиент-серверная на прошлой же работе. С гениальным ТЗ: "вот есть прога, которая все делает, но она глючит и неправильно работает. Хотим такую же, но быструю, без глюков и чтоб правильно печатало на этих принтерах". :shock: Лет 6-7 прога отпахала.
* Одна из программ в нашем комплексе АСКУЭ. Там и работа с БД-сервером (даже двумя), и анализ данным и дорасчёт... Как потом сказал начальник отдела, мне он выдал самую сложную программу. Хм, надеюсь, что он пошутил :facepalm:
* Кучка программ для нашего железа. Больше мелочевка всякая, на пол дня работы. Но есть и система программирвоания всех комплексов.
* Ну, и наши приборчики. Там не контролер, DSP. Много памяти, большие частоты, RTOS, TCP/IP, С++. Но, в железо закапываться приходится постоянно.

Или тебя интересует не программная сфера жизни? Извини, но я программист, а не многостаночник.
Паять и рисовать схемы умею, но это как хобби. Рулить умею, вон за отпуск 4 тыщщи км накатали :)
А, ну ещё телефонию чутку проектировал. И там тоже писал прожки для автоматизации тупого ручного труда.
within писал(а):И лет тебе сколько?
Мне-то целых 37. Как видишь, я не боюсь ни возраст назвать, ни чем занимался. В тоже время как ты "не будешь хвалиться", рассказывая сказки про "широкую область изделий".
within писал(а):Во первых, сначала что-то делают работоспособное, а потом оптимизируют.
Любой программист, а тем более работающий с контролерами _такое_ сразу напишет правильно, ибо это просто классика.
Начинающий - может такое допустить, но новичок и не скрывает своего незнания.
Эээ, а как можно вообще не знать о високосном феврале? А вывод одного символа через sprintf() - это за гранью добра и зла.
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «AVR»