امتیاز موضوع:
  • 4 رأی - میانگین امتیازات: 4.5
  • 1
  • 2
  • 3
  • 4
  • 5
چت باکس علمی ایران ویج
نویسنده پیام
Ambassador آفلاین
مدیر بخش موبایل
*****

ارسال‌ها: 1,324
موضوع‌ها: 79
تاریخ عضویت: شهریور ۱۳۹۰

تشکرها : 30371
( 9873 تشکر در 3843 ارسال )
ارسال: #1354
RE: چت باکس علمی ایران ویج
برداشتی که من کردم اینه آیا درسته مرتضی جان؟ یعنی وقتی که کلکتور + باشه خروجی میوفته روی امیتر و وقتی که امیتر منفی باشه خروجی میوفته روی کلکتور.
با این وجود نه دیگه حلقه نداریم :-)

در کل از این زوج دارلینگتون کجاها و چه وقتایی استفاده میشه ؟

@هادی جان
من یه بار توتابلو به این مشکل برخوردم، میخواست قسمتی از یک حرف رو روشن کنم کلش روشن میشد، آخرش امدم کل حرف رو روشن کردم تا خرابیش به چشم نیاد، اما خب مشکل از ال ای دی نمیتونه باشه چون با همون ال ای دی ها یه تابلو دیگه بستم مشکلی نداشت. من میگم نمیشه از زیادی داغ شدن ال ای دی ها باشه؟

START...

۰۶-شهریور-۱۳۹۲, ۲۱:۱۴:۴۸
ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #1355
RE: چت باکس علمی ایران ویج
(۰۶-شهریور-۱۳۹۲, ۱۶:۴۱:۰۸)hadikh73 نوشته است: الان این سگمنت باید 1 رو نشون بده ولی می بینین که بقیه قطعه های سگمنت هم روشن می شن(خیلی کم نور) به نظرتون مشکل از چی میتونه باشه؟

(۰۶-شهریور-۱۳۹۲, ۱۷:۳۱:۵۶)sharin نوشته است: @هادی:
قبلا به چشم خورده بود این موضوع ، اما چون خودم کار نکردم به ذهن ندارم.
شاید اگر برای همه ی پایه ها یه مقاومت pull down بذاری مشکل حل بشه. تو نت هم یه سرچی بزن. موفق باشی.

با پول دان به احتمال بالا درست میشه
نشد مدارش و بذار بررسی کنیم

@مسلم جان
نه از داغ شدن نمیتونه باشه

@هادی
با ترانزیستور هم میتونی طبقات (هر 7تا قسمت) و از هم جدا کنی

(آخرین ویرایش در این ارسال: ۰۶-شهریور-۱۳۹۲, ۲۳:۰۳:۴۰، توسط omid_phoenix.)
۰۶-شهریور-۱۳۹۲, ۲۲:۵۸:۴۷
ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, behzady, babyy, Ambassador
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #1356
RE: چت باکس علمی ایران ویج
(۰۶-شهریور-۱۳۹۲, ۱۶:۴۱:۰۸)hadikh73 نوشته است: بچه ها من تاحالا دوتا ساعت با ال ای دی ساختم هر دوتا اینطوری بود

