خوش آمديد!
23:20 يكشنبه 30 ارديبهشت ماه ، 1403
سايت مهندس لاچيني | پروژه ها و آموزش الكترونيك و تابلوروان: تالار گفتمان

HLachini.elewiz.com :: نمايش موضوعات - rs232 , rs233

rs232 , rs233

 

ارسال موضوع جديد  پاسخ به اين موضوع   ارسال تشکر 

   HLachini.elewiz.com صفحه اول انجمن -> مدارات واسط کامپیوتر -> پورت سریال

نمايش موضوع قبلي :: نمايش موضوع بعدي  
نويسنده پيغام

1388210
کاربر فعال
کاربر فعال

وضعيت: آفلاين
22 تير ماه ، 1388
تعداد ارسالها: 11
امتياز: 2
تشکر کرده: 5
تشکر شده 1 بار در 1 پست


ارسالارسال شده در: دوشنبه، 16 شهريور ماه ، 1388 04:43:58    موضوع مطلب: rs232 , rs233 پاسخ همراه با اعلان

چند تا سوال در مورد مباحث مربوط به avr داشتم
لطفا كمي در مورد
1 .rs232,rs233 و نحوه ارتباط به صورت نرم نفزاري آن به ميكرو (فقط ميدونم به max به علت عدم سازگاري باttl نياز دارد)
2 .نحوه ارتباط سريال ميكرو و موارد كاربردش
توضيح بدهيد و يا معرفي لينكي كه موارد فوق را تشريح كرده باشد .
با تشكر

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي
تشکرهاي ثبت شده از ايجاد کننده تاپيک :
1388210(دوشنبه، 16 شهريور ماه ، 1388 18:14:25),  

SoS
مدیر سایت
مدیر سایت

وضعيت: آفلاين
11 شهريور ماه ، 1387
تعداد ارسالها: 569
امتياز: 371
تشکر کرده: 15
تشکر شده 334 بار در 201 پست


ارسالارسال شده در: دوشنبه، 16 شهريور ماه ، 1388 17:20:01    موضوع مطلب: آموزش پورت سریال در بسکام پاسخ همراه با اعلان

UART مخفف کلمات Universal Asynchronous Receiver and Transmitter است که برای ارسال و دریافت اطلاعات بین دو وسیله استفاده میشود و غالبا برای ارتباط :
PC-to-PC
PC-to-micro controller
micro controller-to-micro controller
استفاده میگردد.
در ارتباط سریال از سطوح ولتاژ TTL صفر و 5 ولت و یا LVTTL بسته به ولتاژ تغذیه میکرو استفاده میشود.
در تصویر زیر شکل کانکتور و شماتیک اتصال MAX232 به میکرو و تصویر خود آی سی Max232 نشان داده شده است.



کانکتور DB-9 دارای 9 پین است که برای ارتباط سریال فقط به 3 پین آن نیاز داریم.در تصویر بالا نمای روبروی کانکتور نشان داده شده و برای لحیم کاری باید از پایه های سمت دیگر استفاده کنید.
اگر میکروکنترولر شما فاقد UART است شما از UART نرم افزاری میتوانید استفاده کنید که در زیر توضیح داده شده است. در صورتیکه میکرو دارای یک UART است، پین های TxD و RxD را به TxD و RxD شماتیک بالا وصل کنید. اگر میکروکنترولر بیش از یک UART دارد، پین های TxD0 و RxD0 را به TxD و RxD شماتیک بالا متصل کنید.
در این مرحله شما نیاز دارید که برنامه را مقدار دهی اولیه کنید. برای این منظور یک فایل جدید bas را باز کنید و کدهای زیر را در ابتدای برنامه اضافه کنید.

:كد

$regfile = "your micro here def.dat"
$crystal = 8000000
$baud = 19200



حتما میکروکنترولر خود را بعد از عبارت $regfile تعریف کنید، بعنوان مثال اگر میکروی شما ATMega32 است :

:كد

$regfile = "m32def.dat"


