:exclamation:
من يه avr atmega 16 دارم امروز پس از 3 سال دوباره داشتم در اين ميكرو برنامه مي نوشتم !
برنامه را نوشتم و نرم افزار BASCOM-AVR كامپايل كرد و در ميكرو ريخت و بعد از verfy ديدم كه برنامه درست كار نمي گنه و با مشكل مواجه است !
پس از اين مشكل برنامه ساده ديگري براي چك كردن پايه ها نوشتم كه در ست اجرا نشد !
برنامه ميكرو عوض شد و لي برنامه من نبود !
ايا ممكن است ميكرو خراب باشد ؟
ايا پروگرمر خراب است ؟
چه طوري چك كنم !
برنامه چك كردن درستي يا نادرستي ميكرو كه من نوشتم :
کد php:
$regfile = "M16DEF.DAT"
$crystal = 8000000
Config Portb = Output
Config Portc = Output
Config Porta = Output
Set Portb.0
Set Portb.1
Set Portb.2
Set Portb.3
Set Portb.4
Set Portb.5
Set Portb.6
Set Portb.7
Set Porta.0
Set Porta.1
Set Porta.2
Set Porta.3
Set Porta.4
Set Porta.5
Set Porta.6
Set Porta.7
Set Portc.0
Set Portc.1
Set Portc.2
Set Portc.3
Set Portc.4
Set Portc.5
Set Portc.6
Set Portc.7
Set Portd.0
Set Portd.1
Set Portd.2
Set Portd.3
Set Portd.4
Set Portd.5
Set Portd.6
Set Portd.7
Waitms 55555555
End
مهندس شواهد امر نشون می ده که پروگرامرت خرابه یا میکروت سوخته یا برق بهش نمی رسه !
بهتره واسه چک کردن برنامه چشمک زن بنویسی :
کد php:
$regfile = "m16def.dat" : $crystal = 1000000
Ddra = 255 : Ddrb = 255 : Ddrc = 255 : Ddrd = 255
Do
Porta = 255 : Portb = 255 : Portc = 255 : Portd = 255
Waitms 250
Porta = 0 : Portb = 0 : Portc = 0 : Portd = 0
Waitms 250
Loop
کافیه هم خروجی ها رو به LED وصل کنی !!
با اجازت پستتو رو هم ویرایش کردم تا برنامه ای که گذاشتی بهتر دیده بشه !
شايد به پروگرمر برق نمي رسه ؟
به نظرم اين بهترين جواب چون پروگرمر من 8 ولت و من ان را فعلانه با usb تغذيه كردم !
احسنت ! بايد چك كنم !
سلام دوست عزيز مي خواستم در مورد كدي كه نوشتيد چند سوال بپرسم اگه امكانش هست.
ميتونيد توضيح بديد كه اين كد چطور كار ميكنه و منظورش چي هست ؟
متشكرم
(۱۷-بهمن-۱۳۸۸, ۰۲:۱۴:۳۹)t3r!p3000 نوشته است: [ -> ]مهندس شواهد امر نشون می ده که پروگرامرت خرابه یا میکروت سوخته یا برق بهش نمی رسه !
بهتره واسه چک کردن برنامه چشمک زن بنویسی :
کد php:
$regfile = "m16def.dat" : $crystal = 1000000
Ddra = 255 : Ddrb = 255 : Ddrc = 255 : Ddrd = 255
Do
Porta = 255 : Portb = 255 : Portc = 255 : Portd = 255
Waitms 250
Porta = 0 : Portb = 0 : Portc = 0 : Portd = 0
Waitms 250
Loop
کافیه هم خروجی ها رو به LED وصل کنی !!
با اجازت پستتو رو هم ویرایش کردم تا برنامه ای که گذاشتی بهتر دیده بشه !
سلام
چند روز پیش همین مشکل نیز برای من پیش اومد. اونقدر در قسمت پروگرام کردن میکر بهش ور رفتم که درست شد. خودم هم نفهمیدم چه جوری درست شد.
شما هم همین کار ها را بکن شاید درست شد.
(۰۸-اردیبهشت-۱۳۸۹, ۱۰:۲۲:۱۰)اشك نوشته است: [ -> ]سلام دوست عزيز مي خواستم در مورد كدي كه نوشتيد چند سوال بپرسم اگه امكانش هست.
ميتونيد توضيح بديد كه اين كد چطور كار ميكنه و منظورش چي هست ؟
متشكرم
کد php:
$regfile = "m16def.dat" : $crystal = 1000000
آیسی استفاده شده رو معرفی میکنه که اینجا آیسی مگا16 هستش
کریستال داخلی میکرو رو فعال میکنه که فرکانسش رو 1 مگاهرتز در نظر گرفته
کد php:
Ddra = 255 : Ddrb = 255 : Ddrc = 255 : Ddrd = 255
مقاوت بالاکش پورت های a , b , c , d را فعال کرده، چون از این پورت ها به عنوان خروجی استفاده خواهد شد.(مقاومت بالاکش، میکروکنترلر را از جریان دهی و یا جریان کشی (Sink/Source) بیش از حد که باعث سوختن میکروکنترلر می شود، حفاظت می کند)
کد php:
Do
Porta = 255 : Portb = 255 : Portc = 255 : Portd = 255
Waitms 250
Porta = 0 : Portb = 0 : Portc = 0 : Portd = 0
Waitms 250
Loop
یک حلقه غیر شرطی است که دستورات داخلش مدام اجرا می شوند.
دستورات داخل حقه:
تمام پین های پورت های a , b , c , d را یک میکند
تاخیر به مدت 250 میلی ثانیه
تمام پین های پورت های a , b , c , d را صفر میکند
تا خیر به مدت 250 میلی ثانیه
پایان حلقه و پرش به ابتدای حلقه ( Do )
در واقع این برنامه تمام پین های مربوط به 4 پورت میکرو را به صورت چشمک زن در می آورد.
پس يعني به جاي اينكه ينويسيم set portb.1 و ... ميتونيم portb=255 رو بنويسيم درسته؟
Ddra مخفف چه كلمه اي است؟
(۰۹-اردیبهشت-۱۳۸۹, ۱۰:۳۹:۰۴)اشك نوشته است: [ -> ]پس يعني به جاي اينكه ينويسيم set portb.1 و ... ميتونيم portb=255 رو بنويسيم درسته؟
برای ست کردن هر پین اون رو باید مساوی یک کنی و برای ست کردن هر پورت اون رو باید مساوی 255 کنی!
نقل قول: Ddra مخفف چه كلمه اي است؟
کامل نمیدونم ولی میدونم که اون حرف a در آخر دستور نشان میده که مقاومت بالاکش مربوط به پورت a است.
(۰۹-اردیبهشت-۱۳۸۹, ۱۰:۳۹:۰۴)اشك نوشته است: [ -> ]Ddra مخفف چه كلمه اي است؟
DDR مربوط به ریجستر میکرو میشه
هادی نوشته است:مقاوت بالاکش پورت های a , b , c , d را فعال کرده، چون از این پورت ها به عنوان خروجی استفاده خواهد شد.(مقاومت بالاکش، میکروکنترلر را از جریان دهی و یا جریان کشی (Sink/Source) بیش از حد که باعث سوختن میکروکنترلر می شود، حفاظت می کند)
ببخشین با ddr مستقیم در رجیستر وضعیت ورودی و خروجی میکرو دیتا می نویسیم !
یعنی یه دستور های زیر یه کار رو انجام می دن و من برای راحتی با DDR می نوسم :