الان این سگمنت باید 1 رو نشون بده ولی می بینین که بقیه قطعه های سگمنت هم روشن می شن(خیلی کم نور) به نظرتون مشکل از چی میتونه باشه؟
مشکل از اینه که کد برنامه رو نمی زاریBiggrin
-
کلا منم این مشکل رو داشتم چون سرعت بالا هست مثل اینکه LED خاموش نمی شهBiggrin(اگه مدار درایو هم گذاشتی بین میکرو و LED ها اونم ممکنه خاموش نشه)
کلا من چون مدارم رو ساخته بودم و پول دون نمی شد بزارم قبلا تغییر LED های روشن اول کل پایه هارو صفر می کردم (همه خاموش برن لالا) بعد یه وقفه خیلی کم (مثلا نصف اون مقداری که الان بین سویچ LED ها گذاشتی) بعد دوباره LED ها رو روشن می کردم ...

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۰۷-شهریور-۱۳۹۲, ۰۰:۲۷:۴۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, babyy, Ambassador, omid_phoenix
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13641
( 14739 تشکر در 4686 ارسال )
ارسال: #1357
RE: چت باکس علمی ایران ویج
خیلی ممنون دوستان
(۰۶-شهریور-۱۳۹۲, ۱۷:۳۱:۵۶)sharin نوشته است: @هادی:
قبلا به چشم خورده بود این موضوع ، اما چون خودم کار نکردم به ذهن ندارم.
شاید اگر برای همه ی پایه ها یه مقاومت pull down بذاری مشکل حل بشه. تو نت هم یه سرچی بزن. موفق باشی.
پول دون گذاشتم ولی تاثیری نداشت
هر چی گشتم هیچی ندیدم
چی سرچ کنم؟
(۰۶-شهریور-۱۳۹۲, ۲۱:۱۴:۴۸)Ambassador نوشته است: @هادی جان
من یه بار توتابلو به این مشکل برخوردم، میخواست قسمتی از یک حرف رو روشن کنم کلش روشن میشد، آخرش امدم کل حرف رو روشن کردم تا خرابیش به چشم نیاد، اما خب مشکل از ال ای دی نمیتونه باشه چون با همون ال ای دی ها یه تابلو دیگه بستم مشکلی نداشت. من میگم نمیشه از زیادی داغ شدن ال ای دی ها باشه؟
اصلا ال ای دی ها داغ نمی کنن
این خیلی کمه توی اون ساعت کلا بیخیالش شدیم ولی می خوام بفهمم دقیقا چشه چون هرچی نور ال ای دی ها رو بیشتر میکنم ضایعتر میشه می خوام کلا حذفشون کنم
(۰۶-شهریور-۱۳۹۲, ۲۲:۵۸:۴۷)r0b0 نوشته است: با پول دان به احتمال بالا درست میشه
نشد مدارش و بذار بررسی کنیم
++
با ترانزیستور هم میتونی طبقات (هر 7تا قسمت) و از هم جدا کنی
با کوپلر کلا جداشون کردم و همون طور که آقا مرتضی گفتن با ترانزیستور تقویتشون کردم
شماتیک پیوست شد فقط بین سگمنت ها و میکرو کوپلر و ترانزیستور گذاشتم بقیش همینه
(۰۷-شهریور-۱۳۹۲, ۰۰:۲۷:۴۶)behzady نوشته است: مشکل از اینه که کد برنامه رو نمی زاریBiggrin
-
کلا منم این مشکل رو داشتم چون سرعت بالا هست مثل اینکه LED خاموش نمی شهBiggrin(اگه مدار درایو هم گذاشتی بین میکرو و LED ها اونم ممکنه خاموش نشه)
کلا من چون مدارم رو ساخته بودم و پول دون نمی شد بزارم قبلا تغییر LED های روشن اول کل پایه هارو صفر می کردم (همه خاموش برن لالا) بعد یه وقفه خیلی کم (مثلا نصف اون مقداری که الان بین سویچ LED ها گذاشتی) بعد دوباره LED ها رو روشن می کردم ...
من فرکانس متر ندارم ولی تو پروتئوس چک کردم فرکانس هر پایه از 40 هرتز بیشتر نمیشه و کوپلر هم تا 80 کیلو جواب میده مشکل از این نمی تونه باشه
کلا سخت افزارم سالمه خیلی چکش کردم
این سورس برنامه به زبان سی
کد:
#include <mega16.h>
#include <delay.h>
#asm
   .equ __i2c_port=0x15 ;PORTC
   .equ __sda_bit=4
   .equ __scl_bit=5
