سلام
من ميخام از پورت دي atmega8 به عنوان خروجي استفاده كنم.چندتا برنامه اولم درست پروگرم شد ولي الان ديگه تغييري تو خروجي ايجاد نميشه.ميكروم سالمه چون فقط ميتونم خروجي پورت بي(پايه هاي 15تا19) رو تغيير بدم.
نميفهمم مشكل از كجاست كه پورته اي ديگه تغييري نميكنن.
ممنون ميشم راهنماييم كنين
با تشكر
سلام.
بارهای اول که جواب داد در چه سخت افزاری ازش استفاده کردید؟ به اون پورت هایی که الان کار نمی کنن چی وصل کردید ؟
برنامه ای که نوشتید رو بذارید.
از چه کامپایلری استفاده می کنید و پروگرامرتون چیه؟
روي بردبورد مدارم رو بستم.يه كليد به portb.0 وصل كردم.portd.0 و portd.1 و portd.2 رو به با استفاده از يه مدار كنترلي به شير برقي كه تغذيه اون 220 ولت هست وصل كردم.
اينم اولين برنامم كه ميخواستم يه چندباري شيرها باز و بسته بشن و تو حلقه با يك كليد شير رو روشن و خاموش كنم.با بسكام نوشتم.
کد php:
$regfile = "M8ADEF.DAT"
$crystal = 8000000
Config Portb = Input
Config Portd = Output
Dim B As Bit
Portd.0 = 1
Portd.1 = 1
Portd.2 = 1
Waitms 300
Reset Portd
Waitms 500
Portd.0 = 0
Portd.1 = 1
Portd.2 = 1
Waitms 300
Reset Portd
Waitms 500
Portd.0 = 1
Portd.1 = 0
Portd.2 = 1
Waitms 300
Reset Portd
Waitms 500
Do
If Pinb.0 = 0 Then
If B = 0 Then
Toggle Portd.2
B = 1
End If
Else
B = 0
End If
Loop
End 'end program
ميكروتون رو ك اشتباه معرفي كردين
( $regfile = "M8ADEF.DAT")!!!!!!
بايد اينطوري نوشت؛
اون قسمت داخل حلقه رو خيلي ساده تر هم ميشه نوشت؛مثلا:
کد:
if pinb.0=0 then
set portd.2
else
reset portd.2
end if
يا هنوز ساده تر
نقل قول: ميكروتون رو ك اشتباه معرفي كردين( $regfile = "M8ADEF.DAT")!!!!!!
توی کپی پیست اینطوری می شه ... ، وگرنه درست هست.
@fateme67hj:
برای گذاشتن کدها از تگ php یا code استفاده کنید وجه ی بهتری داره و بهتر می شه خوندش.
مدار واسط برای شیر برقی ها با ترانزیستور هست درسته؟ آیا دیود هرز گرد 2 سر شیر برقی استفاده کردید؟
چطوری تحلیل می کنید که یه سری از پایه ها کار نمی کنه، عملکرد مدار رو مدنظر دارید یا با مولتی متر ولتاژ پایه ها رو کنترل می کنید؟ یا در مداری جدا با LED تست کردید؟
شماتیک سخت افزاری رو که بستید هم بذارید.
کدهایی هم که نوشتید ، قسمت خوندن کلیدهاش خوب نیست. از دستور Debounce استفاده کنید و یا اگر از if استفاده می کنید بعد از زده شدن دکمه خودتون تاخیر بذارید.
البته فعلا ورودی رو فراموش کنید و یه برنامه ساده که فقط یک پایه رو 0 و 1 می کنه با فاصله زمانی 2 ثانیه فرضا رو میکرو بریزید. اون پایه هایی هم که کار نمی کنن رو در مدار دیگه بهشون LED بزنید و تست کنید خاموش و روشن می شن یا نه.
ممنون از تذكرتون.
براي چك كردن ديود ميزارم كه ببينم كدومشون كار ميكنن.
قسمت مربوط به كليد درسته و جواب ميده(توي چند بار اول درست بود و قبلا هم تو رباتيك از همين كد استفاده ميكردم.)
براي چك كردن شيرها رو جدا كردم كه اول ميكرو رو راه بندازم.الان دوباره چك كردم رو پورت بي هم جواب نميده!!!
امكان داره مشكل از كامپايلر باشه؟بنظر نمياد سوخته باشه اخه داغ نميشه.
لطفا شماتیک مدار رو بذارید، تو پروتوس یا روی برگه ...
عکسی که گذاشتید، بنظر اتصالاتش کامل نمی یاد ... .
کد مربوط به کلید هم کار می کنه اما درست نیست! یعنی اصولی نیست ...
برای چک کردنش ، کلا اپتوکوپلر ها و شیر برقی ها و کلید رو کنار بذارید.
پورت ها رو با یه فاصله زمانی مثلا 2 ثانیه 0 و 1 کنید و به چندتا پایه مقاومت و LED ببندید ببینید روشن و خاموش می شن یا نه ... .
اون شماتیک مدار هم بذارید.
موفق باشید.
(۲۷-خرداد-۱۳۹۴, ۱۶:۱۵:۴۰)sharin نوشته است: [ -> ]نقل قول: ميكروتون رو ك اشتباه معرفي كردين( $regfile = "M8ADEF.DAT")!!!!!!
توی کپی پیست اینطوری می شه ... ، وگرنه درست هست.
منظور دوستمون یه A اضافه در کد هست
M8
ADEF
که فکر نمیکنم تو برنامه اینطوری نوشته باشن
که اونموقع کلا برنامه کامپایل نمیشه
ميكروم رو عوض كردم مشكلم حل شد.ممنون از راهنماييهاتون.
نقل قول: که فکر نمیکنم تو برنامه اینطوری نوشته باشن
که اونموقع کلا برنامه کامپایل نمیشه
اون a اضافه به خاطر نوع ميكرو هست و درسته.