برخی از میکروهای جدید دارای اسیلاتور داخلی هستند و همچنین برخی بصورت پیش فرض بر روی اسیلاتور داخلی پیکربندی شده اند. استفاده از اسیلاتور داخلی به معنای عدم نیاز به استفاده از اسیلاتور خارجی است.
این مرحله را در صورتیکه اسیلاتور داخلی وجود دارد انجام دهید
پروگرمر BASCOM-AVR را مطابق زیر باز کنید :



تب “Lock and Fuse Bits” را انتخاب کنید و پنجره پروگرمر را ماکزیمایز کنید.
- بررسی کنید در بخش “Fusebit” بصورت زیر باشد :

:كد

"1:Divide Clock by 8 Disabled"


و

:كد

 "Int. RC Osc. 8 MHz; Start-up time: X CK + X ms; [CKSEL=XXXX SUT=XX]"




این تنظیمات در تمامی AVR ها وجود ندارد، در صورتیکه چنین تنظیماتی وجود نداشت، هیچکدام از فیوز بیتها را تغییر ندهید.
در صورتیکه این تنظیمات وجود داشتند اما در وضعیت درست نبودند. آنها را توسط منو کشوئی با کلیک کردن بروی گزینه دیگر فیوز تغییر دهید. نهایتا بر روی دکمه "Program FS" کلیک کنید. بر روی دکمه "Refresh" کلیک کنید تا مقادیر واقعی این فیوز بیتها را ببینید.
اکنون یک کابل تخت را بین کانکتورهای DB-9 سمت میکرو و سمت کامپیوتر وصل کنید.
یک برنامه آزمایشی را در میکرو پروگرم کنید، این برنامه باید مثل برنامه زیر باشد :

:كد

$regfile = "m32def.dat" 'Define your own
$crystal = 8000000
$baud = 19200
Do
  Print "Hello World"
  Waitms 25
Loop
End


اکنون برنامه ترمینال BASCOM-AVR را باز کنید و ارتباط را توسط کلیک کردن بر روی :


:كد

“Terminal” -> “Settings”


تنظیم کنید و پورت COM کامپیوتر را انتخاب کنید و موارد زیر را انتخاب کنید :

:كد

baud 19200, Parity none, Data bits 8, Stop bits 1, Handshake none, emulation none




در صورتیکه در پنجره ترمینال امولاتور BASCOM-AVR عبارت Hello World را مشاهده کردید تنظیمات را بدرستی انجام داده اید.

مثال :

شما میتوانید مثال زیر را نیز اجرا کنید توسط این چگونگی ارسال و دریافت را توسط دستورات مختلف نشان میدهد :

:كد

$regfile = "m88def.dat"
$crystal = 8000000
$baud = 19200
 
Dim Akey As Byte  'Here we declare a byte variable
 
Print
Print "Hello, hit any alphanumerical key..."
Akey = Waitkey()  'Waitkey waits untill a char is received from the UART
Print Akey

Wait 1
Print
Print "Thanks!, as you could see the controller prints a number"
Print "but not the key you pressed."
 
Wait 1
Print
Print "Now try the enter key..."
Akey = Waitkey()
Akey = Waitkey()
Print Akey
 
Print
Print "The number you see is the ASCII value of the key you pressed."
Print "We need to convert the number back to the key..."
Print     'Notice what this line does
Print "Please try an alphanumerical key again..."
Akey = Waitkey()
Print Chr(akey) 'Notice what this does
Print "That's fine!"
 
Wait 1
Print
Print "For a lot of functions, just one key is not enough..."
Print "Now type your name and hit enter to confirm"

Dim Inputstring As String * 12          'Declare a string variable here
 
Do
Akey = Waitkey()
If Akey = 13 Then Goto Thanks           'On enter key goto thanks
   Inputstring = Inputstring + Chr(akey) 'Assign the string
Loop

Thanks:
Print "Thank you " ; Inputstring ; " !"             'Notice what ; does

Wait 1
Print
Print "Take a look at the program code and try to understand"
Print "how this program works. Also press F1 at the statements"
Print
Print "If you understand everything continue to the next experiment"
End


اسکی :
همانطور که در مثال بالا دیده شد ما از دستور PRINT برای ارسال هر چیزی به UART استفاده کردیم. در واقع ما چیزی جز متن ارسال نکردیم. ما کاراکترهای ASCII را ارسال نمودیم. ASCII مخفف American Standard Code for Information Interchange به معنای کد استاندارد آمریکائی برای تبادل اطلاعات است. اساسا ASCII یک لیست از 127 کاراکتر است.
شما میتوانید جدول کامل ASCII را در اینجا مشاهده کنید.