#endasm
#include <i2c.h>
#include <ds1307.h>
char sega[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
int d=5,e;
unsigned char ym,mmo,dm,h,m,s;
unsigned long int ys1,ym1;
int ym2,ys2,ys,mso,ds,mmo1,mso1,k,del=1;
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
   e++;
   if(e==2){
   e=0;
   s++;
   d++;
   }    
        if (e==0) {
        PORTD.4=1;
        PORTB.7=1;
        }
        else{
        PORTD.4=0;
        PORTB.7=0;
        }
              if (s==0) {
              PORTB.3=1;
              }
               else{
              PORTB.3=0;
              }
}
#define ADC_VREF_TYPE 0x00
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void main(void)
{
int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a15,a16;
int dama,me,me1,incr,decr,chm;
PORTA=0x00;
DDRA=0xFE;
PORTB=0x00;
DDRB=0x8F;
PORTC=0x00;
DDRC=0x0F;
PORTD=0x00;
DDRD=0xFF;
ASSR=0x08;
TCCR2=0x04;
TCNT2=0x00;
TIMSK=0x40;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x82;
#asm("sei")
i2c_init();
rtc_init(0,0,0);
rtc_get_time(&h,&m,&s);
rtc_get_date(&dm,&mmo,&ym);
//***************************************
ym1=ym+2000;
k=ym1%4;
ym1=ym1-1;ym1=ym1*365;
if(mmo==1){mmo1=0;}
if(mmo==2){mmo1=31;}
if(mmo==3){mmo1=59;}
if(mmo==4){mmo1=90;}
if(mmo==5){mmo1=120;}
if(mmo==6){mmo1=151;}
if(mmo==7){mmo1=181;}
if(mmo==8){mmo1=212;}
if(mmo==9){mmo1=243;}
if(mmo==10){mmo1=273;}
if(mmo==11){mmo1=304;}
if(mmo==12){mmo1=334;}
if(k==0){mmo1++;}
ym1=ym1+mmo1;
ym1=ym1+dm;
ym2=ym+2000;
ym2--;
ym2=ym2/4;
ym1=ym1+ym2;
ym1=ym1-226899;
ys2=ym2-155;
ys1=ym1-ys2;
ys=ys1/365;
ys=ys+1;
mso1=ys1%365;
mso=1;
if(mso1>31){mso++;mso1=mso1-31;}
if(mso1>31){mso++;mso1=mso1-31;}
if(mso1>31){mso++;mso1=mso1-31;}
if(mso1>31){mso++;mso1=mso1-31;}
if(mso1>31){mso++;mso1=mso1-31;}
if(mso1>31){mso++;mso1=mso1-31;}
if(mso1>30){mso++;mso1=mso1-30;}
if(mso1>30){mso++;mso1=mso1-30;}
if(mso1>30){mso++;mso1=mso1-30;}
if(mso1>30){mso++;mso1=mso1-30;}
if(mso1>30){mso++;mso1=mso1-30;}
ds=mso1;
if(ds==0){ds=31;mso--;}
if(mso==0){ds=30;mso=12;}
//*****************************  
while (1)
      {
      if(TCNT2<128){PORTC.3=1;chm=1;}else{PORTC.3=0;chm=0;}
      if (dm==0){dm--;mmo--;}
      if(dm>31){
      if(mmo==1){dm=31;}
      if(mmo==2){if(k==0){dm=29;}else{dm=28;}}
      if(mmo==3){dm=31;}
      if(mmo==4){dm=30;}
      if(mmo==5){dm=31;}
      if(mmo==6){dm=30;}
      if(mmo==7){dm=31;}
      if(mmo==8){dm=31;}
      if(mmo==9){dm=30;}
      if(mmo==10){dm=31;}
      if(mmo==11){dm=30;}
      if(mmo==12){dm=31;}
      }
      //***********************************************************************
      if((PINB.6==1) && (me1==0)) {me++;me1=1;}
      if((PINB.6==0) && (me1==1)) {me1=0;}
      if(me==7) {
      me=0;
      rtc_set_time(h,m,s);
      rtc_set_date(dm,mmo,ym);
      }
      if(me==0){
        if(s>59){s=0;m++;}
        if(m>59){m=0;h++;}
        if(h>23){h=0;ds++;dm++;}
        if(mso>6){if(ds>31){ds=0;dm=0;mso++;mmo++;}}else{if(ds>30){ds=0;dm=0;mso++;mmo++;}}
        if (mso>12){mso=0;mmo=0;ys++;ym++;}}
      else{
        if(s>59){s=0;}
        if(m>59){m=0;}
        if(h>23){h=0;}
        if(mso>6){if(ds>31){ds=1;dm=1;}}else{if(ds>30){ds=1;dm=1;}}
        if(mso>12){mso=0;mmo=0;}
      }
      //***************************
      a1=s%10;a2=s/10;
      //**********
      a3=m%10;a4=m/10;
      //**********
      a5=h%10;a6=h/10;
      //**********
      a7=ds%10;a8=ds/10;
      //**********
      a9=mso%10;a10=mso/10;
      //**********
      a11=ys%10;
      //**********
      a12=ys%100;a12=a12/10;
      //**********
      a13=ys%1000;a13=a13/100;
      //**********
      a15=dama%10;a16=dama/10;
       //***************************

      PORTA.1=0;PORTA.2=0;PORTA.3=0;PORTA.4=0;PORTA.5=0;PORTA.6=0;PORTA.7=0;
      PORTA.1=1;PORTD=sega[a1];delay_ms(del);//PORTA.1=0;
      
      PORTA.1=0;PORTA.2=0;PORTA.3=0;PORTA.4=0;PORTA.5=0;PORTA.6=0;PORTA.7=0;delay_ms(del);
            
      PORTA.2=1;PORTD=sega[a2];delay_ms(del);//PORTA.2=0;

      PORTA.1=0;PORTA.2=0;PORTA.3=0;PORTA.4=0;PORTA.5=0;PORTA.6=0;PORTA.7=0;delay_ms(del);
      PORTA.3=1;PORTD=sega[a3];delay_ms(del);//PORTA.3=0;
                                                                            
      PORTA.1=0;PORTA.2=0;PORTA.3=0;PORTA.4=0;PORTA.5=0;PORTA.6=0;PORTA.7=0;delay_ms(del);
      PORTA.4=1;PORTD=sega[a4];delay_ms(del);//PORTA.4=0;
                                                                            
      PORTA.1=0;PORTA.2=0;PORTA.3=0;PORTA.4=0;PORTA.5=0;PORTA.6=0;PORTA.7=0;delay_ms(del);
      PORTA.5=1;PORTD=sega[a5];delay_ms(del);//PORTA.5=0;
                                                                            
      PORTA.1=0;PORTA.2=0;PORTA.3=0;PORTA.4=0;PORTA.5=0;PORTA.6=0;PORTA.7=0;delay_ms(del);
      PORTA.6=1;PORTD=sega[a6];delay_ms(del);//PORTA.6=0;
                                                                            
      PORTA.1=0;PORTA.2=0;PORTA.3=0;PORTA.4=0;PORTA.5=0;PORTA.6=0;PORTA.7=0;delay_ms(del);
      PORTA.7=1;PORTD=sega[a7];delay_ms(del);//PORTA.7=0;
                                                                            
      PORTB.0=0;PORTB.1=1;PORTB.2=1;PORTB.3=1;PORTB.7=1;delay_ms(del);
      PORTB.0=1;PORTD=sega[a8];delay_ms(del);//PORTB.0=0;
                                                        
      PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;PORTB.7=0;delay_ms(del);
      PORTB.1=1;PORTD=sega[a9];delay_ms(del);//PORTB.1=0;
                                                        
      PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;PORTB.7=0;delay_ms(del);
      PORTB.2=1;PORTD=sega[a10];delay_ms(del);//PORTB.2=0;
                                                        
      PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;PORTB.7=0;delay_ms(del);
      PORTB.3=1;PORTD=sega[a11];delay_ms(del);//PORTB.3=0;
                                                        
      PORTB.0=0;PORTB.1=0;PORTB.2=0;PORTB.3=0;PORTB.7=0;delay_ms(del);
      PORTB.7=1;PORTD=sega[a12];delay_ms(del);//PORTB.7=0;
      
      PORTC.0=0;PORTC.1=0;PORTC.2=0;delay_ms(del);
      PORTC.0=1;PORTD=sega[a13];delay_ms(del);//PORTC.0=0;
        
      PORTC.0=0;PORTC.1=0;PORTC.2=0;delay_ms(del);
      PORTC.1=1;PORTD=sega[a15];delay_ms(del);//PORTC.1=0;
                                      
      PORTC.0=0;PORTC.1=0;PORTC.2=0;delay_ms(del);
      PORTC.2=1;PORTD=sega[a16];delay_ms(del);//PORTC.2=0;
      //***********************************************************************
     if(d==5){d=0;ADCSRA|=0x40;dama=read_adc(0);dama=dama/2;}
      //***********************************************************************
       if((PINB.4==1)&&(incr==0)){incr=1;
        if(me==1){s=0;}
        if(me==2){m++;}
        if(me==3){h++;}
        if(me==4){ds++;dm++;}
        if(me==5){mso++;mmo++;}
        if(me==6){ys++;ym++;}
       }
       if((PINB.4==0)&&(incr==1)){incr=0;}
       //'***********************************************************************
      if((PINB.5==1)&&(decr==0)){decr=1;
        if(me==1){s=0;}
        if(me==2){m--;}
        if(me==3){h--;}
        if(me==4){ds--;dm--;}
        if(me==5){mso--;mmo--;}
        if(me==6){ys--;ym--;}
      }
      if((PINB.5==0)&&(decr==1)){decr=0;}
       //'***********************************************************************
       };
}

