ايران ويج

نسخه‌ی کامل: اشکال در وقفه صفر ميکرو avr 32
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
من يه برناه نوشتم که وقتي وقفه صفر اتفاق بيافته موتور رو حرکت بده.
حالا من وقتي که ميکرو رو روشن ميکنم بلافاصله خود بخود وقفه رخ ميده بدون اينکه من به پاي PD2 ولتاژ +5 بدم.

ايراد از کجاست؟
کد:
/*
Chip type : ATmega32L
Program type : Application
Clock frequency : 12.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*********************************************/

#include <mega32.h>
#include <delay.h>

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
int i=0;

PORTA=204;
delay_ms(50);
PORTA=102;
delay_ms(50);
PORTA=51;
delay_ms(50);
PORTA=153;
delay_ms(50);

PORTA=0;
delay_ms(500);

PORTA=153;
delay_ms(50);
PORTA=51;
delay_ms(50);
PORTA=102;
delay_ms(50);
PORTA=204;
delay_ms(50);

PORTA=0;
delay_ms(1000);
}

// Declare your global variables here

void main(void)
{
PORTA=0x00;
DDRA=0xFF;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0xFF;

TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

GICR|=0x40;
MCUCR=0x00;
MCUCSR=0x00;
GIFR=0x40;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

while (1)
{

};
}
آیا پایه فوق ول ( آزاد ) هستش !

آیا مقاومت پولل دووون گذاشتین !

آیا تو پروتئوس درسته ؟

آیا هنگامی که دست را نزدیک می کنین بیشتر اتفاق می افته !
پايه ازاد هست. يعني يه سيم وصله به ميکرو سوئيچ که وقتي فشرده بشه +5 رو رو پورت pd2 مينويسه وقتي هم سيم رو قطع ميکنم بازم همين اتفاق ميافته

مقومت پول دووون چيه ؟ اينو نوفهم. من تازه کار بيدم

پورتئوس کار نمينم پروژم رو رو برد پياده کردم

نه باهاش نيم متر فاصله دارم
در ضمن وقتي کليد رو فشار ميدم (ول نميکنم)+5 رو پورت نوشته ميشه و موتور متوقف ميشه وقتي کليد رو ول ميکنم موتور شروع به حرکت ميکنه
مقاومت پول داون رو کجا بزارم؟
يه جايي خونده بودم که بايد پورت ي رو خروجي تعريف کنيم بعد به pd2 پالس بديم!!!!
فکر می کنم باید اون پایه رو با یه مقاومت وصل کنی به زمین و از سر دیگه مقاومت که به پین میکرو وصله به سوییچ و از سوییچ به 5 ولت ...
-----------------------------
نه ببخشید. اگه سوییچ بازه وقفه رخ میده و بسته رخ نمیده پس به این که من گفتم ربطی نداره؟ من تا حالا با وقفه خارجی کار نکردم. مگه اینطور نیست که با 5 ولت شدن پایه وقفه رخ بده؟؟!!
مشکل يکمي حل شد يه مقاومت 1 کيلويي گذاشتم وقفه چندبار اجرا شد حالا مقاومت رو 10 کيلو گذاشتم الان هم 3-4 بار اتفاق ميافته. از کلاک ميکرو نباشه؟
سلام

پایه های مروبط به وقفه ها رو باید پول آپ کنی و گرنه جواب نمیده
تو سایت یهبار توضیح کاملی درباره پول آپ گذاشته بودم بگردی هست
اقا مشکل حل نشد بازم چند دفع ميزنه.
سلام
سی بلد نیستم ولی اینو میدونم که وقفه ها رو اگه پول آپ نکنی اجرا نمیشن یا خود به خود اجرا میشن ( خودم هم قبلا همچین مشکلی داشتم )

شایدم اشکال از برنامته !
پول آپ يعني چي؟ منظورتون رو نميفهمم. وقفه ها اجرا ميشن ولي بجاي يک دفعه چندبار اجرا ميشن.

قبل از اينکه مقاومت بزارم به محض اينکه ميکرو روشن ميشد وقفه هي اجرا ميشد ولي وقتي که مقاومت رو گذاشتم وقفه ها چند بار اجرا ميشه.
وای مهندس

منظور از مقاومت پوول دوون این مقاومت هستش !!!

[تصویر:  95001281602335477167.png]

چون میکرو اگه پایه اش ول باشه به شدت نویز می گیره !
اره من همين مدار رو بستم
صفحه‌ها: 1 2