امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
<Counter OR Interrupt>کانتر یا اینتراپت؟
نویسنده پیام
cortex-m3 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 93
موضوع‌ها: 40
تاریخ عضویت: اسفند ۱۳۹۱

تشکرها : 11
( 24 تشکر در 13 ارسال )
ارسال: #1
<Counter OR Interrupt>کانتر یا اینتراپت؟
با سلام

برای شمارش یه وقفه خارجی ، چه فرقی داره که از counter استفاده کنیم یا interrupt و شمارنده نرم افزاری؟
کدوم قابلیت شمارش بیشتر در یک ثانیه رو داره؟(کدوم فرکانس بیشتری داره؟)
هر کدوم تا چه فرکانسی میتونند بشمارند؟اگه این مطلب توی datasheet هست با ذکر منبع ذکر کنید.

با تشکر
۰۲-مرداد-۱۳۹۴, ۰۹:۲۶:۱۱
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #2
RE: <Counter OR Interrupt>کانتر یا اینتراپت؟
سلام.


اگر منظورتون چیزی مثل فرکانس متر هست و منظور از counter ، واحد تایمر هست. و این قضیه رو دارید با External Interrups مقایسه می کنید، طبیعیه که واحد Timer در مود Counter بسیار بهینه تر عمل می کنه و بدون درگیر کردن میکرو در شمارش به صورت سخت افزاری ثبت اشون می کنه ...

اگر منظورتون این نبود ، واضحتر بیان کنید.


موفق باشید.

۰۲-مرداد-۱۳۹۴, ۱۲:۱۹:۵۳
وب سایت ارسال‌ها
پاسخ
cortex-m3 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 93
موضوع‌ها: 40
تاریخ عضویت: اسفند ۱۳۹۱

تشکرها : 11
( 24 تشکر در 13 ارسال )
ارسال: #3
RE: <Counter OR Interrupt>کانتر یا اینتراپت؟
(۰۲-مرداد-۱۳۹۴, ۱۲:۱۹:۵۳)sharin نوشته است: سلام.


اگر منظورتون چیزی مثل فرکانس متر هست و منظور از counter ، واحد تایمر هست. و این قضیه رو دارید با External Interrups مقایسه می کنید، طبیعیه که واحد Timer در مود Counter بسیار بهینه تر عمل می کنه و بدون درگیر کردن میکرو در شمارش به صورت سخت افزاری ثبت اشون می کنه ...

اگر منظورتون این نبود ، واضحتر بیان کنید.


موفق باشید.

بله منظورم همینه.در مورد بهینه تر بودن counter از interrupt هم باهاتون موافقم.(چون counter همه ی کارهاش رو سخت افزاری انجام میده ولی interrupt چند خط کد میخاد) ولی مشکل من بیشتر در مورد ماکزیمم فرکانس ورودی در counter و interrupt هست.توی دیتا شیت میکرو باید باشه ولی من چیزی ندیدم.
در واقع من نسبت رابطه فرکانس ورودی رو نسبت به clock میکرو میخام .مثلا اگه clock میکرو 8MHz باشه،فرکانس ورودی counter یا interrupt حداکثر چقدر میتونه باشه؟ حالا اگه clock میکرو 16MHz بود چطور؟
اگه منبع توی دیتا شیت میکرو رو بدید بهتره.
۰۲-مرداد-۱۳۹۴, ۱۳:۲۴:۳۵
ارسال‌ها
پاسخ
cortex-m3 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 93
موضوع‌ها: 40
تاریخ عضویت: اسفند ۱۳۹۱

تشکرها : 11
( 24 تشکر در 13 ارسال )
ارسال: #4
RE: <Counter OR Interrupt>کانتر یا اینتراپت؟
با سلام
علت سوالهای قبلی این بود که میخاستم فرکانس متر بسازم و دقیقا به مشکلی که فکر میکردم برخوردم.اونم اینکه فرکانس متر توی رنج 1Hz تا 100Hz به خوبی عمل میکنه و بعد از اون هر چی فرکانس بره بالاتر خطا بیشتر میشه(البته احتمال داره مشکل از نوع متغیر ها باشه)
اینم برنامه:
کد:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 7/25/2015
Author  : PerTic@n
Company : If You Like This Software,Buy It
Comments: 


Chip type               : ATmega8
Program type            : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega8.h>

// Alphanumeric LCD functions
#include <alcd.h>
#include <stdio.h>

char ov=0;
int f=0;
char str_f[20];

// Timer1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
ov++;
TCNT1=0;

}

// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
//TCCR2=0x00;
//TIMSK=0x00;
f=ov*65535;
f=f+TCNT1;

lcd_gotoxy(0,0);
sprintf(str_f,"%d   ",f);
lcd_puts(str_f);