خوب یه سوال دیگه
بهزاد جان منظورت از پایه ها کدوما هستن؟پایه های a-g یا پایه های مشترک؟


فایل‌(های) پیوست شده
.rar   SAT.rar (اندازه: 22.08 KB / تعداد دفعات دریافت: 32)

(آخرین ویرایش در این ارسال: ۰۷-شهریور-۱۳۹۲, ۰۰:۴۷:۴۹، توسط hadikh73.)
۰۷-شهریور-۱۳۹۲, ۰۰:۴۲:۴۰
ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #1358
RE: چت باکس علمی ایران ویج
(۰۷-شهریور-۱۳۹۲, ۰۰:۴۲:۴۰)hadikh73 نوشته است: خوب یه سوال دیگه
بهزاد جان منظورت از پایه ها کدوما هستن؟پایه های a-g یا پایه های مشترک؟
راستیاتش نخوندم ببینم چه کردیBiggrin
-
اگه همه ی پایه ها به میکرو وصله که همه رو خاموش کن ولی احتمالا a-g فقط به میکرو وصله که من خودم همین هارو خاموش کردم
-
فقط حواست به آنود مشترک و کاتد مشترک باشه ها من میگم خاموش لذوما صفر منظورم نیست نزنی تازه LED ها روشن بشنBiggrin

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۰۷-شهریور-۱۳۹۲, ۰۰:۵۲:۰۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, babyy, omid_phoenix, Ambassador
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13641
( 14739 تشکر در 4686 ارسال )
ارسال: #1359
RE: چت باکس علمی ایران ویج
بعد از کلی تحقیق به این نتیجه رسیدم که این برنامه هیچ خطایی نداره
کد:
#include <mega32.h>
#include <delay.h>
char sega[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
int a;
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
a++;
if (a==2){a=0;}
}
void main(void)
{
PORTA=0x00;
DDRA=0x03;
PORTD=0x00;
DDRD=0xFF;

ASSR=0x08;
TCCR2=0x01;
TCNT2=0x00;
OCR2=0x00;
TIMSK=0x40;
#asm("sei")

while (1)
      {                            
      if(a==1){PORTA.1=0;PORTA.2=1;PORTD=sega[1];}
      if(a==2){PORTA.2=0;PORTA.1=1;PORTD=sega[2];}
      };
}
تایمر 2 هر 1/128 ثانیه عمل می کنه و مقدار متغیر a رو یکی اضافه می کنه
وقتی a یک باشه
پایه ی PORTA.2 روشن میشه
مقدار نمایش داده میشه
و وقتی a دو بشه
پایه قبلی صفر میشه
اون یکی پایه یک میشه
و مقدار جدید نشون داده میشه
این روش اصلا خطا ندارهQuestionبه نظرتون روش نمایش روی سگمنتا اشتباهه؟

