Atmega8: простенький секундомер
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Atmega8: простенький секундомер
Успевают копировать... ну а на самом деле, когда дают задание до этого времени у вас уже должен быть минимальный набор знаний для его выполнения. Если подойти к заданию вдумчиво, то все получится. Тем более что выполняя одно задание у вас появляется опыт для выполнения других аналогичных.
И вообще, если в задании не указано в каком виде выводить время секундомера - то вывести можно в ДВОИЧНОЙ форме, не заморачиваясь с динамической индикацией и сегментными индикаторами.
И вообще, если в задании не указано в каком виде выводить время секундомера - то вывести можно в ДВОИЧНОЙ форме, не заморачиваясь с динамической индикацией и сегментными индикаторами.
- Реклама
Re: Atmega8: простенький секундомер
Alexeyslav, теоретически должны быть эти знания, а практически их нет, потому что когда лекции диктуют по книге никаких знаний быть не может, книгу я и сама могу прочитать, но ничего там также не пойму, а по заданию должен быть семисегментный индикатор, поэтому придется заморачиваться.
Re: Atmega8: простенький секундомер
Банальное оправдание лени.......Иринка писал(а):потому что когда лекции диктуют по книге никаких знаний быть не может, книгу я и сама могу прочитать, но ничего там также не пойму
Вот тут несколько секундомеров есть. читать тему до конца - не ленится! http://radiokot.ru/forum/viewtopic.php?p=478747#p478747
Последний раз редактировалось O-LED Вт апр 24, 2012 00:24:12, всего редактировалось 2 раза.
KIT
Re: Atmega8: простенький секундомер
Вот Вам рыба - разбирайтесь. Написана на том , что было под рукой и особо не заморачиваясь с оптимизацией кода .Outi outr inr - это макросы , как они действуют найдёте в соответствующем файле и литературе . Написано в STUDIO.
Программа просто считает секунды - без вычисления минут. PDF семисегментника и платформы приложены.
Удачи!
Программа просто считает секунды - без вычисления минут. PDF семисегментника и платформы приложены.
Удачи!
- Вложения
-
- second.rar
- (681 КБ) 344 скачивания
Re: Atmega8: простенький секундомер
ILYAUL, программа для Atmega128, но не Atmega8 же, такое вообще не пойдет, совсем другой микроконтроллер.
- Реклама
Re: Atmega8: простенький секундомер
ОшибаетесьИринка писал(а):ILYAUL, программа для Atmega128, но не Atmega8 же, такое вообще не пойдет, совсем другой микроконтроллер.
Re: Atmega8: простенький секундомер
O-LED, прочитала тему, но для Atmega8 нет ничего, какие-то tini, впервые вижу такой микроконтроллер, конец темы смотрела уже ранее, когда меня направили туда посмотреть примерную схему, теперь прочитала всю тему, но ни одной подходящей проги под мой микроконтроллер нет.
Re: Atmega8: простенький секундомер
ILYAUL, в чем я ошибаюсь? Разве она не для Atmega128? Это же другой микроконтроллер, а мне нужен именно Atmega8, но не 128.
- bensaratov
- Поставщик валерьянки для Кота
- Сообщения: 2060
- Зарегистрирован: Ср дек 29, 2010 00:08:44
- Откуда: Москва
- Контактная информация:
Re: Atmega8: простенький секундомер
Ира вот это почитай сразу все станет на свои места
- Вложения
-
- DOC000141313.pdf
- (50.93 КБ) 330 скачиваний
ни что в этой жизни не вечно!!!
Re: Atmega8: простенький секундомер
ILYAUL тебе же выложил.
Tiny, mega - это всё разные семейства одной архитектуры - AVR. Atmega8 от ATMega128 отличается только объёмом памяти и другими вещами, которые тут не используются. В остальном это одно и то же.
Tiny, mega - это всё разные семейства одной архитектуры - AVR. Atmega8 от ATMega128 отличается только объёмом памяти и другими вещами, которые тут не используются. В остальном это одно и то же.
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Atmega8: простенький секундомер
Да и кто мешает поменять в начале кода m128def.inc на m8def.inc
Re: Atmega8: простенький секундомер
Всем здравствуйте!
И с праздником!
Сидя на даче и пока шёл дождь , решил подправить код секундомера.
И теперь не врублюсь никак , почему при переходе частоты обновления динамической индикации с 85гц на 56гц секундомер начинает пропускать 1 секунду из 5 . На 85- всё нормально.
И с праздником!
Сидя на даче и пока шёл дождь , решил подправить код секундомера.
И теперь не врублюсь никак , почему при переходе частоты обновления динамической индикации с 85гц на 56гц секундомер начинает пропускать 1 секунду из 5 . На 85- всё нормально.
- Вложения
-
- second.rar
- (10.92 КБ) 254 скачивания
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Atmega8: простенький секундомер
Пропускает счет секунд, или пропускает индикацию? Ну вроде как показывает 1, 2, 2 а потом сразу 4 но время само по себе идет точно?
Re: Atmega8: простенький секундомер
Счёт не пропускает - т.е. 1 2 3 4 5 ..... 20 21 и т.д. Но даже на глаз видно что медленне работает . И вкл. компьютерный секундомер видно что на 5 сек он показывает 4 на 10 сек 8 и т.д. А при 85 всё тютелька в тютельку . Там в коде есть , где меняю значение . И оно не скрыто под прерыванием . Да иобработчики прерывний одни из самых коротких из возможных - можно ещё и запоминания SREG убрать без потерь.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Atmega8: простенький секундомер
Так ведь к этой частоте и привязан счет секунд! Скорость у тебя изменилась на 3/4 от номинала, соотношение 65 к 85 тоже подозрительно близку к 3/4 ... это и навело на такую простую мысль.
Тебе надо пересчитать коэфициент счета, он должен быть где-то в обработчике динамической индикации(возможно это прерывание таймера по переполнению или сравнению) и скорей всего равен 85 или кратному ему значению(170?).
Тебе надо пересчитать коэфициент счета, он должен быть где-то в обработчике динамической индикации(возможно это прерывание таймера по переполнению или сравнению) и скорей всего равен 85 или кратному ему значению(170?).
Re: Atmega8: простенький секундомер
Два обработчика прерываний - один по переполнению - секунды, второй по сравнению - динамика.
Timer работает в режиме - Normal (Free timer) Прерывания одно от другого не зависяще и всегда считает от 0 до FF. Каждое чётное число TCNT - прерывание динамики для 85 гц или каждое 3-тье для 56 . В первом случае прерывание секунд совпадает с прерыванием динамики , но сбоя нет и так каждый раз . Во- втором случае , только каждое второе прерывание секунд совпадёт с динамикой и идёт сбой. Прескалер Timerа настроен на деление до 512 гц соответствено частота динамики или 256/3 или 170/3. Не врубаюсь где засада.
Timer работает в режиме - Normal (Free timer) Прерывания одно от другого не зависяще и всегда считает от 0 до FF. Каждое чётное число TCNT - прерывание динамики для 85 гц или каждое 3-тье для 56 . В первом случае прерывание секунд совпадает с прерыванием динамики , но сбоя нет и так каждый раз . Во- втором случае , только каждое второе прерывание секунд совпадёт с динамикой и идёт сбой. Прескалер Timerа настроен на деление до 512 гц соответствено частота динамики или 256/3 или 170/3. Не врубаюсь где засада.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Atmega8: простенький секундомер
Если обработка динамической индикации идет в прерывании и занимает в сумме хотябы чуть больше 250 тактов - возможен пропуск прерывания...или как-то так.
Re: Atmega8: простенький секундомер
Есть же код выше . В прерываниях устанавливаются только флаги , что сие событие произошло.Alexeyslav писал(а):Если обработка динамической индикации идет в прерывании и занимает в сумме хотябы чуть больше 250 тактов - возможен пропуск прерывания...или как-то так.
И всё.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Atmega8: простенький секундомер
А каким образом было сформировано 65Гц для динамической индикации? Может проверяется условия кратности 3 и осуществляется выход из прерывания до того как будет произведена проверка на четность для подсчета секунд? Или признак установленный обрабатывается один который первым был проверен, а обнуляются оба сразу.
вот в исходнике накопал "cbr Flags,1<<fl_Second" что-то мне подсказывает, что это неправильное применение инструкции. Вторым аргументом идет НОМЕР БИТА, а вы подставляете туда маску этого бита. Компилятор может и не обнаружить этого прикола, а проблемы будут.
Аналогично надо исправить cbr/sbr инструкции по всему тексту программы, может в этом и была причина.
вот в исходнике накопал "cbr Flags,1<<fl_Second" что-то мне подсказывает, что это неправильное применение инструкции. Вторым аргументом идет НОМЕР БИТА, а вы подставляете туда маску этого бита. Компилятор может и не обнаружить этого прикола, а проблемы будут.
Аналогично надо исправить cbr/sbr инструкции по всему тексту программы, может в этом и была причина.
Re: Atmega8: простенький секундомер
Команды установки или сброса битов регистра sbr/cbr устанавливают или сбрасывают тот бит или биты которые Вы указали не трогая то что не нужно. Собственно это "родственики" команды eor Сами биты описаны в *.inc файле


