Например TDA7294

Форум РадиоКот • Просмотр темы - Вопрос к знатокам, почему не работают 2 прерывания совмесно
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 17, 2024 02:11:24

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 38 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Вопрос к знатокам, почему не работают 2 прерывания совмесно
СообщениеДобавлено: Чт сен 21, 2017 14:16:10 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 13, 2017 05:53:24
Сообщений: 31
Рейтинг сообщения: 0
Хочу запустить в работу одновременно таймер0 и таймер1 на аттини85 и с них обрабатывать прерывания. Они настроены по разному с разными предделителями. Почему прерывания по вектору TIMER1_COMPA_vect полностью нейтрализует TIMER0_COMPA_vect?
и как сделать их одновременную работу.

Счетчики TCNT продолжают считать, пока выполняется любое из прерываний ?



Код:
#define F_CPU 1000000
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
unsigned char i=0;
//----------
void segchar (unsigned char seg)
{
   switch (seg)
   {
   case 1: PORTB = 0b00000010; break;
   case 2: PORTB = 0b00000110; break;
   case 3: PORTB = 0b00001110; break;
   case 4: PORTB = 0b00011110; break;
 
   }
}

//----------
void timer_ini (void){   
   TCCR0A |= (1<<WGM01); //Устанавливаем режим СТС сброс по совпадению
   TCCR0B |= (1<<CS02)|(0<<CS01)|(1<<CS00); //Делитель 1024
   TIMSK |=(1<<OCIE0A); //бит разрешения прерываний

   OCR0A = 0b11111111;   //до чего считать
}
//----------
//обработка прерывания таймера0
ISR (TIMER0_COMPA_vect)
{
   if (i>=5){i=1;}
   segchar(i);
   i++;

}

void timer1_ini (void){

   TCCR1 |= (1 << CTC1) //режим CTC
   |(0<<COM1A1)|(0<<COM1A0) //отключаем OC1A
   |(1 << CS10)|(1 << CS11)|(1 << CS12)|(0 << CS13);  //Делитель 8192
   TCNT1 = 0x00;                  //сброс счетчика
   OCR1A = 0xFA;                //регистр сравнения
   TIMSK =(1<<OCIE1A);      //включаем прерывания по переполнению
   
}

//обработка прерывания таймера1
ISR(TIMER1_COMPA_vect){
   PORTB = 0b00000000;
}