۰۷-شهریور-۱۳۹۲, ۲۲:۳۶:۱۳
ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, babyy, behzady
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13641
( 14739 تشکر در 4686 ارسال )
ارسال: #1360
RE: چت باکس علمی ایران ویج
سلام
به نظرتون اگر هم زمان دوتا تایمر روشن باشن میکرو قاطی نمی کنه
هر دوتا از وقفه استفاده می کنن

۰۹-شهریور-۱۳۹۲, ۱۳:۳۵:۲۹
ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #1361
RE: چت باکس علمی ایران ویج
(۰۹-شهریور-۱۳۹۲, ۱۳:۳۵:۲۹)hadikh73 نوشته است: سلام
به نظرتون اگر هم زمان دوتا تایمر روشن باشن میکرو قاطی نمی کنه
هر دوتا از وقفه استفاده می کنن
نه چرا قاطی کنه من سه تاش رو هم راه انداختمBiggrin
فقط اگه هم زمان اتفاق بیوفته اونی که بردار وقفه بالا تری در حافظه داره اولویت رو می گیره
بعد بستگی به برنامه داره اگه توی بردار وقفه بیاد و وقفه رو قطع کنه که تمامی وقفه ها از دست میرن اگه قطع نکنه که وسط برنامه وقفه یکی ممکن هست دیگری عمل کنه

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۰۹-شهریور-۱۳۹۲, ۱۵:۰۷:۳۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, babyy, hadikh73, omid_phoenix
Ambassador آفلاین
مدیر بخش موبایل
*****

