Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Timer2 in Atmega8 and Atmega16

Непрочитано 20.02.2016, 02:42  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
Восклицание Timer2 in Atmega8 and Atmega16

Доброго времени уток. Столкнулся с такой проблемой. Запустил таймер2 на частоте 1000000 Гц. Включил прерывание по совпадению OCR2=50. В атмеге 16 работает со сбоями. В атмеге8 - идеально. Еще в обоих МК добавил прерывание по INT0(частота прерываний 50 Гц), добавил АЦП с частотой измерений 5кгц, и таймер1 с прерывание 0.5с тоже по совпадению OCR1A. В прерывании от OCR2 в обоих МК код тупо скопирован. Там просто включается ножка или выключается. 16-ая с этим не справляется. Может кто встречался с таким....????? Отключал все прерывания в 16-ой, и всеравно сбой.....
Реклама:
miwutka вне форума  
Непрочитано 22.02.2016, 19:05  
Someone
Гражданин KAZUS.RUN
 
Регистрация: 16.06.2005
Сообщений: 942
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Timer2 in Atmega8 and Atmega16

miwutka, Я таки не пойму, ты хоть чему-то учишься (я про то, как задавать вопросы)? Или всегда на телепатов рассчитываешь? Из твоего поста можно вывести только то, что ты в очередной раз напортачил в программе, скорее всего при инициализации таймеров, потому что не читал даташиты, вдруг есть отличия меги8 от меги16. .
Someone вне форума  
Сказали "Спасибо" Someone
ForcePoint (22.02.2016)
Непрочитано 23.02.2016, 10:18  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Timer2 in Atmega8 and Atmega16

вот в атмега 8 :
PHP код:
// Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: 1000,000 kHz
    // Mode: CTC top=OCR2
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x0A;
    TCNT2=0x00;
    OCR2=49; 
вот атмега 16
PHP код:

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: 1000,000 kHz
    // Mode: CTC top=OCR2A
    // OC2 output: Disconnected
    // Timer Period: 0,05 ms 20000 of 1 sek
    ASSR=0‹‹AS2;
    TCCR2=0x0A; 
    TCNT2=0x00;
    OCR2=0x31; //49 
Вроде всё правильно?......

Последний раз редактировалось miwutka; 23.02.2016 в 17:56.
miwutka вне форума  
Непрочитано 23.02.2016, 11:41  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Timer2 in Atmega8 and Atmega16

Часовой кварц на ноги повесь, раз асинхронный режим включаешь
niXto вне форума  
Непрочитано 23.02.2016, 12:00  
SPKostenko
Частый гость
 
Регистрация: 08.08.2008
Сообщений: 16
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
SPKostenko на пути к лучшему
По умолчанию Re: Timer2 in Atmega8 and Atmega16

Частоте 1 МГц соответствует вот такая запись
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 1000,000 kHz
// Mode: CTC top=OCR2
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x09;
TCNT2=0x00;
OCR2=0x49;
SPKostenko вне форума  
Непрочитано 23.02.2016, 12:29  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Timer2 in Atmega8 and Atmega16

SPKostenko, не не, сама атмега на 8МГц работает. То я таймер на 1 МГц завел через предделители.
niXto, ASSR=0‹‹AS2; - это же вроде выключен асинхронный режим...? я код набирал через визард в студии. Визард от CVAVR.
miwutka вне форума  
Непрочитано 23.02.2016, 13:55  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Timer2 in Atmega8 and Atmega16

Сообщение от miwutka Посмотреть сообщение
Там просто включается ножка или выключается. все равно сбой.....
Что значит сбой?
Покажи код прерываний. И подробно опиши что происходит. У меня есть одна догадка...
Godzilla82 вне форума  
Непрочитано 23.02.2016, 14:27  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: Timer2 in Atmega8 and Atmega16

А че так???
здесь одно TCCR2=0x0A;
а тут другое TCCR2=0x10; //0b00001010; хоты в бинарном виде 0x0A...
Так все ли одинаково???
mimuh64 вне форума  
Непрочитано 23.02.2016, 14:49  
Someone
Гражданин KAZUS.RUN
 
Регистрация: 16.06.2005
Сообщений: 942
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Timer2 in Atmega8 and Atmega16

Сообщение от miwutka Посмотреть сообщение
Вроде всё правильно?
Конечно нет, если ты хочешь отсчитать 50 тиков таймера работающего на частоте 1 МГц, или иными словами, дёргать вывод (как я интуитивно предполагаю) с частотой 20кГц.
Someone вне форума  
Непрочитано 23.02.2016, 14:59  
Someone
Гражданин KAZUS.RUN
 
Регистрация: 16.06.2005
Сообщений: 942
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Timer2 in Atmega8 and Atmega16

ЗЫ: Если намёк не понятен, поясняю - билдером тоже уметь надо пользоваться. Вообще же если память не подводит, тебе уже неоднократно давали совет выкинут нафиг билдер. Его можно использовать для скорости, когда уже точно знаешь, что и как настраивать. Иначе говоря - пока ты начинающий, не пользуйся билдером, ставь все настройки вручную. Да, дольше, да, труднее, да, мозг будет напрягаться, но зато не будет таких глупых и смешных ошибок. Для меги8 с прерыванием по достижению OCR это должно выглядеть так:
Код:
 TCCR2 = 0x00; //stop
 ASSR  = 0x00; //set async mode none
 TCNT2 = 0x00; //setup
 OCR2  = 0x32; //value
 TCCR2 = (1‹‹WGM21)|(1‹‹CS21); //start
 TIMSK = (1‹‹OCIE2)

Последний раз редактировалось Someone; 23.02.2016 в 15:04.
Someone вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
USB АЦП на ATmega16 переделать на ATmega8 98mildg1 Микроконтроллеры, АЦП, память и т.д 12 25.09.2010 20:29
Нужна помощь CDC-232 и atmega16 robin7341 Микроконтроллеры, АЦП, память и т.д 0 08.08.2010 00:13


Часовой пояс GMT +4, время: 09:37.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.