//----------
int main(void)
{

sei();
 
timer_ini();
timer1_ini();
   DDRB = 0xfe;
   PORTB = 0b00000000;
//----------
            while(1){
   
            }
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Чт сен 21, 2017 14:19:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Счетчики считают, пока включен таймер. В нормально написанных программах никакой блокировки нет и быть не может.

как вы вычислили, что прерывания блокируются?

у вас переменная i не объявлена volatile - не факт, что у вас вообще работоспособный код

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Чт сен 21, 2017 14:28:14 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 13, 2017 05:53:24
Сообщений: 31
Рейтинг сообщения: 0
В протеусе добавьте аттини 85 и закоментите timer1_ini() в коде;

выхода начнут зажигаться. по моей задумке таймером1 должны сброситься выходы


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Чт сен 21, 2017 14:41:40 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
fulky писал(а):
В протеусе добавьте аттини 85 и закоментите timer1_ini() в коде;
щаззз :evil: что еще сделать?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Чт сен 21, 2017 15:11:47 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 13, 2017 05:53:24
Сообщений: 31
Рейтинг сообщения: 0
Увидеть своими глазами воочию


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Чт сен 21, 2017 16:28:54 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 3
Медали: 1
Получил миской по аватаре (1)
fulky писал(а):
|(1 << CS10)|(1 << CS11)|(1 << CS12)|(0 << CS13); //Делитель 8192
Это делитель на 64.
Цитата:
TIMSK =(1<<OCIE1A); //включаем прерывания по переполнению
и вЫключаем прерываний от таймера0.

--------
переменную i как volatile не стоит объявлять, но стоит ее объявить внутри обработчика прерывания как static.

Добавлено after 3 minutes 3 seconds:
Re: Вопрос к знатокам, почему не работают 2 прерывания совмесно
Пошаговая отладка решает много проблем, что же ей мало так кто пользуется.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Чт сен 21, 2017 16:38:37 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Z_h_e писал(а):
Пошаговая отладка решает много проблем, что же ей мало так кто пользуется.
Наверное потому что ATtiny85 не поддерживает аппаратную отладку с пошаговым режимом. :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Чт сен 21, 2017 16:42:10 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 3
Медали: 1
Получил миской по аватаре (1)
Пошаговая не только в железе бывает.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Чт сен 21, 2017 17:25:09 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 13, 2017 05:53:24
Сообщений: 31
Рейтинг сообщения: 0
fulky писал(а):
|(1 << CS10)|(1 << CS11)|(1 << CS12)|(0 << CS13); //Делитель 8192
Это делитель на 64.
Цитата:
TIMSK =(1<<OCIE1A); //включаем прерывания по переполнению
и вЫключаем прерываний от таймера0.

--------
переменную i как volatile не стоит объявлять, но стоит ее объявить внутри обработчика прерывания как static.

Добавлено after 3 minutes 3 seconds:
Re: Вопрос к знатокам, почему не работают 2 прерывания совмесно
Пошаговая отладка решает много проблем, что же ей мало так кто пользуется.


Код:
TCCR1 |= (1 << CTC1) //режим CTC
   |(0<<COM1A1)|(0<<COM1A0) //отключаем OC1A
   |(1 << CS13)|(0 << CS12)|(1 << CS11)|(0 << CS10);  //Делитель 512
   TCNT1 = 0x00;                  //сброс счетчика
   OCR1A = 0xFF;                //регистр сравнения
   TIMSK =(1<<TOIE1);      //включаем прерывания по переполнению


решил переделать на прерывание по переполнению, все тоже самое; получается все прерывания таймера1 отключают прерывания по таймеру0????


Последний раз редактировалось fulky Чт сен 21, 2017 17:26:49, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Чт сен 21, 2017 17:26:38 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Нет. Подумайте сами.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Чт сен 21, 2017 18:01:55 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 13, 2017 05:53:24
Сообщений: 31
Рейтинг сообщения: 0
"|"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Пт сен 22, 2017 10:19:00 
Это не хвост, это антенна
Аватар пользователя

Карма: 8
Рейтинг сообщений: 193
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1441
Рейтинг сообщения: 0
я даже больше скажу: "|="


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Пт сен 22, 2017 10:25:22 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
COKPOWEHEU писал(а):
я даже больше скажу
ух, рубанул!!! :))) :beer:

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Пт сен 22, 2017 16:25:32 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
"|"
Самое главное чтобы это был не смайлик ;).

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Сб сен 23, 2017 06:51:57 
Первый раз сказал Мяу!

Зарегистрирован: Ср сен 13, 2017 05:53:24
Сообщений: 31
Рейтинг сообщения: 0
То чувство когда целый день делаешь и все получается, а потом под вечер из-за такого косяка часа 2 пялишься в монитор, пробуешь и ничего не выходит ;)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Сб сен 23, 2017 07:03:00 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Z_h_e писал(а):
Пошаговая отладка решает много проблем,

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Пн сен 25, 2017 22:42:24 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Пн фев 11, 2008 20:32:45
Сообщений: 255
Откуда: Краснодарский край
Рейтинг сообщения: 0
А такое вообще возможно, что бы два прерывания работали одновременно? :shock:
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Пн сен 25, 2017 22:51:18 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2690
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
При наличии нескольких необработанных событий МК уйдёт в прерывание с более высоким приоритетом. Обработав его прмется за другое, если конечно за это время опять не произойдёт событие с высоким приоритетом. Как правило обработчик прерывания делается с максимально быстрым кодом.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Вт сен 26, 2017 06:43:13 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
А такое вообще возможно, что бы два прерывания работали одновременно? :shock:...


Возможно...
При том, что одно из прерываний таки всегда начнет обрабатываться раньше (и завершит обработку позднее).
Всего - то разрешить вложенные прерывания установкой флага I в SREG сразу за входом в первую из процедур обработки.
8)
Однако необходимо внимательно высчитывать интервалы выполнения самих обработчиков на вопрос "самоперекрытия" (приход нового запроса до завершения обработки предыдущего).
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос к знатокам, почему не работают 2 прерывания совме
СообщениеДобавлено: Вт сен 26, 2017 07:58:48 
Вымогатель припоя

Карма: 6
Рейтинг сообщений: 7
Зарегистрирован: Чт янв 21, 2016 15:59:10
Сообщений: 522
Рейтинг сообщения: 0
Всего - то разрешить вложенные прерывания установкой флага I в SREG сразу за входом в первую из процедур обработки.
8)

флаг I разрешает все прерывания, а не вложенные. В атмеге одноуровневая система прерываний


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  1,  

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y