ارسال‌ها: 1,324
موضوع‌ها: 79
تاریخ عضویت: شهریور ۱۳۹۰

تشکرها : 30371
( 9873 تشکر در 3843 ارسال )
ارسال: #1362
RE: چت باکس علمی ایران ویج
(۰۹-شهریور-۱۳۹۲, ۱۵:۰۷:۳۴)behzady نوشته است:
(۰۹-شهریور-۱۳۹۲, ۱۳:۳۵:۲۹)hadikh73 نوشته است: سلام
به نظرتون اگر هم زمان دوتا تایمر روشن باشن میکرو قاطی نمی کنه
هر دوتا از وقفه استفاده می کنن
نه چرا قاطی کنه من سه تاش رو هم راه انداختمBiggrin
فقط اگه هم زمان اتفاق بیوفته اونی که بردار وقفه بالا تری در حافظه داره اولویت رو می گیره
بعد بستگی به برنامه داره اگه توی بردار وقفه بیاد و وقفه رو قطع کنه که تمامی وقفه ها از دست میرن اگه قطع نکنه که وسط برنامه وقفه یکی ممکن هست دیگری عمل کنه

سلام بهزاد جان

منم چندوقت پیش می خواستم دوتا تایمر رو اسفاده کنم منتهی دوستان گفتن احتمالاً میکرو هنگ می کنه، اگه میشه در مودر بردار وقفه بیشتر بگین...
سپاس

START...

۰۹-شهریور-۱۳۹۲, ۱۵:۱۴:۱۳
ارسال‌ها
پاسخ
تشکر شده توسط : babyy, hadikh73, omid_phoenix
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #1363
RE: چت باکس علمی ایران ویج
(۰۹-شهریور-۱۳۹۲, ۱۵:۱۴:۱۳)Ambassador نوشته است:
(۰۹-شهریور-۱۳۹۲, ۱۵:۰۷:۳۴)behzady نوشته است:
(۰۹-شهریور-۱۳۹۲, ۱۳:۳۵:۲۹)hadikh73 نوشته است: سلام
به نظرتون اگر هم زمان دوتا تایمر روشن باشن میکرو قاطی نمی کنه
هر دوتا از وقفه استفاده می کنن
نه چرا قاطی کنه من سه تاش رو هم راه انداختمBiggrin
فقط اگه هم زمان اتفاق بیوفته اونی که بردار وقفه بالا تری در حافظه داره اولویت رو می گیره
بعد بستگی به برنامه داره اگه توی بردار وقفه بیاد و وقفه رو قطع کنه که تمامی وقفه ها از دست میرن اگه قطع نکنه که وسط برنامه وقفه یکی ممکن هست دیگری عمل کنه

سلام بهزاد جان

منم چندوقت پیش می خواستم دوتا تایمر رو اسفاده کنم منتهی دوستان گفتن احتمالاً میکرو هنگ می کنه، اگه میشه در مودر بردار وقفه بیشتر بگین...
سپاس

