امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده همزمان از adc و تايمر در avr
نویسنده پیام
mahmud121 آفلاین
تازه وارد

ارسال‌ها: 2
موضوع‌ها: 1
تاریخ عضویت: بهمن ۱۳۸۸

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #1
استفاده همزمان از adc و تايمر در avr
با سلام خدمت دوستان

من برنامه اي بزبان بيسيك نوشته ام كه شامل يك ميكرو مگا8 و يك كليد است كه دو زير برنامه را شامل مي شود با قرار دادن كليد در حالت A برنامه A اجرا مي شود و مي بايست كميتي آنالوگ نيز به ديجيتال تبديل شود در همان زير گروه و با زدن كليد در حالت B زير برنامه B با مبدل آنالوگ به ديجيتال در كانال B اجرا شود ولي نمي دانم مبدل آنالوگ به ديجيتال را بايد براي هر كانال جداگانه تعريف كنم يا خير يا كجاي برنامه آن را قرار دهم كه درست كار كند.برنامه به اين شكل است لطفا براي اصلاح آن كمكم كنيد.

کد php:
$regfile "m8def.dat"
$crystal 8000000
Deflcdchar 0 
31 31 31 31 31 31 31 31 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 ' 
replace with number (0-7)

Config Lcd 16 2
Config Lcdpin 
Pin Db4 Portd.3 Db5 Portd.2 Db6 Portd.1 Db7 _
 Portd.0 
Rs Portd.5 Portd.4

Config Adc 
Single Prescaler Auto Reference Avcc
 Dim A 
As Word As Word As Word As Byte Cols As Byte

 Start Adc
 Cursor Off
 
Do
 
Getadc(5)
 
4

 P 
4
 Cols 
16
 Locate 2 
1
 
For 3 To Cols
 Select 
Case I
 
Case Lcd Chr(0)
 Case Else : 
Lcd Chr(0)
 
End Select
 Next I

 Cols 
Cols 1
 
For Cols To 16
 Select 
Case I
 
Case Lcd Chr(1)
 Case Else : 
Lcd Chr(1)
 
End Select
 Next I
Loop 

Dim A 
As Word

Cls
Home
Locate 1 
4
Lcd 
" HELLO "
Wait 1



'*******************************************************************************

A:

Home
Locate 2 , 6
Lcd "<A>"
'
Config Pinb.1 Input
'Config Portc.1 = Output

Config Timer1 = Timer , Prescale = 1
Stop Timer1
Config Portb = Output
Config Portd = Output
Portb.1 = 0
Portd.6 = 0
Portd.7 = 0
'
Dim A As Word

Startline1
:
Start Timer1
0
Portb.1 
1
Do
1
Loop Until A 
10
Stop Timer1
If Pinc.1 0 Then Goto B
Goto Startline1


'*******************************************************************************

B:

Home
Locate 2 , 6
Lcd "<B> "
'
Config Pinb.1 Input
'Config Portc.1 = Output

Config Timer1 = Timer , Prescale = 1
Stop Timer1
Config Portb = Output
Config Portd = Output
Portb.1 = 0
Portd.6 = 0
Portd.7 = 0
'
Dim A As Word

Startline2
:
Start Timer1
0
Portb.1 
1
Do
1
Loop Until A 
12
Stop Timer1
If Pinc.1 1 Then Goto A
Goto Startline2 
(آخرین ویرایش در این ارسال: ۰۶-آبان-۱۳۸۹, ۲۳:۱۴:۵۰، توسط t3r!p3000.)
۰۶-آبان-۱۳۸۹, ۲۲:۴۹:۵۳
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #2
RE: استفاده همزمان از adc و تايمر در avr
مهندس پستت رو ویرایش کردم تا برنامه ات بهتر دیده بشه !!


کد:
Cols = P / 16
مهندس Cols رو word انتخاب کن !
یا p رو تقسیم بر 16 کن و بعدش بریز تو cols
این تقسیم word و byte اینجوری درست انجام نمی ده !


بعدش هم یه مدل ورژن بسکام بودش که به دلیل مشکلات کرک ناقص یه عالمه ایرد داشت ( مخصوصا تو تایمر ها )
ترجیحا از ورژن 1.11.9.8 فول استفاده کن !!!
۰۶-آبان-۱۳۸۹, ۲۳:۱۹:۵۶
ارسال‌ها
پاسخ
تشکر شده توسط : reza555
mahmud121 آفلاین
تازه وارد

ارسال‌ها: 2
موضوع‌ها: 1
تاریخ عضویت: بهمن ۱۳۸۸

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #3
RE: استفاده همزمان از adc و تايمر در avr
با تشكر
اگر در برنامه دقت كرده باشيد من هم بر 16 تقسيم كرده ام.من در اين پروژه يك كميت آنالوگ دارم كه مي خواهم زماني كه كليد در حالت 1 قرار دارد در اين كانال 1 اين كميت رو به ديجيتال تبديل كنم و وقتي كليد در حالت 2 است در كانال 2 اين كميت با استفاده از adc به ديجيتال تبديل شود.شايد بهتر باشد براي هر حالت (AوB)از يك كانال مجزاي adc ميكرو استفاده كنم به اين شكل
$regfile = "m8def.dat"
$crystal = 8000000
Deflcdchar 0 , 31 , 31 , 31 , 31 , 31 , 31 , 31 , 31 ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 ' replace ? with number (0-7)

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = _
Portd.0 , Rs = Portd.5 , E = Portd.4

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Dim A As Word , W As Word , P As Word , I As Byte , Cols As Byte
Start Adc
Cursor Off



Cls
Home
Locate 1 , 4
Lcd " "
Wait 1



'*******************************************************************************

A:

Home
Locate 2 , 6
Lcd A""
'Config Pinb.1 = Input
'Config Portc.1 = Output

Config Timer1 = Timer , Prescale = 1
Stop Timer1
Config Portb = Output
Config Portd = Output
Portb.1 = 0
Portd.6 = 0
Portd.7 = 0
'Dim A As Word

Startline1:
Start Timer1
A = 0
Portb.1 = 1
Do
A = A + 1
Loop Until A =10
Portb.1 = 0
A = 0
Portd.7 = 0
Do
A = A + 1
Loop Until A = 12
Stop Timer1
If Pinc.1 = 0 Then Goto B
Goto Startline1
Do
W = Getadc(5)
W = W * 4

P = W / 4
Cols = P / 16
Locate 2 , 1
For I = 3 To Cols
Select Case I
Case 0 : Lcd Chr(0)
Case Else : Lcd Chr(0)
End Select
Next I

Cols = Cols + 1
For I = Cols To 16
Select Case I
Case 0 : Lcd Chr(1)
Case Else : Lcd Chr(1)
End Select
Next I
Loop


'*******************************************************************************

B:

Home
Locate 2 , 6
Lcd "<B> "
'Config Pinb.1 = Input
'Config Portc.1 = Output

Config Timer1 = Timer , Prescale = 1
Stop Timer1
Config Portb = Output
Config Portd = Output
Portb.1 = 0
Portd.6 = 0
Portd.7 = 0
'Dim A As Word

Startline2:
Start Timer1
A = 0
Portb.1 = 1
Do
A = A + 1
Loop Until A = 10
Portb.1 = 0
A = 0
Portd.7 = 0
Do
A = A + 1
Loop Until A = 8
Stop Timer1
If Pinc.1 = 1 Then Goto A
Goto Startline2
Do
W = Getadc(4)
W = W * 4

P = W / 4
Cols = P / 16
Locate 2 , 1
For I = 3 To Cols
Select Case I
Case 0 : Lcd Chr(0)
Case Else : Lcd Chr(0)
End Select
Next I

Cols = Cols + 1
For I = Cols To 16
Select Case I
Case 0 : Lcd Chr(1)
Case Else : Lcd Chr(1)
End Select
Next I
Loop



۱۷-آبان-۱۳۸۹, ۰۸:۳۵:۲۶
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  تشخیص فشرده شدن همزمان شستی ها در کدویژن MicrowaveCO 5 3,965 ۲۸-اردیبهشت-۱۳۹۴, ۲۱:۳۱:۱۴
آخرین ارسال: sharin
  اجرای همزمان دو دستور تو بسکام رسول21 3 4,597 ۱۹-اسفند-۱۳۹۲, ۲۳:۱۲:۱۶
آخرین ارسال: robojalal
  استفاده همزمان adc و ورودی خروجی روی پورت A hadishooti 8 9,493 ۲۹-مهر-۱۳۹۲, ۰۱:۱۳:۴۰
آخرین ارسال: khofashshab
  استفاده همزمان از سه تایمر goldenmasoud 7 6,578 ۰۸-اسفند-۱۳۹۱, ۱۷:۱۸:۱۵
آخرین ارسال: sharin
Question [سوال] مدار تايمر و بازر mazyar97 14 11,757 ۰۱-آذر-۱۳۹۱, ۰۱:۳۵:۰۳
آخرین ارسال: hadikh73
  تداخل ارسال همزمان با اجرای عملیات در میکرو ashaebani2002 4 3,476 ۱۹-آبان-۱۳۹۱, ۰۰:۲۹:۲۷
آخرین ارسال: جلالی
  چک کردن دو پایه و مقایسه با هم بطور همزمان parham144 28 14,793 ۱۵-شهریور-۱۳۹۱, ۲۱:۵۷:۲۲
آخرین ارسال: aKaReZa75
  اجرای همزمان چنددستور alfaalarm 3 4,046 ۱۸-دى-۱۳۹۰, ۰۰:۵۱:۳۰
آخرین ارسال: saeiddiod
  سوال در مورد ارتباط سریال همزمان چند میکرو با کامپیوتر ali66als 1 2,571 ۰۶-مهر-۱۳۹۰, ۱۶:۳۰:۳۸
آخرین ارسال: h0x00i
  [سوال] خطا در استفاده از تاخير و تايمر علي برقي 4 3,639 ۱۸-مرداد-۱۳۹۰, ۱۰:۲۷:۲۴
آخرین ارسال: علي برقي

پرش به انجمن:


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

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