کدهای CR و LF :
در مثال قبلی شما مشاهده کردید که دومین عبارت PRINT متن را در خط بعدی چاپ میکند. در حقیقت دستور PRINT همیشه کدهای CR و LF را اضافه میکند.
بصورت ابتدایی ما با عبارت :

:كد

Print “ABC”


ما کدهای زیر را به UART ارسال میکنیم :

:كد

65 66 67 13 10


کد 13 مکان نما را به ابتدای خط جاری برمیگرداند و کد 10 آنرا به خط بعدی میبرد.

:كد

Print “ABC” ;


زمانیکه ما سمیکالن ";" را در انتهای دستور تایپ میکنیم ...
بسکام کدهای 13 و 10 را ارسال نمیکند. پس شما میتوانید متن دیگر را بعد از ABC و در همان خط چاپ میکند.

:كد

Print “ABC” ; Chr(13) ;

در کد بالا کد 13 ارسال میشود و عبارت print بعدی بروی ABC باز نوشته خواهد شد.

نمای کلی :
در اینجا برخی دیگر از دستورات که میتوان برای ارتباط UART استفاده نمود آورده شده است :


:كد

Waitkey()

Waitkey تا کاراکتری بافر سریال دریافت کند تاخیر ایجاد میکند.

:كد

Ischarwaiting()

مقدار 1 را در صورتیکه در بافر سخت افزاری UART کاراکتری در انتظار باشد را برمیگرداند.

:كد

Inkey()

Inkey نخستین کاراکتر اسکی موجود در بافر سریال را برمیگرداند.

:كد

Print

Print یک رشته را به UART ارسال میکند.

مثال دیگر :
این مثال نشان میدهد که چگونه به استفاده از Ischarwaiting برای تست زده شدن کلید است. در صورتیکه کلیذی زده شد آنرا میخواند.

:كد

'Print "Press B key to start"
Dim Serialcharwaiting As Byte, Serialchar As Byte
 
Serialcharwaiting = Ischarwaiting()   'Check if B or b pressed then goto
If Serialcharwaiting = 1 Then
  Serialchar = Inkey()
  If Serialchar = 66 Or Serialchar = 98 Then
    Goto MyRoutine
  End If
End If
 
Goto Main
 
Myroutine:
'Statements
 
Main:
'Statements
End


بافر نمودن اطلاعات سریال :
در صورتیکه ارتباط سریال سرعت بالا داشته باشیم حتما باید از بافر ورودی و خروجی سریال استفاده کنیم. این بافر کردن توسط بسکام انجام شده و فقط برای UART سخت افزاری استفاده میشود.
برای پیکربندی بافر جهت استفاده در UART ، شما نیاز به استفاده از عبارت Config دارید.


:كد

Config Serialout = Buffered , Size = 20


و یا

:كد

Config Serialin = Buffered , Size = 20


اطلاعات بیشتر را میتوانید در HELP بسکام عبارت "config serialin" را جستجو کنید.
و نیز برنامه نمونه “RS232BUFFER.BAS” را در فولدر مثالهای بسکام میتوانید مشاهده کنید.

UART نرم افزاری :
در مثال قبلی ما از UART سخت افزاری استفاده کردیم. و این به معنای این است که کمپایلر از رجیسترهای داخلی UART و سخت افزار داخلی RxD , TxD استفاده میکند.اگر شما UART سخت افزاری نداشته باشید میتوانید از UART نرم افزاری استفاده کنید.
کمپایلر بسکام بسادگی UART اضافه را ایجاد میکند. کمپایلر بسکام بصورت مجازی UART نرم افزاری را بر روی هر پینی از پورتها ایجاد میکند.

بخاطر داشته باشید که UART نرم افزاری به اندازه UART سخت افزاری مطمئن نیست. بدین صورت که در هنگامی که شما از وقفه ها استفاده میکنید ممکن است که با مشکلات زمانبندی مواجه شوید.