توی دیتاشیت می تونید مشاهده کنید آدرس های مشخصی هست که هر کدوم مربوط به یکی از وقفه های میکرو میشه و اون جا فقط یک آدرس ذخیره میشه که مشخص می کنه زمانی که وقفه روی میده به کدوم قسمت حافظه باید پرش داشت
اینجا آدرس های MEGA32 رو می بینید
   
و در عمل هم این دستور ها توی میکرو ریخته میشه
   
و مثلا می بینید که توی ریست به کجا پرش میشه.
حالا اگه هم زمان دو تا وقفه اتفاق بیوفته اونی که بردار کوچیک تری داره
(توی عکس اول آدرس کوچیک تری داره)
اولویت داره و اجرا میشه.
-
این مشکل توی XMEGA حل شده و شما می تونید مشخص کنید که اولویت با چه میکرویی هست
-
از همین جا هم میشه فهمید (اگه با GCC برنامه می زنید) چقدر مهم هست که به بردار های وقفه حتما مقدار داده بشه وگرنه نتیجه غیر قابل پیش بینی خواهد بود (میکرو مثلا میره بردار INT0 رو می خونه چیزی توش نیست میاد پایین ... و اگه هیچ برداری در این بین تعریف نشده باشه میکرو میره به قسمت برنامه اولیه که در اصطلاح میشه گفت ریست می شه
-
می بینید که برای ریست نرم افزاری می تونید دستی به بردار ریست "000" برید
-
و این که دیگه دفعه بعدی جواب آماده داشته باشید که دوستانتون رو راهنمایی کنید مشکلی در استفاده تایمر ها نیستBiggrin
---
فقط یه نکته ای هست و اونم اینه که اگه وقفه ای که اولویت داره اجرا شد آیا وقفه دیگه از بین میره؟ جواب من نه هست مگر اینکه کامپایلر ریجیستر وقفه ها رو پاک کنه (که معمولا می کنه) ولی در کل یه جوون مرد دیتاشیت کامل MEGA32 رو در بخش INT بخونه و بگه دقیقا چی ذکر شده که من فکر می کنم از بین میرهBiggrin

این بردار وقفه همون "Vector No." هستBiggrin

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
(آخرین ویرایش در این ارسال: ۱۰-شهریور-۱۳۹۲, ۱۵:۲۵:۱۸، توسط behzady.)
۱۰-شهریور-۱۳۹۲, ۱۵:۲۳:۱۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, omid_phoenix, babyy, Ambassador
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #1364
RE: چت باکس علمی ایران ویج
قاعدتا همینه که بهزاد خان می گه.
اما اگر دقت کنید اول ورود به وقفه وقفه سراسری رو غیر فعال می کنیم cli
در خط آخر روتین وقفه هم دوباره فعالش می کنیم sei
چرا؟
که وسط وقفه ی ما ، وقفه ی دیگه ای رخ ندهه :)
بحث من برای AVR هست ، با اینکه می دونم هر کدوم از بردارهای وقفه الویتشون مشخص شده ( البته نمی دونم الویت برابر هم دارن یا نه ) خودم تا الان کاری نکردم که به مشکل بخورم ، اما یا کامپایلر یا خود معماری AVR مشکلی دارهه که در روتین وقفه ، اول وقفه سراسری رو غیر فعال می کنیم و در خط آخر روتین فعالش می کنیم.
قاعدتا بایستی وقفه ها بتونن تو در تو اجرا بشن ، اما باز در مورد AVR نظری ندارم که تا چه حد می تونه تحمل کنه.
همونطور که گفتید در XMEGA و ARM یه واحد اضافه شدهه که کارش مدیریت و الویت دهی به وقفه هاست ، تا می خوای می تونی از وقفه تو وقفه بری و هیچ مشکلی هم پیش نمی یاد.

همون پاراگراف بو دار از دیتاشیت رو بذار تا ببینیم چقدر بودارهه :)

۱۰-شهریور-۱۳۹۲, ۱۷:۱۶:۵۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : omid_phoenix, babyy, Ambassador, behzady, hadikh73


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 236 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS