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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

НЕ могу включить timer 0 b capture режим

Непрочитано 31.05.2016, 16:30  
nebug15
Прохожий
 
Регистрация: 31.05.2016
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
nebug15 на пути к лучшему
По умолчанию НЕ могу включить timer 0 b capture режим

Здравствуйте ,проблема такая ATtiny2313A-SU.внутренний RC генератор.
не работают всесте таймер 0 и таймер 1 в режиме захвата. суть
программы захватом измеряем длину уровня, вычесляем и таймером 0 на 3 семисегментных индикатора,так вот таймер0 в железе не работает, в протеусе моделируется отлично. может я чего не знаю?
исходник прилагаю

#include ‹tiny2313.h›
#include ‹delay.h›
eeprom char a,b,c,d,e,f;


unsigned char i=1,zamer_t;
unsigned int r=0,x,y,t,m=180;
//unsigned int d[3];
unsigned char seg[]=
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ;
interrupt [EXT_INT1] void ext_int1_isr(void)
{}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{ b=1;
//if(r›65000)
// PORTD.4=0;
// r++;
if(m‹180)
m++;
else
{ PORTD.3=1;
delay_us(10);
PORTD.3=0;
m=0; }
PORTB = 0x00; //выключаем все сегменты
PORTD=~i&0x17;
switch(i)
{ case 1:
{PORTB = seg[t%10];} break; //раскладываем число на разряды
case 2:
{PORTB = seg[t%100/10];if(t‹10) PORTB=0; } break;
case 4:
{PORTB = seg[t%1000/100];if(t‹100) PORTB=0;} break; //
}

if (i›2) i=1;
else
i=i‹‹1;
}
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{ c=1;

switch(zamer_t)
{
case 0: // Вычисляем ширину импульса
{
x = ICR1; // Запоминаем значениие счётчика
TCCR1B &= ~(1 ‹‹ ICES1); // Устанавливаем прерывание по спадающему фронту импульса
zamer_t = 1; // Переходим к следующему вычислению
}break;

case 1:
y = ICR1; // Запоминаем значение счётчика
TCCR1B |= (1 ‹‹ ICES1); // Устанавливаем прерывание по нарастающему фронту импульса
// Приводим все переменные к одному типу и вычисляем длительность импульса
t = ((1550-((y -x)/5.)*0.33333)+1;

TCNT1=0;
zamer_t = 0;
// Переходим к следующему вычислению
break;
}}
void main(void)
{
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Func7=In Func6=In Func5=In Func4=In Func3=out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=1 State1=1 State0=1
PORTD=0x0F;
DDRD=0x0F;
// Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
PORTB=0xFF;
PORTD=0x00;
a=1;
delay_ms(10000);

PORTB=0x00;

//if(PIND.5==0)
// PORTB=0x07;
// delay_ms(1000);

//******************************************

//**************************************

//*******************************************

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 4000,000 kHz
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x02;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 4000,000 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Rising Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: On
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x82;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: On
// INT1 Mode: Low level
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=0x00;
MCUCR=0x00;
EIFR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x02;
TIMSK=0x0a;

// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
// Global enable interrupt
#asm("sei")


while (1)
{

};
}
Реклама:
nebug15 вне форума  
Непрочитано 31.05.2016, 19:46  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,457
Сказал спасибо: 3,225
Сказали Спасибо 3,511 раз(а) в 2,392 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: НЕ могу включить timer 0 b capture режим

Сообщение от nebug15 Посмотреть сообщение
таймер0 в железе не работает,
Как это проявляется?

1. За delay_us(10); и seg[t%10]-подобное в прерывании - казнить надо.
2. Если нажать Ctrl-A будет видна решающая подсказка.
Сколько тактов (по симулятору) выполняется interrupt [TIM0_OVF] void timer0_ovf_isr(void)?
3.
Код:
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x02;
TIMSK=0x0a;
Достаточно только последнего присваивния. Просто придирка к оформлению.
ForcePoint вне форума  
Непрочитано 01.06.2016, 09:29  
nebug15
Прохожий
 
Регистрация: 31.05.2016
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
nebug15 на пути к лучшему
По умолчанию Re: НЕ могу включить timer 0 b capture режим

По 1 замечанию,не надо казнить,знаю что нежелательно но времени прерывания по таймер0 8 мс
по 3 пробывал. На атюни 2313v работает как надо но только если записать в такой последовательности.
2 а что там?)
nebug15 вне форума  
Непрочитано 01.06.2016, 13:13  
nebug15
Прохожий
 
