ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 6 از 6
  1. #1
    2007/07/20
    16
    2

    مشکل در بررسی ست شدن متغیر بعد از بازگشت از وقفه ی دریافت سریال در اتمل استودیوی ۷

    سلام و وقت بخیر به مهندسین عزیز.
    سوالی داشتم که شاید شما بتونید کمکم کنید. من از اتمل استودیوی ۷ استفاده می کنم اما یه ایراد عجیب دیدم یه برنامه ی بسیار ساده رو در نظر بگیر که فقط یه کاراکتر را از پورت سریال دریافت می کند البته از وقفه ی دریافت سریال هم استفااده شده و ایراد اینه که مثلا در روتین وقفه یه متغیر char یا unsigned char یا هر نوع دیگر را 1 می کنم و سپس در whileبعد از main آن را چک می کنم که آیا 1شده یا نه دستور شرطی عمل نمی کند مگر اینکه یک delay قبل و یا بعدش گذاشته شود و یا یک دستور غیر شرطی مثلا ست کردن یک پورت انجام شود آنگاه دستور شرطی عمل می کند .مشکل از کجاست ؟ البته دقیقا همین برنامه را با کدویژن تست کردم و به درستی عمل کرد اما در اتمل استودیو مشکلی که شرح دادم را دارد
  2. #2
    2017/06/13
    1,276
    695

    پاسخ : مشکل در بررسی ست شدن متغیر بعد از بازگشت از وقفه ی دریافت سریال در اتمل استودیوی ۷

    نقل قول نوشته اصلی توسط ahmadmedusa

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام و وقت بخیر به مهندسین عزیز.
    سوالی داشتم که شاید شما بتونید کمکم کنید. من از اتمل استودیوی ۷ استفاده می کنم اما یه ایراد عجیب دیدم یه برنامه ی بسیار ساده رو در نظر بگیر که فقط یه کاراکتر را از پورت سریال دریافت می کند البته از وقفه ی دریافت سریال هم استفااده شده و ایراد اینه که مثلا در روتین وقفه یه متغیر char یا unsigned char یا هر نوع دیگر را 1 می کنم و سپس در whileبعد از main آن را چک می کنم که آیا 1شده یا نه دستور شرطی عمل نمی کند مگر اینکه یک delay قبل و یا بعدش گذاشته شود و یا یک دستور غیر شرطی مثلا ست کردن یک پورت انجام شود آنگاه دستور شرطی عمل می کند .مشکل از کجاست ؟ البته دقیقا همین برنامه را با کدویژن تست کردم و به درستی عمل کرد اما در اتمل استودیو مشکلی که شرح دادم را دارد
    سلام
    حداقل کد رو قرار میدادید. اینطور توضیح دادن فایده نداره

    Sent from my LG-H870S using Tapatalk
  3. #3
    2007/07/20
    16
    2

    پاسخ : مشکل در بررسی ست شدن متغیر بعد از بازگشت از وقفه ی دریافت سریال در اتمل استودیوی ۷

    سلام مجدد این هم حداقل کدی که استفاده شده است.


    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    F_CPU 11059200UL

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    <avr/io.h>

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    <avr/interrupt.h>

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    <avr/delay.h>

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    BAUDRATE 9600


    unsigned char cr;
    uint8_t x=0;






    ISR(USART_RXC_vect){
    while((UCSRA & (1<<RXC))==0){};
    cr = UDR;
    x=1;

    }






    int main(void)


    {


    // Port B initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=Out Bit3=Out Bit2=In Bit1=In Bit0=In
    DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
    // State: Bit7=T Bit6=T Bit5=T Bit4=0 Bit3=0 Bit2=T Bit1=T Bit0=T
    PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600
    UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
    UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
    UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
    UBRRH=0x00;
    UBRRL=0x47;

    sei();

    while (1)
    {

    if (x==1)PORTB=1;

    }//End While()



    }//End Main()
  4. #4
    2017/06/13
    1,276
    695

    پاسخ : مشکل در بررسی ست شدن متغیر بعد از بازگشت از وقفه ی دریافت سریال در اتمل استودیوی ۷

    نقل قول نوشته اصلی توسط ahmadmedusa

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام مجدد این هم حداقل کدی که استفاده شده است.


    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    F_CPU 11059200UL

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    <avr/io.h>

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    <avr/interrupt.h>

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    <avr/delay.h>

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    BAUDRATE 9600


    unsigned char cr;
    uint8_t x=0;






    ISR(USART_RXC_vect){
    while((UCSRA & (1<<RXC))==0){};
    cr = UDR;
    x=1;

    }






    int main(void)


    {


    // Port B initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=Out Bit3=Out Bit2=In Bit1=In Bit0=In
    DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
    // State: Bit7=T Bit6=T Bit5=T Bit4=0 Bit3=0 Bit2=T Bit1=T Bit0=T
    PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600
    UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM);
    UCSRB=(1<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
    UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
    UBRRH=0x00;
    UBRRL=0x47;

    sei();

    while (1)
    {

    if (x==1)PORTB=1;

    }//End While()



    }//End Main()
    خوب اول از همه اینکه دفعات بعد حتما از تگ ++C برای قراردادن کد در انجمن استفاده کنید تا کد به شکل زیر توی انجمن قابل خوندن بشه:
    #define F_CPU 11059200UL
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <avr/delay.h>
    #define BAUDRATE 9600




    unsigned char cr;
    volatile uint8_t x=0;


    ISR(USART_RXC_vect)
    {
    while((UCSRA & (1<<RXC))==0){};
    cr = UDR;
    x=1;
    }




    int main(void)
    {
    // Port B initialization
    // Function: Bit7=In Bit6=In Bit5=In Bit4=Out Bit3=Out Bit2=In Bit1=In Bit0=In
    DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);


    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600
    UCSRB=(1<<RXCIE) | (1<<RXEN) | (1<<TXEN);
    UCSRC=(1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
    UBRRH=0x00;
    UBRRL=0x47;


    sei();


    while (1)
    {


    if (x==1)PORTB=1;


    }//End While()


    }//End Main()

    دوم هم اینکه قبل از تعریف x مثل کد بالا از کلمه volatile استفاده کنید. احتمالا اینطوری درست کار خواهد کرد.
    ویرایش توسط hossein.m98 : 2019/09/07 در ساعت 18:51
  5. #5
    2007/07/20
    16
    2

    پاسخ : مشکل در بررسی ست شدن متغیر بعد از بازگشت از وقفه ی دریافت سریال در اتمل استودیوی ۷

    سلام مجدد بر مهندس عزیز .متشکرم ازراهنمایی شما بله با راهنمایی شما کد درست عمل کرد و اجرا شد. خیلی ممنونم وقتتون رو در اختیار من گذاشتید و ضمنا بابت تذکرتون هم جهت نحوه ی به اشتراک گذاری سوال سپاسگزام . لطفا در صورت امکان منبعی معرفی کنید که چنین مسائلی را بیشتر بتوان در آن مطالعه کرد.مانند مورد بنده که به فرموده ی شما نوع داده ی
    volatile مشکل رو حل کرد.
  6. #6
    2017/06/13
    1,276
    695

    پاسخ : مشکل در بررسی ست شدن متغیر بعد از بازگشت از وقفه ی دریافت سریال در اتمل استودیوی ۷

    نقل قول نوشته اصلی توسط ahmadmedusa

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام مجدد بر مهندس عزیز .متشکرم ازراهنمایی شما بله با راهنمایی شما کد درست عمل کرد و اجرا شد. خیلی ممنونم وقتتون رو در اختیار من گذاشتید و ضمنا بابت تذکرتون هم جهت نحوه ی به اشتراک گذاری سوال سپاسگزام . لطفا در صورت امکان منبعی معرفی کنید که چنین مسائلی را بیشتر بتوان در آن مطالعه کرد.مانند مورد بنده که به فرموده ی شما نوع داده ی
    volatile مشکل رو حل کرد.
    مگه منبعی بالاتر از تجربه داریم؟ من که منبع دیگه ای سراغ ندارم! یا باید دنبال منابع زبان اصلی باشید، یا مثل من تجربی یاد بگیرید.
نمایش نتایج: از 1 به 6 از 6

موضوعات مشابه

  1. وقفه دریافت سریال
    توسط nex2004 در انجمن میکروکنترلرهای PIC
    پاسخ: 3
    آخرين نوشته: 2020/04/04, 12:40
  2. مشکل در زیر وقفه اتمل استادیو atmel studio
    توسط antipa در انجمن میکروکنترلرهای AVR
    پاسخ: 9
    آخرين نوشته: 2017/08/31, 00:07
  3. وقفه دریافت سریال
    توسط masror_d در انجمن میکروکنترلرهای AVR
    پاسخ: 11
    آخرين نوشته: 2016/08/12, 20:57
  4. حذف آدرس بازگشت در فراخوانی وقفه؟
    توسط hamidzare در انجمن میکروکنترلرهای AVR
    پاسخ: 11
    آخرين نوشته: 2014/08/17, 13:45
  5. وقفه سریال و دریافت عدد چند رقمی
    توسط syavash_kasraeee در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2010/04/27, 07:38

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •