roboforum.ru

Технический форум по робототехнике.
Текущее время: 06 июн 2025, 09:36

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: изменение частоты срабатывания таймеров АТmega128???
СообщениеДобавлено: 19 ноя 2007, 13:49 
Не в сети

Зарегистрирован: 06 ноя 2007, 22:16
Сообщения: 43
Откуда: Кохтла-Ярве
Пробовал ли кто-нибудь изменять частоту срабатывания таймеров по ходу выполнения программы?
Вот например:
при инициализации частота переполнения TIM1 100Hz задана стартовым числом (TCNT1H=0xF6; TCNT1L=0xFE;)
по ходу программы необходимо изменить частоту срабатывания TIM1 до 10Hz.

Пробовал следующий прием: if(что-либо) { #asm("cli") TCNT1H=0xA5; TCNT1L=0xFE; #asm("sei") delay_us(100);}
Контроллер отвечал следующим - таймер TIM1 "затыкался" на некоторое время (видимо на время заданное новым стартовым числом + задержка + циклы) и... начинал исправно отсчитывать срабатывания на старой частоте 100Hz :shock:

SOS SOS!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: изменение частоты срабатывания таймеров АТmega128???
СообщениеДобавлено: 19 ноя 2007, 15:43 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
В этом случае нужно посмотреть АСМ листинг и содержимое регистров таймера в симуляторе - т.е. проверить во что конкретно превращается ваш Си код.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: изменение частоты срабатывания таймеров АТmega128???
СообщениеДобавлено: 19 ноя 2007, 17:22 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
сдается мне, что вы те же константы перегружаете в прерывании

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: изменение частоты срабатывания таймеров АТmega128???
СообщениеДобавлено: 19 ноя 2007, 19:57 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
при настройке таймера в начале программы есть такой код(цифры от балды из моей программы, у вас другие но принцип тотже)
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x05;
TCNT0=0xD8;
OCR0A=0x00;
OCR0B=0x00;

далее в ПП таймера есть такой
// Reinitialize Timer 0 value
TCNT0=0xFE;

А, ваш случай посложней вот так в ПП таймера возвращаются старые значения.
// Reinitialize Timer 1 value
TCNT1H=0xF7;
TCNT1L=0xBD;

вам надо объявить какую нибудь переменную типа my_TCNT1_H, my_TCNT1_L. и менять данные в ней.
// Reinitialize Timer 1 value
TCNT1H=my_TCNT1_H;
TCNT1L=my_TCNT1_L;


Иницилизация в начале программы
my_TCNT1_H=0xF0; // тут ваши значения
my_TCNT1_L=0xBD; // тут ваши значения

в теле по смыслу:
if(что-либо)
{ #asm("cli") my_TCNT1_H=0xA5; my_TCNT1_L=0xFE; #asm("sei") [/code]delay_us(100);}


ПС, как в теге CODE выделить жирным строку/слово/символ?

в теге CODE это невозможно, тк в CODE находится plain text. <V>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: изменение частоты срабатывания таймеров АТmega128???
СообщениеДобавлено: 23 ноя 2007, 01:21 
Не в сети

Зарегистрирован: 06 ноя 2007, 22:16
Сообщения: 43
Откуда: Кохтла-Ярве
rig писал(а):
...как в теге CODE выделить жирным строку?

Зачем именно в теге CODE, если ты выделяешь вот так "[b] [\b]" ?

По теме
:good: Ур-а-а заработало! Тормозит и ускоряется. А дело как всегда в мелочи - ведь видел же строку // Reinitialize Timer 1 value, но почему-то не вдумался в смысл прочитанного :oops:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: изменение частоты срабатывания таймеров АТmega128???
СообщениеДобавлено: 23 ноя 2007, 08:28 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
wolly писал(а):
Зачем именно в теге CODE, если ты выделяешь вот так &quot;[b] [\b]&quot; ?

красивенько же код получается как был задуман. А жирным чтоб внимние акцетрировать.
wolly писал(а):
Ур-а-а заработало!

воо и славно, глядишь и меня чему нибудь научишь. железяку то покажи :oops:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: изменение частоты срабатывания таймеров АТmega128???
СообщениеДобавлено: 24 ноя 2007, 00:25 
Не в сети

Зарегистрирован: 06 ноя 2007, 22:16
Сообщения: 43
Откуда: Кохтла-Ярве
rig писал(а):
железяку то покажи

Нет пока железячки :oops: Есть только два ДШ200, Техническое Задание, мое желание и обещание руководства колледжа выделить финансы по представленной смете на компоненты :D
Все крутится в VMLab-e


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


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

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