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

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

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

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

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

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


 
Опции темы

Время между прерываниями не соответствует расчетному

Непрочитано 01.12.2016, 23:09  
hubble
Прописка
 
Регистрация: 04.08.2006
Сообщений: 139
Сказал спасибо: 12
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
hubble на пути к лучшему
По умолчанию Время между прерываниями не соответствует расчетному

Код, который создал Wizzard CodeVisionAVR (да и калькулятор AVR рассчитал то же значение TCNT0=0x7B):
Код:
#include "tiny13a.h"

// Declare your global variables here

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
    // Reinitialize Timer 0 value
    TCNT0=0x7B;
    // Place your code here
    PORTB.0 ^= 1; 
    
}

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=(1«CLKPCE);
CLKPR=(0«CLKPCE) | (0«CLKPS3) | (0«CLKPS2) | (0«CLKPS1) | (0«CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Function: Bit5=In Bit4=In Bit3=In Bit2=In Bit1=Out Bit0=Out 
DDRB=(0«DDB5) | (0«DDB4) | (0«DDB3) | (0«DDB2) | (1«DDB1) | (1«DDB0);
// State: Bit5=T Bit4=T Bit3=T Bit2=T Bit1=0 Bit0=0 
PORTB=(0«PORTB5) | (0«PORTB4) | (0PORTB3) | (0«PORTB2) | (0«PORTB1) | (0«PORTB0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 4800,000 kHz
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
// Timer Period: 0,027708 ms
TCCR0A=(0«COM0A1) | (0«COM0A0) | (0«COM0B1) | (0«COM0B0) | (0«WGM01) | (0«WGM00);
TCCR0B=(0«WGM02) | (0«CS02) | (0«CS01) | (1«CS00);
TCNT0=0x7B;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=(0«OCIE0B) | (0«OCIE0A) | (1«TOIE0);

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=(0«INT0) | (0«PCIE);
MCUCR=(0«ISC01) | (0«ISC00);

// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1«ACD) | (0«ACBG) | (0«ACO) | (0«ACI) | (0«ACIE) | (0«ACIS1) | (0«ACIS0);
ADCSRB=(0«ACME);
// Digital input buffer on AIN0: On
// Digital input buffer on AIN1: On
DIDR0=(0«AIN0D) | (0«AIN1D);

// ADC initialization
// ADC disabled
ADCSRA=(0«ADEN) | (0«ADSC) | (0«ADATE) | (0«ADIF) | (0«ADIE) | (0«ADPS2) | (0«ADPS1) | (0«ADPS0);

// Global enable interrupts
#asm("sei")

    while (1)
    {    

    }
}
Время между прерываниями не соответствует расчетному.
Вместо 27.708us, прерывания наступают более, чем через 30us.
Вложения:
Тип файла: rar interrupt.rar (7.7 Кб, 0 просмотров)
Реклама:

Последний раз редактировалось hubble; 02.12.2016 в 00:56.
hubble вне форума  
Непрочитано 02.12.2016, 00:28  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,285
Сказал спасибо: 11,860
Сказали Спасибо 4,159 раз(а) в 3,177 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Время между прерываниями не соответствует расчетному

А уточнить реальное время и посчитать на его основе частоту для таймера?
Потом сравнить ее с использованной в расчётах для программы.
Может ошибка в установке частоты в итоге имеет место быть.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 02.12.2016, 00:40  
hubble
Прописка
 
Регистрация: 04.08.2006
Сообщений: 139
Сказал спасибо: 12
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
hubble на пути к лучшему
По умолчанию Re: Время между прерываниями не соответствует расчетному

Сообщение от mike-y-k Посмотреть сообщение
А уточнить реальное время и посчитать на его основе частоту для таймера?
Потом сравнить ее с использованной в расчётах для программы.
Может ошибка в установке частоты в итоге имеет место быть.
Необходима частота 36000Гц. Это 27.77(7)us. Погрешность до 27.708us (как в коде) допустима.
Сообщение от mike-y-k Посмотреть сообщение
Может ошибка в установке частоты в итоге имеет место быть.
Да вроде бы все проверил-перепроверил. Но не получается выйти на расчетное время прерывания. А вот если TCNT0=0x85, тогда все совпадает. Но это ведь не правильно.

Последний раз редактировалось hubble; 02.12.2016 в 01:03.
hubble вне форума  
Непрочитано 02.12.2016, 01:03  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,458
Сказал спасибо: 3,227
Сказали Спасибо 3,512 раз(а) в 2,393 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Время между прерываниями не соответствует расчетному

Откройте порождённый ассемблерный код и посмотрите, сколько проходит от прерывания до реальной перезаписи TCNT0.
ForcePoint вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ностальжи по школе... Ar-Gen-Tum Отвлекитесь, эмбеддеры! 141 27.02.2015 16:10
Парапсихология, гомеопатия и паранаука Marc2005 Отвлекитесь, эмбеддеры! 2616 05.09.2014 23:07
[Решено] Третье Послание Человечеству lelkanet Отвлекитесь, эмбеддеры! 201 06.01.2010 00:33


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


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