Страница 3 из 4
Re: Atmega8: простенький секундомер
Добавлено: Пн апр 23, 2012 21:46:51
Alexeyslav
Успевают копировать... ну а на самом деле, когда дают задание до этого времени у вас уже должен быть минимальный набор знаний для его выполнения. Если подойти к заданию вдумчиво, то все получится. Тем более что выполняя одно задание у вас появляется опыт для выполнения других аналогичных.
И вообще, если в задании не указано в каком виде выводить время секундомера - то вывести можно в ДВОИЧНОЙ форме, не заморачиваясь с динамической индикацией и сегментными индикаторами.
Re: Atmega8: простенький секундомер
Добавлено: Пн апр 23, 2012 22:37:59
Иринка
Alexeyslav, теоретически должны быть эти знания, а практически их нет, потому что когда лекции диктуют по книге никаких знаний быть не может, книгу я и сама могу прочитать, но ничего там также не пойму, а по заданию должен быть семисегментный индикатор, поэтому придется заморачиваться.
Re: Atmega8: простенький секундомер
Добавлено: Пн апр 23, 2012 23:51:47
O-LED
Иринка писал(а):потому что когда лекции диктуют по книге никаких знаний быть не может, книгу я и сама могу прочитать, но ничего там также не пойму
Банальное оправдание лени.......
Вот тут несколько секундомеров есть. читать тему до конца - не ленится!
http://radiokot.ru/forum/viewtopic.php?p=478747#p478747
Re: Atmega8: простенький секундомер
Добавлено: Вт апр 24, 2012 00:09:33
ILYAUL
Вот Вам рыба - разбирайтесь. Написана на том , что было под рукой и особо не заморачиваясь с оптимизацией кода .Outi outr inr - это макросы , как они действуют найдёте в соответствующем файле и литературе . Написано в STUDIO.
Программа просто считает секунды - без вычисления минут. PDF семисегментника и платформы приложены.
Удачи!
Re: Atmega8: простенький секундомер
Добавлено: Вт апр 24, 2012 13:46:58
Иринка
ILYAUL, программа для Atmega128, но не Atmega8 же, такое вообще не пойдет, совсем другой микроконтроллер.
Re: Atmega8: простенький секундомер
Добавлено: Вт апр 24, 2012 13:53:22
ILYAUL
Иринка писал(а):ILYAUL, программа для Atmega128, но не Atmega8 же, такое вообще не пойдет, совсем другой микроконтроллер.
Ошибаетесь
Re: Atmega8: простенький секундомер
Добавлено: Вт апр 24, 2012 14:04:52
Иринка
O-LED, прочитала тему, но для Atmega8 нет ничего, какие-то tini, впервые вижу такой микроконтроллер, конец темы смотрела уже ранее, когда меня направили туда посмотреть примерную схему, теперь прочитала всю тему, но ни одной подходящей проги под мой микроконтроллер нет.
Re: Atmega8: простенький секундомер
Добавлено: Вт апр 24, 2012 14:08:41
Иринка
ILYAUL, в чем я ошибаюсь? Разве она не для Atmega128? Это же другой микроконтроллер, а мне нужен именно Atmega8, но не 128.
Re: Atmega8: простенький секундомер
Добавлено: Вт апр 24, 2012 14:08:48
bensaratov
Ира вот это почитай сразу все станет на свои места
Re: Atmega8: простенький секундомер
Добавлено: Вт апр 24, 2012 14:10:38
ploop
ILYAUL тебе же выложил.
Tiny, mega - это всё разные семейства одной архитектуры - AVR. Atmega8 от ATMega128 отличается только объёмом памяти и другими вещами, которые тут не используются. В остальном это одно и то же.
Re: Atmega8: простенький секундомер
Добавлено: Вт апр 24, 2012 14:31:48
Engineer_Keen
Да и кто мешает поменять в начале кода m128def.inc на m8def.inc
Re: Atmega8: простенький секундомер
Добавлено: Вт май 01, 2012 15:33:24
ILYAUL
Всем здравствуйте!
И с праздником!
Сидя на даче и пока шёл дождь , решил подправить код секундомера.
И теперь не врублюсь никак , почему при переходе частоты обновления динамической индикации с 85гц на 56гц секундомер начинает пропускать 1 секунду из 5 . На 85- всё нормально.
Re: Atmega8: простенький секундомер
Добавлено: Вт май 01, 2012 15:46:28
Alexeyslav
Пропускает счет секунд, или пропускает индикацию? Ну вроде как показывает 1, 2, 2 а потом сразу 4 но время само по себе идет точно?
Re: Atmega8: простенький секундомер
Добавлено: Вт май 01, 2012 15:58:32
ILYAUL
Счёт не пропускает - т.е. 1 2 3 4 5 ..... 20 21 и т.д. Но даже на глаз видно что медленне работает . И вкл. компьютерный секундомер видно что на 5 сек он показывает 4 на 10 сек 8 и т.д. А при 85 всё тютелька в тютельку . Там в коде есть , где меняю значение . И оно не скрыто под прерыванием . Да иобработчики прерывний одни из самых коротких из возможных - можно ещё и запоминания SREG убрать без потерь.
Re: Atmega8: простенький секундомер
Добавлено: Вт май 01, 2012 16:14:13
Alexeyslav
Так ведь к этой частоте и привязан счет секунд! Скорость у тебя изменилась на 3/4 от номинала, соотношение 65 к 85 тоже подозрительно близку к 3/4 ... это и навело на такую простую мысль.
Тебе надо пересчитать коэфициент счета, он должен быть где-то в обработчике динамической индикации(возможно это прерывание таймера по переполнению или сравнению) и скорей всего равен 85 или кратному ему значению(170?).
Re: Atmega8: простенький секундомер
Добавлено: Вт май 01, 2012 23:53:27
ILYAUL
Два обработчика прерываний - один по переполнению - секунды, второй по сравнению - динамика.
Timer работает в режиме - Normal (Free timer) Прерывания одно от другого не зависяще и всегда считает от 0 до FF. Каждое чётное число TCNT - прерывание динамики для 85 гц или каждое 3-тье для 56 . В первом случае прерывание секунд совпадает с прерыванием динамики , но сбоя нет и так каждый раз . Во- втором случае , только каждое второе прерывание секунд совпадёт с динамикой и идёт сбой. Прескалер Timerа настроен на деление до 512 гц соответствено частота динамики или 256/3 или 170/3. Не врубаюсь где засада.
Re: Atmega8: простенький секундомер
Добавлено: Ср май 02, 2012 10:52:25
Alexeyslav
Если обработка динамической индикации идет в прерывании и занимает в сумме хотябы чуть больше 250 тактов - возможен пропуск прерывания...или как-то так.
Re: Atmega8: простенький секундомер
Добавлено: Ср май 02, 2012 11:21:52
ILYAUL
Alexeyslav писал(а):Если обработка динамической индикации идет в прерывании и занимает в сумме хотябы чуть больше 250 тактов - возможен пропуск прерывания...или как-то так.
Есть же код выше . В прерываниях устанавливаются только флаги , что сие событие произошло.
И всё.
Re: Atmega8: простенький секундомер
Добавлено: Ср май 02, 2012 13:50:41
Alexeyslav
А каким образом было сформировано 65Гц для динамической индикации? Может проверяется условия кратности 3 и осуществляется выход из прерывания до того как будет произведена проверка на четность для подсчета секунд? Или признак установленный обрабатывается один который первым был проверен, а обнуляются оба сразу.
вот в исходнике накопал "cbr Flags,1<<fl_Second" что-то мне подсказывает, что это неправильное применение инструкции. Вторым аргументом идет НОМЕР БИТА, а вы подставляете туда маску этого бита. Компилятор может и не обнаружить этого прикола, а проблемы будут.
Аналогично надо исправить cbr/sbr инструкции по всему тексту программы, может в этом и была причина.
Re: Atmega8: простенький секундомер
Добавлено: Ср май 02, 2012 16:01:45
ILYAUL
Команды установки или сброса битов регистра sbr/cbr устанавливают или сбрасывают тот бит или биты которые Вы указали не трогая то что не нужно. Собственно это "родственики" команды eor Сами биты описаны в *.inc файле