سلام دوستان من به یه مشکلی با AVR برخورد کردم ! من از کانال ADC میکرو چند تا نمونه می خونم و بعد اینها رو تو دو تا بافر جدا ذخیره می کنم حالا می خوام از این دو تا بافر دیتا رو بخونم و بعد با استفاده از گذر از صفر فرکانس رو بدست بیارم ؟ ولی نمی دونم چرا درست کار نمی کن
این هم برنامه اش :NO:
$regfile = "m32def.dat"
$crystal = 1105920
Dim N As Word , M As Word , Odd(400)as Word , Even(400) As Word , K As Byte _
, T As Word , F As Word
Config Pind.7 = Output
Portd.7 = 0
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7 _
, E = Pind.6 , Rs = Pinc.3
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Config Timer0 = Timer , Prescale = 8
K = 0
'------------------------------------------------ ( رایت در بافر)
Odd_ar:
Odd(n) = Getadc(7)
Incr N
If N < 400 Then
Goto Odd_ar
Else
Even_ar:
Even(m) = Getadc(7)
Incr M
If M < 400 Then
Goto Even_ar
Else
Stop Adc
End If
End If
'-------------------------------------------------------- ( محاسبه فرکانس )
For N = 1 To 400
If Odd(n) = 0 Then
Incr K
If K = 1 Then
Start Timer0
Goto Forward
Else
If K = 3 Then
Stop Timer0
Else
Goto Forward
End If
End If
End If
Forward:
Next
'---------------------------------------------------------------
T = Timer0
F = 1000 / T
Home
Lcd T
Locate 2 , 1
Lcd F
این هم برنامه اش :NO:
$regfile = "m32def.dat"
$crystal = 1105920
Dim N As Word , M As Word , Odd(400)as Word , Even(400) As Word , K As Byte _
, T As Word , F As Word
Config Pind.7 = Output
Portd.7 = 0
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7 _
, E = Pind.6 , Rs = Pinc.3
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Config Timer0 = Timer , Prescale = 8
K = 0
'------------------------------------------------ ( رایت در بافر)
Odd_ar:
Odd(n) = Getadc(7)
Incr N
If N < 400 Then
Goto Odd_ar
Else
Even_ar:
Even(m) = Getadc(7)
Incr M
If M < 400 Then
Goto Even_ar
Else
Stop Adc
End If
End If
'-------------------------------------------------------- ( محاسبه فرکانس )
For N = 1 To 400
If Odd(n) = 0 Then
Incr K
If K = 1 Then
Start Timer0
Goto Forward
Else
If K = 3 Then
Stop Timer0
Else
Goto Forward
End If
End If
End If
Forward:
Next
'---------------------------------------------------------------
T = Timer0
F = 1000 / T
Home
Lcd T
Locate 2 , 1
Lcd F
دیدگاه