ov=0;
TCNT1=0;
//TIMSK=0x44;
TCCR2=0x05;

}

// Declare your global variables here

void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: T1 pin Rising Edge
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x07;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: TOSC1 pin
// Clock value: PCK2/128
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x08;
TCCR2=0x05;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x44;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 3
// D5 - PORTC Bit 4
// D6 - PORTC Bit 5
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);

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

while (1)
      {
      
      }
}
تایمر 2 واسه زمان 1 ثانیه هست و تایمر یک شمارنده.

با تشکر
۰۳-مرداد-۱۳۹۴, ۱۹:۱۶:۲۴
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #5
RE: <Counter OR Interrupt>کانتر یا اینتراپت؟
خوب طبیعی هست ، رفتن به روال وقفه و اجرای دستوراتش هم زمان بره و در فرکانس های بالا قابل مقایسه می شه.
ابتدای ورود به روال وقفه می تونید تایمر زمان سنج رو متوقف و در انتهای روتین وقفه مجدد اون رو فعال کنید.

توی تابع وقفه هم از دستورات LCD استفاده کردید که درش کلی تاخیر نهفته ست!!
با این شرایط انتظار بیش از اینها هم نباید داشته باشید.

روال وقفه رو سبک کنید ، به راحتی تا چند صد کیلو هرتز جواب می ده ... .

موفق باشید.

۰۳-مرداد-۱۳۹۴, ۲۰:۰۰:۲۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : behzady
cortex-m3 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 93
موضوع‌ها: 40
تاریخ عضویت: اسفند ۱۳۹۱

تشکرها : 11
( 24 تشکر در 13 ارسال )
ارسال: #6
RE: <Counter OR Interrupt>کانتر یا اینتراپت؟
با سلام.

بنده با میکرو atmega8 با فرکانس داخلی 8MHz و با استفاده از Input Capture تونستم یه فرکانس متر بسازم ولی فقط تا 25kHz جواب میده.
چجوری میتونم رنج فرکانس متر رو بیشتر کنم؟
۰۶-مرداد-۱۳۹۴, ۰۰:۱۲:۰۱
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #7
RE: <Counter OR Interrupt>کانتر یا اینتراپت؟
بلاخره محدودیت هایی هست ، اما با timer در مود counter کار کنید احتمالا نتیجه ی بهتری بگیرید ، تا جایی که یادم هست تا چند صد کیلو هرتز رو اندازه گرفته بودم ، گرچه دقیقش یادم نیست و حدش رو چک نکردم و برای خیلی وقت پیش بود. فرکانس میکرو هم بالاتر ببرید به همین نسبت رنج های بیشتری رو می تونید اندازه بگیرید.

۰۶-مرداد-۱۳۹۴, ۲۲:۵۳:۴۵
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] کانتر در بسکام questnet 7 3,486 ۱۲-مرداد-۱۳۹۷, ۰۱:۵۵:۵۴
آخرین ارسال: questnet
  [سوال] وقفه کانتر amir4 1 2,300 ۳۰-مرداد-۱۳۹۴, ۱۰:۰۹:۱۱
آخرین ارسال: sharin
  [سوال] راهنمایی برای کار با تایمر کانتر صفر hamze_b 18 10,167 ۱۰-خرداد-۱۳۹۴, ۱۷:۱۳:۲۴
آخرین ارسال: sharin
  [فوری] وجود نویز در کانتر sadegh1rezaei 3 2,110 ۱۰-آبان-۱۳۹۳, ۱۵:۳۱:۱۵
آخرین ارسال: sadegh1rezaei
  [فوری] مشکل با برنامه کانتر میکرو milad15m 22 9,050 ۱۲-مهر-۱۳۹۳, ۱۷:۲۸:۰۸
آخرین ارسال: omid_phoenix
  کمک فوری در برنامه نویسی کانتر lightlife 0 1,814 ۰۹-مرداد-۱۳۹۳, ۱۸:۰۷:۱۵
آخرین ارسال: lightlife
  مدار کانتر 4 رقمی بدون میکروکنترلر reza-m 0 3,915 ۱۶-آبان-۱۳۹۲, ۱۹:۱۹:۴۹
آخرین ارسال: reza-m
  تایمر کانتر kelaran 0 1,660 ۲۸-اردیبهشت-۱۳۹۲, ۱۱:۴۳:۳۶
آخرین ارسال: kelaran
  فرق کانتر بالا رونده و پایین رونده alighowsi 7 6,408 ۲۲-دى-۱۳۹۱, ۲۲:۰۵:۴۰
آخرین ارسال: behzady
  مشکل در کانتر 1 parsegade 1 1,877 ۱۶-آذر-۱۳۹۰, ۱۵:۱۵:۱۱
آخرین ارسال: علي برقي

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS