NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 5173 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 8 از 8

موضوع: برنامه‏ی ارسال توسطusart

  1. #1
    عضو جدید
    تاریخ عضویت
    Oct 2009
    نوشته ها
    15
    تشکر
    21
    تشکر شده 6 بار در 5 پست

    Icon17 برنامه‏ی ارسال توسطusart

    [SIZE="7"][SIZE="4"]سلام دوستان
    من یک مبدل انالوگ به دیجیتال دارم که میخوام توسط میکرو کنترلش کنم یعنی بهش فرمان یدم تبدیل رو شروع کنه یا اینکه از پایان یافتن تبدیلش مطلع بشم. و اطلاعات خروجی مبدل رو به پایه های میکرو متصل کرده ام و میخوام این اطلاعات دیجیتال شده رو به کامپیوتر بفرستم تا توسط نرم افزار LabView روی اونها تجزیه و تحلیل کنم.
    اما برای اینکه ببینم اطلاعات به سمت کامپیوتر میرم یا نه و اینکه این اطلاعات درست میرن یا توی انتقال اطلاعات به کامپیوتر دچار اشکال میشن یا نه، از یک LCD روی پورت B میکرو استفاده کردم. (البته میدونم برای دیدن اطلاعاتی که دائم در حال تغییر هستن استفاده از LCD مناسب نیست اما من این LCD رو گذاشتم تا برای تست یک ورودی ثابت به مبدل میدم و تبدیل اطلاعات و انتقال اون رو به کامپیوتر رو چک می‏کنم.)

    همانطوری که گفتم پورت B به یک LCD که 16*2 هست متصل شده است.

    پورت A و دو بیت با ارزش پورت C برای گرفتن اطلاعات از مبدل انالوگ به دیجیتال (AD1674JN) استفاده شده اند.

    پایه PORTC.2 برای ارسال دستور شروع تبدیل به مبدل استفاده شده است. (پایه R/C در ADC به این صورت کار میکند که اگر صفر باشد تبدیل میکنه و اگر یک باشد اطلاعات در خروجییش معتبر و قابل خواندن هستند.)

    البته پایه PORTC.3 میکرو به پایه STS مبدل متصل است که این پایه به عنوان ورودی برای میکرو در نظر گرفته شده است. چون ADC پس از پایان تبدیل توسط این پایه اطلاع می‏دهد که خروجی معتبر است و می‏توانید آن را بخوانید.

    اینم خود برنامه:

    /************************************************** ***
    Chip type : ATmega16
    AVR Core Clock frequency: 11.059000 MHz
    Data Stack size : 256
    ************************************************** ***/
    #include <mega16.h>
    #asm
    .equ __lcd_port=0x18 ;PORTB
    #endasm
    #include <lcd.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <delay.h>

    void main(void)
    {

    long int x , y , z ;
    char S[10];

    PORTA=0xFF;
    DDRA=0x00;
    PORTB=0x00;
    DDRB=0xFF;
    PORTC=0xF8;
    DDRC=0x07;
    PORTD=0x00;
    DDRD=0xFF;

    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: Off
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 19200
    UCSRA=0x00;
    UCSRB=0x08;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x23;

    // LCD module initialization
    lcd_init(16);

    while (1)
    {
    DDRA=0x00;
    DDRB=0xFF;
    DDRC=0x07;
    DDRD=0xFF;

    PORTC.2=0; // active convert datas
    while(PORTC.3==1); // wait for end convert
    PORTC.2=1; // active read datas
    x=PINA;
    y=PINC;
    y=y<<8;
    y=y&1100000000;
    z=x|y;
    printf("%d",z); // send Datas by USART

    lcd_clear(); // Shown result on LCD
    lcd_gotoxy(0,0);
    lcd_putsf("The Number is:");
    DDRB=0xFF;
    sprintf(S,"NUM= %d",z);
    lcd_gotoxy(5,1);
    lcd_puts(S);
    delay_ms(100);
    };
    }


    اگه جایی از برنامه نامفهومه بگید تا توضیح بدم.

    راستی این برنامه کار نکرد!!!!
    لطفا کمک کنید اشکال برنامه رو پیدا کنم، مهندسین و جوانان محترم.

    توی ضمیمه دیتا شیت ADC و اصل برنامه موجود است.

    اینم ایمیل منه:
    mfshyoung@yahoo.com
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: txt USART.txt (1.5 کیلو بایت, 30 نمايش)
    • نوع فایل: pdf AD1674.pdf (255.1 کیلو بایت, 39 نمايش)

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام دوست عزیز

    ورود شما رو به این انجمن تبریک میگم.

    یه سوالی برام پیش اومده و اون اینکه چرا شما از مبدل آنالوگ به دیجیتال خود میکرو کنرلر استفاده نمی کنید؟ اگه تبدیل 10 بیتی مد نظرتونه باید بگم که مگا 16 مبدل آنالوگ به دیجیتال ده بیتی داره. من زیاد در کدویژن وارد نیستم ، ولی اگه شما بخواید از adc خود میکرو استفاده کنید من و بقیه ی عزیزان می تونیم کمکتون کنیم.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  4. تشکرها از این نوشته :


  5. #3
    عضو جدید
    تاریخ عضویت
    Oct 2009
    نوشته ها
    15
    تشکر
    21
    تشکر شده 6 بار در 5 پست

    پیش فرض

    سلام دوست عزیز
    از راهنمایی هاتون خیلی ممنون هستم.
    ولی میدونم این قسمت توی خود میکرو هست اما توی پروژه ای که من دارم درست میکنم باید دقت کار بالا باشه حتی بالا تر از این adc که من از اون استفاده می کنم که adc میکرو دارای دقت خوبی برای کارهای حساس نیست.
    به این دلیل مجبورم از این روش بهره بگیرم.

    مشکل اینجاست که یک ماه پیش یه برنامه نوشتم که مقدار یکی از پورت ها -توسط سوئیچ ورودی میدادم- رو روی دو تا پورت دیگه -یکی led‌ و یکیlcd- نشون می داد و درست کار می کرد و حالا هم درست کار میکنه و لی زمانی که خروجی مبدل رو به پورت وصل میکنم و میخوام این مقدار روی lcd نشون بدم این اتفاق نمی افته.
    برنامه ای که در موردش صحبت می کنم تقریبا با دو سه خط تغییر، همان بخش پایانی برنامه قبلی است.

  6. #4
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    من زیاد به کدویژن آشنایی ندارم ، فعلا نمی تونم برای کدویژن وقت بذارم.

    از سایر دوستان می خوام که این عزیز کمک کنن ، مخصوصا کسانیکه در امر کدویژن تسلط دارن.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  7. تشکرها از این نوشته :


  8. #5
    عضو جدید
    تاریخ عضویت
    Oct 2009
    نوشته ها
    15
    تشکر
    21
    تشکر شده 6 بار در 5 پست

    پیش فرض

    سلام

    بازم ازتون متشکرم دوست عزیز

    تا حدودی مشکلم برطرف شد توی نوشتن برنامه فقط مشکل بزرگ همون که برای گفتم، یعنی جایی که اطلاعات توی کامپیوتر منتقل میشن و ما میتونیم اونا رو ببینیم.
    ویرایش توسط ali3130 : 15-02-2010 در ساعت 01:53

  9. #6
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    موارد مشکوک :
    1- فیوز بیت jtag : از پین ها c2 تا c5 به صورت پیش فرض برای واسط jtag استفاده میشه و شما باید فیوز بیت jtag رو از کاربندازید .
    2- اگه عبارت "The Number is:" بر روی lcd نمایش داده میشه و فیوز بیت jtag غیر فعال هست ، به احتمال زیاد مشکل از سخت افزار مدار هست که باید چکش کنید .
    3- بهتره اول داده رو در محیط ترمینال ببنید و بعد از اینکه از صحت اونا مطمئن شدید ، نرم افزار رو راه اندازی کنید . تنظیم کردن فیوز بیت کریستال یادتون نره
    ویرایش توسط 1nafar : 15-02-2010 در ساعت 13:16 دلیل: غلط املایی

  10. تشکرها از این نوشته :


  11. #7
    عضو جدید
    تاریخ عضویت
    Oct 2009
    نوشته ها
    15
    تشکر
    21
    تشکر شده 6 بار در 5 پست

    پیش فرض

    سلام 1nafar

    1- فیوز بیت رو موقع پروگرمر کردن چک کردم، از اون نظر حله.

    2- برای تست کردن، برنامه رو تغییر دادم و به جای ADC ، ورودی با کلید به میکرو وصل کردم تا اون چند خط مربوط به پایه های ADC و انتظار برای تکمیل تبدیل.
    این تغییر توی برنامه باعث شد مطمئن بشم سخت افزارم درسته و همون طور که گفتم مونده برنامه‏ی انتقال USART و نمایش اطلاعات روی کامپیوتر .
    دوستمون morteza_rk گفته توی انجمن ها میتونم برنامش رو پیدا کنم. (البته برنامش باید آسون باشه که یه چیزایی براش نوشتم اما نتونستم چکش کنم بخاطر همون مشکل نمایش اطلاعات روی کامپیوتر. اما حالا باید بگردم توی انجمن ها و برنامه رو پیدا کنم.)

    3- دوست عزیز مشکل اینه که HyperTreminal رو نصب میکنم و پورت رو براش تعریف میکنم اما اطلاعات روش نمایش داده نمیشه، پس چطور از صحتش مطمئن بشم.
    منظور از نرم‏افزار چیه؟ چی رو باید راه اندازی کنم؟
    اگه منظور از تنظیم کردن فیوز بیتها همون پورت Jtag هست، که چک کردم و اگه منظور کریستال برای پالسهای خود میکرو هست که من یک کریستال 11.059 روی میکرو نصب کردم و به نظرم درست پروگرم کردم.

    بازم از پاسخ ها و پیگیری هاتون ممنون.

  12. #8
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    دوست من شما برای ابتدای کار و تست موارد ارسالی به کامپیوتر چرا از محیط ترمینال خود کامپایلر کدویژن استفاده نمی کنید؟

    حداقلش اینه که تا اینجای کار می تونید ببینید که آیا اطلاعاتی که میکرو می فرسته بدرستی به کامپیوتر میرسه یا نه؟

    من قبلا یه کد ساده برای تست ماژول سریال LCD خودم نوشتم (البته با کمک جناب 1Nafar) که پورت سریال و کامپایلر کدویژن کار می کنه ، شما این مدار رو تست کن و ببین که اطلاعاتی که می فرستی در محیط Terminal کدویژن نشون داده میشه یا نه؟

    کد:
     /*****************************************************
    This program was produced by the
    CodeWizardAVR V2.03.9 Standard
    Automatic Program Generator
    © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com
    
    Project : 
    Version : 
    Date    : 2009/12/13
    Author  : MRK
    Company : Rahimi
    Comments: 
    
    
    Chip type               : ATmega8
    Program type            : Application
    AVR Core Clock frequency: 7.372800 MHz
    Memory model            : Small
    External RAM size       : 0
    Data Stack size         : 256
    *****************************************************/
    
    #include <mega16.h>
    #include <stdio.h>
    #include <delay.h>
    
    char flash*s="MRK";
    char flash*s1="Rahimi";
    
    char Enter=13;
    
    unsigned char x=2;
    unsigned char i;
    unsigned char wait1=250;
    
    
    void main(void)
    {
    
    PORTD=0x00;
    DDRD=0x00;
    
    PORTA=0x00;
    DDRA=0xff;
    
    // USART initialization
    UCSRA=0x00;
    UCSRB=0x08;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x2F;
    
    
    while (1)
          { 
          
      if( PIND.4==0 )
            {
            
             PORTA.0 = 1;
            
             printf("cls%c",Enter);
             printf("cls%c",Enter);
             printf("locate 1,1%c",Enter);                            //Argument
             printf("lcd Morteza%c",Enter);                           //Argument
             delay_ms (1200);
    
              for (i=1;i<17;i++)                                      //Make up Shift LCD display with for command
                {
                 printf("shiftlcd right%c",Enter);
                 delay_ms (250);
                }
                
              printf("shiftlcd left%u,%u%c",250,16,Enter);            //Make up shift LCD display withuot FOR command   
              printf("cls%c",Enter);
              printf("shiftcursor right 250,16%c",Enter);             //Argument
              delay_ms (4000);                                        //Notice,Very important ==> 250ms *16 = 3750ms
              
              printf("shiftcursor left%u,%u%c",wait1,16,Enter);       //Variable and Constant
              delay_ms (8000);
              
              printf("locate%u,%u%c",2,x,Enter);                      //Variable and Constant
              printf("lcd ?%pAli %p%c",s,s1,Enter);                   //Argument and Variable
              delay_ms (2500);
              
              printf("Display off%c",Enter);
              delay_ms (3000); 
               
              printf("display on%c",Enter);
              printf("cursor blink%c",Enter);
              delay_ms (6000);
              
              printf("Blt off%c",Enter);
              delay_ms (2000);
              printf("blt on%c",Enter);
             
              printf("$ch 2,0,10,10,0,14,17,0,0%c",Enter);          //Smiley face
              printf("$ch 0,0,10,10,0,17,14,0,0%c",Enter);          //Sad face
              
              printf("locate 1,1%c",Enter);
              printf("ch2%c",Enter);
              
              printf("locate 2,1%c",Enter);
              printf("ch0%c",Enter);
              
              delay_ms(2000);
              
              printf("con 170%c",Enter);
              delay_ms(2500);
              printf("con 220%c",Enter);
                                 
            }
    
          };
    }
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

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

  1. کمک در مورد واحد usart
    توسط amiray در انجمن AVR
    پاسخ: 15
    آخرين نوشته: 06-01-2014, 14:26
  2. Usart
    توسط meh1011 در انجمن AT91 series (ATMEL)
    پاسخ: 9
    آخرين نوشته: 09-09-2013, 20:07
  3. مدباس و usart
    توسط ali_73909 در انجمن میکروکنترلرهای 8و16 بیتی
    پاسخ: 0
    آخرين نوشته: 23-08-2012, 05:22
  4. Usart
    توسط Caspian1361 در انجمن AT91 series (ATMEL)
    پاسخ: 3
    آخرين نوشته: 21-12-2010, 17:21
  5. Usart |ثبات هاي usart |نحوه كار
    توسط SAHA21 در انجمن AVR
    پاسخ: 2
    آخرين نوشته: 16-08-2010, 00:05

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

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