ايران ويج

نسخه‌ی کامل: مشكل با avr
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
:exclamation: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 

Exclamation
مهندس شواهد امر نشون می ده که پروگرامرت خرابه یا میکروت سوخته یا برق بهش نمی رسه !


بهتره واسه چک کردن برنامه چشمک زن بنویسی :

کد 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 
Portb Portc 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 
Portb Portc 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 
Portb Portc 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 کنی!
کد php:
portd.1=1
portd
=255 


نقل قول: Ddra مخفف چه كلمه اي است؟

کامل نمیدونم ولی میدونم که اون حرف a در آخر دستور نشان میده که مقاومت بالاکش مربوط به پورت a است.
(۰۹-اردیبهشت-۱۳۸۹, ۱۰:۳۹:۰۴)اشك نوشته است: [ -> ]Ddra مخفف چه كلمه اي است؟
DDR مربوط به ریجستر میکرو میشه
هادی نوشته است:مقاوت بالاکش پورت های a , b , c , d را فعال کرده، چون از این پورت ها به عنوان خروجی استفاده خواهد شد.(مقاومت بالاکش، میکروکنترلر را از جریان دهی و یا جریان کشی (Sink/Source) بیش از حد که باعث سوختن میکروکنترلر می شود، حفاظت می کند)

ببخشین با ddr مستقیم در رجیستر وضعیت ورودی و خروجی میکرو دیتا می نویسیم !

یعنی یه دستور های زیر یه کار رو انجام می دن و من برای راحتی با DDR می نوسم :

کد php:
CONFIG PORTB OUTPUT 

کد php:
DDRB 255 

کد php:
DDRB = &B11111111 

کد php:
CONFIG PORTB 255