در این مثال ما پین های portc.1 و portc.2 از میکروکنترولر را.
portc.1 به TxD و portc.2 به RxD در شماتیک بالا متصل کنید.

:كد

$regfile = "m88def.dat"
$crystal = 8000000
$baud = 19200
 
Dim B As Byte
Waitms 100
 
'Open a TRANSMIT channel for output
Open "comc.1:19200,8,n,1" For Output As #1
Print #1 , "serial output"
 
'Now open a RECEIVE channel for input
Open "comc.2:19200,8,n,1" For Input As #2
'Since there is no relation between the input and output pin
'there is NO ECHO while keys are typed
 
Print #1 , "Press any alpha numerical key"
 
'With INKEY() we can check if there is data available
'To use it with the software UART you must provide the channel
Do
   'Store in byte
   B = Inkey(#2)
   'When the value > 0 we got something
   If B > 0 Then
      Print #1 , Chr(b)                         'Print the character
   End If
Loop
Close #2                                         'Close the channels
Close #1
 
End


بعد از پروگرم کردن میکرو و اتصال به کابل سریال، ترمینال امولاتور را توسط کلیک کردن بر روی در بسکام را اجرا کنید.
درخواستهای برنامه را در محیط متنی مشاهده خواهید نمود و از طریق این برنامه به آن پاسخ دهید.




این متن توسط سایت www.HLachini.com و از روی راهنمای نرم افزار بسکام ترجمه شده است.

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي بازديد از سايت ارسال كننده مطلب
کاربرانی که برای این ارسال از SoS تشکر کرده اند 1388210

1388210
کاربر فعال
کاربر فعال

وضعيت: آفلاين
22 تير ماه ، 1388
تعداد ارسالها: 11
امتياز: 2
تشکر کرده: 5
تشکر شده 1 بار در 1 پست


ارسالارسال شده در: دوشنبه، 16 شهريور ماه ، 1388 18:16:19    موضوع مطلب: پاسخ همراه با اعلان

با تشكر از پاسخ شما

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي

av_saber
کاربر جدید
کاربر جدید

وضعيت: آفلاين
21 خرداد ماه ، 1389
تعداد ارسالها: 1
امتياز: 2
تشکر کرده: 0
تشکر شده 0 بار در 0 پست


ارسالارسال شده در: جمعه، 21 خرداد ماه ، 1389 12:30:58    موضوع مطلب: پاسخ همراه با اعلان


با سلام خدمت دوستان
من تو پروژه خودم احتياج دارم كه همزمان چند uart نرم افزاري داشته باشم در حد 6-7 تا ولي هر كاري مي كنم با دستورات بيسكام چيزي فرستاده نمي شه در حالت سخت افزاري خوب كار مي كنه ولي نرم افزاري مشكل داره طبق كتاب مهندس كاهه وhelp خود بيسكام همه چيز درسته ولي نمي دونم كسي ميتونه كمك كنه؟
اينم دستورات نوشته شده

Open "comb.1:4800,8,n,1" For Output As #1
$baud #1 = 4800
Open "comb.2:4800,8,n,1" For Input As #2
$baud #2 = 4800
Print #1 , A
Input #2 , B
Print #1 , B
Lcd B
Close #1
Close #2

از پورت هاي b1,b2 به عنوان rx,tx استفاده كردم در پروژه اصلي هم بايد از پورت هاي co-c5 جهت وروديRX و b1 خروجي TX استفاده كنم

بازگشت به بالا

رويت مشخصات كاربر ارسال پيغام شخصي
تمامي مطالب ارسال شده:   
ارسال موضوع جديد   پاسخ به اين موضوع   ارسال تشکر

   HLachini.elewiz.com صفحه اول انجمن -> مدارات واسط کامپیوتر -> پورت سریال

زمان پيشفرض سايت: ساعت گرينويچ + 3.5 ساعت
صفحه 1 از 1
  
نام کاربري:      کلمه عبور:     

~ يا ~
عضويت در سايت

  


 


Powered by phpBB © 2001, 2008 phpBB Group
پروگرامر و تستر آِی سی سانا با قابلیت تشخیص اتوماتیک قطعه و درج تمامی قطعات از پین یک زیف و تامین کلاک قابل استفاده در بسکام و کدویژن