سلام دوستان من watchgog تاحالا کار نکرده بودم
1. چرا زمانی که فیوز بیت WTDON فعال میکنم (صفرش میکنم ) میکرو از کار میاوفته
2. حالا نرم افزاری هم که فعالش میکنم خیلی خوب جواب نمیده مثلا دستی کاری کردم که میکرو قاطی کرد و چرتو پرت نشون داد ولی ریست نشد
3. خدارو شکر delay هم که میزارم دیگه به هیج وجه ریست نمیشه (البته اگر #asm("WDR"
; ننویسم میکرو ریست میشه
برنامه ای هم که نوشتم adc هست که up میکنم اگر میشه راهنماییم کنید
البته چیزای اضافی که نوشته بودمو برای راحتی کار پاک کردم
مقدار watchdog هم از طریق کدویزارد بر روی ocs/2048 تنظیم کردم
1. چرا زمانی که فیوز بیت WTDON فعال میکنم (صفرش میکنم ) میکرو از کار میاوفته
2. حالا نرم افزاری هم که فعالش میکنم خیلی خوب جواب نمیده مثلا دستی کاری کردم که میکرو قاطی کرد و چرتو پرت نشون داد ولی ریست نشد
3. خدارو شکر delay هم که میزارم دیگه به هیج وجه ریست نمیشه (البته اگر #asm("WDR"

برنامه ای هم که نوشتم adc هست که up میکنم اگر میشه راهنماییم کنید
البته چیزای اضافی که نوشته بودمو برای راحتی کار پاک کردم
مقدار watchdog هم از طریق کدویزارد بر روی ocs/2048 تنظیم کردم
کد:
#include <mega8.h> #include <delay.h> #include <stdlib.h> //void stop(); #asm .equ __lcd_port=0x12 #endasm #include <Lcd.h> void off_sys(); float vol ; interrupt [ADC_INT] void adc_isr(void){ float adc_data; #asm("cli") adc_data=ADCW; vol=(adc_data*5)/1024; //ADCSRA=0xCD; #asm("sei") } void main() { unsigned char s[16]; PORTB=0XF0 ; DDRB=0X0F; PORTC = 0x00; DDRC=0x00; ACSR=0X80; SFIOR=0X00; ADMUX=0x40; ADCSRA=0x8D; lcd_init(16); lcd_clear(); delay_ms(5); #pragma optsize- WDTCR=0x1F; WDTCR=0x0F; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif #asm("sei") if (show==1){ lcd_gotoxy(0,1); lcd_putsf("TEST="); } while (1) { if(show==1){ ADCSRA=0xCD; lcd_gotoxy(7,1); ftoa(vol,3,s); lcd_puts(s); }else { lcd_clear(); lcd_putsf("volt"); delay_ms(200);} #asm("WDR") ; //delay_ms(3000); } }
دیدگاه