реклама на сайте
подробности

 
 
> Делитель на пинах прерывания?
Oleg_IT
сообщение Jun 4 2007, 07:52
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



ATTiny13. Начал работать с прерываниями на PCINT5..0. Создаётся впечатление, что на входе стоят делители на два. Я прав? Если да, то можно ли их выключит?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GDI
сообщение Jun 4 2007, 14:32
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Время реакции на INT0 (по даташиту на мега32, в даташите на тини13 не нашел этого), составляет 1 такт, всё что короче не вызывает прерывание, а на PCINT - надо 4 такта - может в этом проблема?


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Jun 5 2007, 05:01
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Спасибо, нашёл в чем дело, это моя не внимательность.

Но после того как программа заработала правильно, возникли другие вопросы.
1. При уменьшении времен характеризующих импульсы происходит не прореживание, а уменьшение их количества.
2. Как понять по фронту или спаду возникло прерывание на PCINT? Чтением значения соответствующего пина? Соответственно, если задействовано несколько PCINT, как понять с какого пина пришло прерывание? Так же?
3. Для того, что бы обработчик срабатывал не два раза на один импульс, а один делаю программный фильтр
BitN++;
if (BitN & 1)
return;
или
BitN ^= 1;
if (BitN & 1)
return;
Деление должно быть на два, а по факту делится на 4, без этого фрагмента на выходе 16 импульсов, с ним 4 (на входе всегда 8).

Код тестовой программы

#include <ioavr.h>
#include <inavr.h>

#define CS PINB_Bit1
#define CLOCK PINB_Bit2
#define DATA PINB_Bit3
#define OUT_TIM PORTB_Bit0

unsigned char Nbit = 0;
struct {
unsigned SetBit : 1;
unsigned WriteData : 1;
unsigned ResetData : 1;
};


#pragma vector = PCINT0_vect
__interrupt void PCINT0_(void)
{
BitN++;
if (BitN & 1)
return;
OUT_TIM = 1;
OUT_TIM = 0;
}

#pragma vector = INT0_vect
__interrupt void INT0_(void)
{
BitN = 0;
}

void main( void )
{
CLKPR = (1 << CLKPCE);
CLKPR = (1 << CLKPS2);

SetBit = 1;
WriteData = 0;
ResetData = 1;

GIMSK |= (1 << INT0) | (1 << PCIE);
PCMSK |= (1 << PCINT2);
MCUCR |= (1 << ISC00) | (1 << ISC01);

DDRB = 0x11; // 01 0001
PORTB = 0x2E; // 10 1110
__enable_interrupt();

OUT_TIM = 1;
while (1)
{
}
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Oleg_IT   Делитель на пинах прерывания?   Jun 4 2007, 07:52
- - bzx   Цитата(Oleg_IT @ Jun 4 2007, 11:52) ATTin...   Jun 4 2007, 08:07
- - Oleg_IT   Скорей всего я чего-то не так понимаю или делаю. Н...   Jun 4 2007, 10:16
|- - bzx   2 Oleg_IT Если это тестовая программа, то приведи ...   Jun 4 2007, 12:17
||- - Oleg_IT   Цитата(bzx @ Jun 4 2007, 16:17) 2 Oleg_IT...   Jun 4 2007, 12:41
|- - muravei   Цитата(Oleg_IT @ Jun 4 2007, 14:16) перед...   Jun 4 2007, 12:25
- - Александр Куличок   Теоретическии, если я не ошибаюсь, импульсов на єк...   Jun 4 2007, 12:04
|- - Oleg_IT   Цитата(Александр Куличок @ Jun 4 2007, 16...   Jun 4 2007, 12:13
- - Александр Куличок   ЦитатаКак я понимаю, прерывание возникает только о...   Jun 4 2007, 12:35
- - Александр Куличок   Цитата1. При уменьшении времен характеризующих имп...   Jun 5 2007, 13:28
- - GDI   Параметры сигнала так и не были озвучены. Частота,...   Jun 5 2007, 13:55
|- - Oleg_IT   Цитата(GDI @ Jun 5 2007, 17:55) Параметры...   Jun 6 2007, 04:44
- - GDI   Цитатачастота генератора 4.8МГц, предделитель 2 пр...   Jun 6 2007, 06:57
|- - Oleg_IT   Цитата(GDI @ Jun 6 2007, 10:57) при таком...   Jun 6 2007, 07:25
- - GDI   А зачем внешнее тактирование - от внутреннего гене...   Jun 6 2007, 08:18
|- - Oleg_IT   Цитата(GDI @ Jun 6 2007, 12:18) А зачем в...   Jun 6 2007, 09:39
- - GDI   У нас подобная вещь на Тини12 сделана... ватчдог д...   Jun 6 2007, 10:37
- - vladimir_orl   поднимаю старую ему... сейчас работаю с прерывани...   Mar 13 2018, 12:39


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 11:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016