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

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

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

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

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

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

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

 
Опции темы
Непрочитано 16.05.2011, 14:30  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Таймеры

Не как не могу разобраться с таймерами .... Надо чтоб с частотой 25000 срабатывало прерывание, больше прерываний в системе нет!!. Кварц 8000000 поидеи делитель на 8 и считам до 40. Но загоняю в протеус ставлю делитель 1024, моргает порт не равномерно.... Уже устал читать про шим который мне не нужен.... И не как понять не могу совпадение А и Б чем они отличакються???? Заранее спасибо.....
Смотрю в дебаггере вроде все ОК, только в TCNT1=0x02, по старту таймера а потом все ок 42.... Попробывать на железе надо..... Скорее всего так протеус обрабатывает... ТОлько вот почему при старте таймера он сразу в прерывание залетает????
ISR (TIMER1_COMPA_vect)
{
TCNT1=0x00;
if(test ==0)
{PORTA = 0XFF;test=1;}
if(test ==1)
{PORTA = 0X0;test=0;}


}

int main(void)
{

/// ***настраиваем порты ввода-вывода
DDRA = 0xFF;
/// ***Настраиваем таймер

TCCR1A = 0x00;
TCCR1B = (0 ‹‹ CS12)|(1 ‹‹ CS11)|(0 ‹‹ CS10)|(1 ‹‹ WGM12); //предделитель clk/8, режим таймера СТС
TCNT1=0x00;
OCR1A=40; // выбор коэффициента деления
TIMSK=(1 ‹‹ OCIE1A); // разрешение прерывания по совпадению

temp=0b00000000; // Присвоение начального значения

asm ("sei"); // Разрешение прерываний

while (1) {}; // Бесконечный цикл
}
Реклама:

Последний раз редактировалось bass1981; 16.05.2011 в 16:10.
bass1981 вне форума  
Сказали "Спасибо" bass1981
warel (27.06.2019)
Непрочитано 17.05.2011, 07:26  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Таймеры

ISR (TIMER0_OVF_vect)
{
//TCNT1=0x00;

if(test ==0)
{
PORTA = 0XFF;test=1;
TCNT0 = 0xFF-40;return;
}
if(test ==1)
{
PORTA = 0X0;test=0;
TCNT0 = 0xFF-40;return;
}

}

int main(void)

{
DDRA = 0xFF;

//TCCR0 |= _BV(CS01); //Запускаем таймер с пределителем 8
TCCR0 =(0‹‹CS02)|(1‹‹CS01)|(0‹‹CS00);//clk/8
//TCCR0 =(1‹‹CS02)|(0‹‹CS01)|(1‹‹CS00);//clk/8
TIMSK = (1‹‹TOIE0);// Разрешаем прерывание по переполнению
TCNT0 = 0xFF-40;

sei (); // Разрешаем глобальные прерывания МК

// далее бесконечный цикл программы. МК будет спать и ждать прерывания.

while(1)
{
asm("nop");
}

}


Все решено ..... Накосячил в прерывании... тест = 1 и потом сравнение естественно проходит..... Ну блин !!!!! Всем спасибо. Настроил 0 таймер на переполнение.....
bass1981 вне форума  
Сказали "Спасибо" bass1981
warel (27.06.2019)
Непрочитано 17.05.2011, 07:30  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Ну, во-первых, у вас процедура

Сообщение от bass1981 Посмотреть сообщение
Не как не могу разобраться с таймерами .... Надо чтоб с частотой 25000 срабатывало прерывание, больше прерываний в системе нет!!. Кварц 8000000 поидеи делитель на 8 и считам до 40. Но загоняю в протеус ставлю делитель 1024, моргает порт не равномерно.... Уже устал читать про шим который мне не нужен.... И не как понять не могу совпадение А и Б чем они отличакються???? Заранее спасибо.....
Смотрю в дебаггере вроде все ОК, только в TCNT1=0x02, по старту таймера а потом все ок 42.... Попробывать на железе надо..... Скорее всего так протеус обрабатывает... ТОлько вот почему при старте таймера он сразу в прерывание залетает????
ISR (TIMER1_COMPA_vect)
{
TCNT1=0x00;
if(test ==0)
{PORTA = 0XFF;test=1;}
if(test ==1)
{PORTA = 0X0;test=0;}
}
обработки прерываний сама по себе некорректно написана. И потом, зачем вы сбрасываете TCNT1 в ноль, если у вас установлен режим CTC?
Bill вне форума  
Сказали "Спасибо" Bill
warel (27.06.2019)
Непрочитано 17.05.2011, 07:33  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Ну, а как же с режимом

Сообщение от bass1981 Посмотреть сообщение
Все решено ..... Накосячил в прерывании... тест = 1 и потом сравнение естественно проходит..... Ну блин !!!!! Всем спасибо. Настроил 0 таймер на переполнение.....
по совпадению? Грабли-то остались? Или нет?
Bill вне форума  
Сказали "Спасибо" Bill
warel (27.06.2019)
Непрочитано 17.05.2011, 15:08  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Ну, а как же с режимом

Сообщение от Bill Посмотреть сообщение
по совпадению? Грабли-то остались? Или нет?
Заработало !!!!! В протеусе ок..... Я во втором посте ответил выложив рабочий код......Только с дебаггером разобрался мля... Ну заодно научился пользоваться дебаггером..... Я просто ранше прожил на 8051..... Там был старый дебаггер и какойто программатор сам паял..... Прошло года 4-5, сейчас купил стк-500 и вспоминаю все.... Спасибо что откликнулись....
bass1981 вне форума  
Сказали "Спасибо" bass1981
warel (27.06.2019)
Непрочитано 17.05.2011, 15:34  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Таймеры

Код:
ISR (TIMER0_OVF_vect)
 {
 PORTA = ~PORTA;
 TCNT0 += 0xFF-40;
 }
Весь обработчик.
kison вне форума  
Эти 2 пользователя(ей) сказали Спасибо kison за это сообщение:
bass1981 (17.05.2011), warel (27.06.2019)
Непрочитано 17.05.2011, 15:43  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Таймеры

Сообщение от kison Посмотреть сообщение
Код:
ISR (TIMER0_OVF_vect)
 {
 PORTA = ~PORTA;
 TCNT0 += 0xFF-40;
 }
Весь обработчик.
Спасибо, что то про инвентирование смекалки не хватило....
bass1981 вне форума  
Сказали "Спасибо" bass1981
warel (27.06.2019)
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймеры CY7C68013A Ksardasss Микроконтроллеры, АЦП, память и т.д 17 23.05.2011 00:08
Такие разные 555-е таймеры boor Коллекция глюков 12 24.06.2009 15:44
Таймеры rrenderr Микроконтроллеры, АЦП, память и т.д 10 28.05.2007 14:40
pic16f870 - Помогите разобраться с таймерами bopohok Микроконтроллеры, АЦП, память и т.д 9 02.05.2007 16:50
Таймеры AVR UserAVR Микроконтроллеры, АЦП, память и т.д 4 01.06.2005 10:01


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


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