اطلاعیه

Collapse
No announcement yet.

ارسال سریال اطلاعات

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ارسال سریال اطلاعات

    سلام
    من این برنامه رو توی winavr نوشتم ولی اطلاعات رو با خطای زیادی به کامپیوتر می فرسته یعنی چند بایت درست می فرسته بعد یه سری اطلاعات نادرست بیشتر بعد دوباره اطلاعات درست و ...
    به نظرتون مشکل از کجاست؟
    #ifndef F_CPU

    //define cpu clock speed if not defined

    #define F_CPU 11059200
    #endif
    #define BAUD 115200

    #include <avr/io.h>
    #include <util/delay.h>
    #include <util/setbaud.h>
    void USART_Init()
    {
    UBRRH = UBRRH_VALUE;
    UBRRL = UBRRL_VALUE;
    #if USE_2X
    UCSRA |= (1 << U2X);
    #else
    UCSRA &= ~(1 << U2X);
    #endif

    UCSRC =(1<<URSEL)|(0<<USBS)|(1<<UCSZ1) |(1<<UCSZ0);
    UCSRB=(1<<RXEN)|(1<<TXEN);
    }

    void write(uint8_t Temp)
    {
    while(!(UCSRA&(1<<UDRE)));
    UDR=Temp;
    }
    int main(void)
    {
    register uint8_t i;
    i=0;
    USART_Init();
    while(1)
    {
    for(register int h=0;h<6;h++){
    write(65+h);
    //for(int f=0;f<=10;i++);
    }
    write(13);
    write(10);
    }
    return 0;

    }


    #2
    پاسخ : ارسال سریال اطلاعات

    یه چیز دیگه هم بگم
    اگر برنامه رو طوری بنویسم که اعداد 0 تا 255 رو چاپ کنه برنامه فقط از 0 تا 18 رو چاپ می کنه و بعد دوباره از صفر شروع می کنه مثل اینکه میکرو رست شده باشه شاید مشکل اینجا باشه

    دیدگاه


      #3
      پاسخ : ارسال سریال اطلاعات

      کلاک رو روی 8 بزار باود رو روی 9600.
      [img width=119 height=100]http://www.haojieworld.com/image/cooperation.jpg[/img]

      دیدگاه


        #4
        پاسخ : ارسال سریال اطلاعات

        همه ی فرکانس ها و همه باود ریت ها رو امتحان کردم و بالاخره فهمیدم که اصلا ربطی به اینها نداره نرم افزار پروگرامر به صورت پیش فرض watch dog رو برای مگا8 روشن می کنه ولی برای مگا 16 نه برای همین روی مگا 16 مشکلی پیش نمیاد.ولی روی مگا 8 همیشه بعد از یه زمان ثابت میکرو رست می شد و ...
        خیلی ممنون از کمک هاتون

        دیدگاه

        لطفا صبر کنید...
        X