Регистрация: 31.05.2016
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
nebug15 на пути к лучшему
По умолчанию Re: НЕ могу включить timer 0 b capture режим

Проявляется,да никак,не обрабатываеться прерывание от таймера и все.как будто нет его,прерывания этого.выяснил это следующим образом,создал переменные и записывал на входе каждого прерывания от таймера0 и capture. В eeprom значение потом считывал програматором, так вот capture изменяет значение ячейки памяти в eeprom а прерывание от tmr0. Нет
nebug15 вне форума  
Непрочитано 01.06.2016, 14:44  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,457
Сказал спасибо: 3,225
Сказали Спасибо 3,511 раз(а) в 2,392 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: НЕ могу включить timer 0 b capture режим

Сообщение от nebug15 Посмотреть сообщение
По 1 замечанию,не надо казнить,знаю что нежелательно
Недопустимо. Прерывания - не для этого сделаны.
Сообщение от nebug15 Посмотреть сообщение
но времени прерывания по таймер0 8 мс
Что-о-о?
Сообщение от nebug15 Посмотреть сообщение
2 а что там?)
Подсказка, белыми буквами на белом фоне.

Сообщение от nebug15 Посмотреть сообщение
не обрабатываеться прерывание от таймера и все.как будто нет его,прерывания этого
Думаю, это потому, что обработчик выполняется дольше, чем время между прерываниями.
Миниатюры:
Нажмите на изображение для увеличения
Название: Ctrl-A.png
Просмотров: 0
Размер:	44.3 Кб
ID:	93511  
ForcePoint вне форума  
Непрочитано 01.06.2016, 16:58  
nebug15
Прохожий
 
Регистрация: 31.05.2016
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
nebug15 на пути к лучшему
По умолчанию Re: НЕ могу включить timer 0 b capture режим

Вы мне объясните почему один и тот же код работает на 2313v на на 2шт 2313a не исполняется?!
nebug15 вне форума  
Непрочитано 01.06.2016, 17:29  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,457
Сказал спасибо: 3,225
Сказали Спасибо 3,511 раз(а) в 2,392 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: НЕ могу включить timer 0 b capture режим

Наверное - не могу. Так и не понятно в чём выражается неработоспособность. Ваш метод с записью в EEPROM для отладки не катит - т.к. запись много дольше происходит, чем прерывание.

P.S. Если есть разница между "v" и "a" - может с fuse'ами напутано что-то.
ЕМНИП, break'и в case'ах надо перед скобкой "}" поставить.
ForcePoint вне форума  
Непрочитано 01.06.2016, 18:46  
nebug15
Прохожий
 
Регистрация: 31.05.2016
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
nebug15 на пути к лучшему
По умолчанию Re: НЕ могу включить timer 0 b capture режим

Неработоспособность выражаеться в неработоспособности динамической индикации
nebug15 вне форума  
Непрочитано 01.06.2016, 20:00  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,457
Сказал спасибо: 3,225
Сказали Спасибо 3,511 раз(а) в 2,392 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: НЕ могу включить timer 0 b capture режим

Неработоспособностей динамической индикации может быть дюжина видов (ничего не светится, светится единственное знакоместо, одна цифра на все знакоместа и т.п.).

Например у tiny2313A есть требование к минимальной скорости нарастания питания - не менее 0.01 В/мс. На избыточно зафильтрованном питании - могут быть казусы.
ForcePoint вне форума  
Непрочитано 01.06.2016, 22:03  
mimuh64
Прописка
 
Регистрация: 29.10.2008
Сообщений: 272
Сказал спасибо: 0
Сказали Спасибо 102 раз(а) в 95 сообщении(ях)
mimuh64 на пути к лучшему
По умолчанию Re: НЕ могу включить timer 0 b capture режим

Ну, а если все таки где нибудь поставить DDRВ=0xff;???
mimuh64 вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Прерывания по таймеру ADSP 21065l sergurets Цифровые сигнальные процессоры 7 23.03.2011 00:49
ISIS Schematic Capture включить отображение выводов питания celeron Proteus 2 06.01.2010 19:14


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.