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

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

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

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

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

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


 
Опции темы
Непрочитано 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
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,853 раз(а) в 2,924 сообщении(ях)
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.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,744
Сказал спасибо: 2,885
Сказали Спасибо 3,094 раз(а) в 2,092 сообщении(ях)
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, время: 22:14.


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