Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 06.09.2011, 19:10  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Счетчик-таймер на ATtiny

Манипулируйте счётчиком через регистр TCCR2.

Правда, нужно ещё контролировать состояние, в котором остался выход. Вам надо, чтобы при отключенной пищалке выход был лог. 0.

Это всё делается через этот регистр.
Реклама:
Godzilla82 вне форума  
Непрочитано 06.09.2011, 20:05  
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Re: Счетчик-таймер на ATtiny

Godzilla82,
Не уверен, так ли я сделал?
PHP код:
interrupt [TIM1_COMPAvoid timer1_compa_isr(void)     

unsigned char sec,min
trigger ^= 1
time += start;
if (
time › 5999)    {                                                   // окончание счёта 
                    
if(start == -1beep 1;                           // включаем динамик, если был обратный отсчёт 
                    
start 0
                    
time 0
                    
PORTC &= ~WORK;                                     // выключение индикатора "счёт" 
                    
}
      
sec time 60;  
      
min time 60;  
      
clock[0] = sec 10;  
      
clock[1] = sec 10;  
      
clock[2] = min 10;  
      
clock[3] = min 10;
// мой код:
 
if((beep) && (trigger)) {TCCR2 0x1COCR2 0x3D;}      //по окончанию обратного счета сигнал 1 кГц
  
else TCCR2 0x00OCR2 0x00//stop
}

// Timer2:
TCNT2   0x00
И еще вопрос, нельзя ли сделать, чтобы trigger переключался через 0.5 сек.?
Dimitrij вне форума  
Непрочитано 07.09.2011, 01:49  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Счетчик-таймер на ATtiny

Сообщение от Dimitrij Посмотреть сообщение
Не уверен, так ли я сделал?
Ну почти. Регистр OCR2 вообще не надо трогать. Настроили его на 500 мкс и забыли.

Когда используется выход OC2. Есть 3 варианта. При совпадении счётчика и OCR2 можно:
1. установить выход в 1
2. установить выход в 0
3. переключить выход

При включении таймера нам нужен 3-й вариант. При выключении - второй. Мне лень высчитывать, какие значения TCCR2 соответствуют тому или иному режиму. Сами посчитайте.

Сообщение от Dimitrij Посмотреть сообщение
PHP код:
 
// Timer2:
TCNT2   0x00
А это к чему относится? Такая строчка должна быть только при инициализации.

Сообщение от Dimitrij Посмотреть сообщение
И еще вопрос, нельзя ли сделать, чтобы trigger переключался через 0.5 сек.?
Да всё можно сделать. Вернёмся к тому, что было. Ещё одна дополнительная переменная.
Godzilla82 вне форума  
Непрочитано 07.09.2011, 11:45  
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Re: Счетчик-таймер на ATtiny

Godzilla82,
"Век живи, век учись..."
Так?
PHP код:
if((beep) && (trigger)) TCCR2 0x1C;      //по окончанию обратного счета сигнал 1 кГц
else TCCR2 0x2C//выход ОС2 в 0
...

// Timer2: 125 kHz
// 1 мс
TCNT2   0x00
OCR2    0x3D
Цитата:
Ещё одна дополнительная переменная.
А нужна ли она? Это уже чистая эстетика.
Dimitrij вне форума  
Непрочитано 07.09.2011, 12:27  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Счетчик-таймер на ATtiny

Сообщение от Dimitrij Посмотреть сообщение
"Век живи, век учись..."
...чтобы на старости лет остаться дураком.

Сообщение от Dimitrij Посмотреть сообщение
Так?
PHP код:
if((beep) && (trigger)) TCCR2 0x1C;      //по окончанию обратного счета сигнал 1 кГц
else TCCR2 0x2C//выход ОС2 в 0
...

// Timer2: 125 kHz
// 1 мс
TCNT2   0x00
OCR2    0x3D
Наверное. Мне лень проверять каждый бит. Если когда надо - пищит, а когда не надо - на выходе 0 - то так


Сообщение от Dimitrij Посмотреть сообщение
А нужна ли она? Это уже чистая эстетика.
У вас таймер настроен на 1 сек. А вы хотите включать/выключать пищалку через 0,5 сек. Свободных таймеров не осталось.

Надо в имеющийся таймер с меньшим периодом поставить счётчик. И когда счётчик отсчитает нужный интервал - установить какой-нить флаг. Флаг trigger не годится, так как он переключается с интревалом 1 сек для мигания точки. Если и точке можно мигать с интревалом 0,5 сек - тогда в качестве флага можно использовать переменную trigger.

Конечно, по восприятию удобно, когда и мигание точки и пикание идёт с интервалом 0,5 сек. То есть, полсекунды - горит/пищит, полсекунды - потушена/молчит. Тогда по количеству "писков" и "появлений" точки можно уже считать сек. А это уже и называется эстетикой. А зачем создавать прибор, которым не удобно пользоваться?
Godzilla82 вне форума  
Непрочитано 07.09.2011, 20:35  
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Re: Счетчик-таймер на ATtiny

Сообщение от Godzilla82 Посмотреть сообщение
Наверное.
По битам правильно, меня интересовал сам синтаксис.
Сообщение от Godzilla82 Посмотреть сообщение
в имеющийся таймер с меньшим периодом поставить счётчик.
А как? Пробовал поставить в Таймер0 tik++, не получилось, хотя у него период около 2 мсек. Таймер1 трогать не хочется, хотя с ним у меня что-то получалось. А как использовать Таймер2 не знаю. Точно
Цитата:
на старости лет останусь дураком.
Dimitrij вне форума  
Непрочитано 08.09.2011, 07:34  
greenrat
Прохожий
 
Регистрация: 12.03.2010
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
greenrat на пути к лучшему
По умолчанию Re: Счетчик-таймер на ATtiny

я в своих проектах при расчете таймеров часто использую программулину AVRCALC
http://www.avrcalc.com/download.html,

задаешь в ней частоту кварца, период срабатывания таймера и на выходе получаешь значения для регистров таймера.
greenrat вне форума  
Непрочитано 08.09.2011, 13:39  
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Re: Счетчик-таймер на ATtiny

Сообщение от greenrat Посмотреть сообщение
получаешь значения для регистров таймера
Что-то наподобии у меня есть.

Все, на что я способен:
PHP код:
unsigned char tik,tik1;
interrupt [TIM1_COMPAvoid timer1_compa_isr(void)     
{
unsigned char sec,min
tik++; 
if (
tik › 9)        { 
                    
tik 0
                    
time += start
                    if (
time › 5999)    {                               // окончание счёта 
                                        
if(start == -1beep 1;       // включаем динамик, если был обратный отсчёт 
                                        
start 0
                                        
time 0
                                        
PORTC &= ~WORK;                 // выключение индикатора "счёт" 
                                        

                    }
      
sec time 60;  
      
min time 60;  
      
clock[0] = sec 10;  
      
clock[1] = sec 10;  
      
clock[2] = min 10;  
      
clock[3] = min 10;
      
if((
beep) && (trigger)) TCCR2 0x1C;      //по окончанию обратного счета сигнал 1 кГц
else TCCR2 0x2C//stop 

tik1++;                                               //trigger через 0.5 сек.
if (tik14) {tik1=0trigger ^= 1;}

}

// Timer1: 125 kHz 
// 100 ms 
TCCR1A  0x00
TCCR1B  0x0B
TCNT1H  0x00
TCNT1L  0x00
ICR1H   0x00
ICR1L   0x00
OCR1AH  0x30
OCR1AL  0xD3
OCR1BH  0x00
OCR1BL  0x00
Можно ли это упростить?

Последний раз редактировалось Dimitrij; 08.09.2011 в 13:44.
Dimitrij вне форума  
Непрочитано 08.09.2011, 15:03  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Счетчик-таймер на ATtiny

Сообщение от Dimitrij Посмотреть сообщение
Можно ли это упростить?
Можно. Сделать интервал таймера 500 мс.

PHP код:
 
trigger 
^= 1;
tik_time ^=1;
if(
tik_time) { траляля 
Godzilla82 вне форума  
Сказали "Спасибо" Godzilla82
Dimitrij (08.09.2011)
Непрочитано 08.09.2011, 16:32  
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Re: Счетчик-таймер на ATtiny

Godzilla82,
Большое спасибо! Все работает, как надо. Буду воплощать в железе. По моему, тема закрыта. С Вашей помощью немного продвинулся в программировании. Все просто, когда знаешь.
Dimitrij вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Счетчик количества просмотров slavar1 Обсуждение сайта и форума 4 07.01.2011 20:56
газ счетчик Mastino Информация по радиокомпонентам 2 31.03.2006 23:57
[Решено] Таймер для Ксеноновых ламп ближнего света Гость Электроника средств транспорта 6 17.01.2006 22:51
таймер и симуляция в MPLAB Sim lisergin Микроконтроллеры, АЦП, память и т.д 0 16.01.2006 15:35
Задача - таймер. и прерывание! chipic128 Микроконтроллеры, АЦП, память и т.д 11 22.02.2005 18:11


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot