roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 05:31

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: запуски таймеров Т0 и Т2 по таймеру Т1 в Атмеге
СообщениеДобавлено: 11 янв 2014, 22:13 
Не в сети
Аватара пользователя

Зарегистрирован: 08 дек 2009, 19:21
Сообщения: 404
Откуда: Й-Ола
Можно ли аппаратно запустить таймеры ТО и Т2 с частотой предделителя 1024
по достижении таймером Т1 чисел 208 и 416,

сам таймер Т1 считает от нуля до 625 по внешнему прерыванию с частой предделителя 256 100 раз
в секунду


сначала думал написать в бесконечном цикле (не в прерывании) так
( в си++ на кодвижн авр)
Код:
if (TCNT1>208){   //  врубаем счетчик
TCCR0 = 0x00; //stop timer
TCNT0 = 0x01; //записать в регистр таймера число 1
TCCR0 = 0b00000101; //start timer  - clock/-5  делим частоту на 1024 -
}

if (TCNT1>416){   //  врубаем счетчик
TCCR2 = 0x00; //stop timer
TCNT2 = 0x01; //записать в регистр таймера число 1
TCCR2 = 0b00000101; //start timer  - clock/-5  делим частоту на 1024 -
}



но похоже так таймеры не будут запускаться, а будут
обнуляться в каждом проходе, пока крутиться цикл

если написать
Код:
(TCNT1=208)

то не работает в влаб, счетчики не считают

Т1 запускаю так

Код:
TCCR1A = 0x00; //stop timer
TCCR1B = 0x00; //stop timer
TCNT1 = 0x01; //
TCCR1B = 0b00000100; //start timer  - clock/-4 


может предделитель сбрасывается?

_________________
Ваш IP-адрес 85.140.5.459 был внесён в черный список и заблокирован. Для получения дополнительной информации перейдите по ссылке http://www.spamhaus.org/query/bl?ip=85.140.5.459.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: запуски таймеров Т0 и Т2 по таймеру Т1 в Атмеге
СообщениеДобавлено: 11 янв 2014, 23:21 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
к561ЛА7 писал(а):
Можно ли аппаратно запустить таймеры ТО и Т2 с частотой предделителя 1024
по достижении таймером Т1 чисел 208 и 416, сам таймер Т1 считает от нуля до 625


Можно, но програмно.

Вначале поставить прерывание по совпадению Т1 на 208 (возможно на 207 чтоб с учетом времени входа в прерывание получилось 208 - это уже надо в симуляторе точно замерить)

В процедуре этого прерывания:

проверьте что таймер не превысил например 220 (значит это прерывание именно от 208)
сделайте то что нужно на 208.
настройте следующее совпадение на 416.

если превысил 220 то это прерывание по 416.
сделайте то что нужно на 416
настройте след совпадение снова по 208


вот так примерно.

Добавлено спустя 3 минуты 38 секунд:
Код:
if (TCNT1<220){   //  произошел досчет только до 208.
TCCR0 = 0x00; //stop timer
TCNT0 = 0x01; //записать в регистр таймера число 1
TCCR0 = 0b00000101; //start timer  - clock/-5  делим частоту на 1024 - врубаем счетчик
настроить след "прервание по совпадению" на счет 416 таймера 1
}
else     {   //  произошел досчет только до 416
TCCR2 = 0x00; //stop timer
TCNT2 = 0x01; //записать в регистр таймера число 1
TCCR2 = 0b00000101; //start timer  - clock/-5  делим частоту на 1024 - //  врубаем счетчик
настроить след "прервание по совпадению" на счет 208 таймера 1
         }


Надо убедится что нули TCCR2 = 0b00000101;
не повлияют на другие настройки таймера.

Если влияют то надо не трогать эти биты 7...3
TCCR2 &= 0b11111000; // обнулить биты 2 1 0
TCCR2 |= 0b00000101; // установить биты 2 и 0

_________________
Читайте !


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 6


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO