اطلاعیه

Collapse
No announcement yet.

سوال برنامه نویسی در کدویژن

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

    سوال برنامه نویسی در کدویژن

    سلام به همه دوستان
    من میخام تعدادی داده رو روی پورت A اتمگا 16 ارسال کنم.
    داده ها از نوع بایت هستن
    تعدادشون 10 هزار تا هست
    .
    .
    برنامه زیر رو نوشتم که برای تعداد کم جواب میده ولی تعداد داده ها که بالا میره جواب نومیده
    #include <mega16.h>
    #include<delay.h>

    signed char display[]=
    {1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10
    };

    void main(void){
    signed int i ;

    PORTA=0xFF;
    DDRA=0xFF;


    DDRB.0=0;

    while (1) {



    if(PINB.0==1);
    PORTA= display[i];
    ; i++

    delay_ms(100);


    };
    }

    سوال من اینه که
    ایا روش درسته؟ اگر نه، چو طوری تعداد زیادی داده رو روی یه پورت ارسال کنم؟
    ( روش پیشنهادی شما چیه؟)



    #2
    پاسخ : سوال برنامه نویسی در کدویژن

    با سلام
    مبدا و مقصد داده های شما چه نوع حافظه هایی هستند ؟ این طور که به نظر میرسه خروجی شما که یک پروت موازی به صورت کامل هست برای نوعی تابلو روان یا یک چنین چیزی قراره استفاده بشه ، اگر خواسته باشید اطلاعات با این حجم نسبتا زیاد در مقابل اکثر انتقالات معمولی به درستی انجام بشه به نظر بنده خوبه که اطلاعات رو روی یک نوع حافظه که دارای پروتکل ارتباطی i2c و یا spi هست ذخیره کنی و بعد یه برنامه نسبتا ساده بنویسی و با استفاده از روش آدرس دهی غیر مستقیم تا آخرین بایت داده ها رو منتقل کنی؟

    از بین دو پروتکل پیشنهادی spiبسیار سریعتره و حافظه های با حجم بالاتری رو نسبت به i2c پشتیبانی میکنه.

    البته شما با مشخصاتی که گفتین
    نوشته اصلی توسط پویاوار

    داده ها از نوع بایت هستن
    تعدادشون 10 هزار تا هست
    برای ذخیره این داده ها به حدود 78 کیلو بایت فضا احتیاج داری و یه میکرو کنترلر مثل ATMEGA128 و از این قبیل جواب میده و باز هم بعد از ذخیره کافیه به روش آدرس دهی غیر مستقیم تمام داده ها رو با یک برنامه ساده روی پورت مورد نظر بذاری....

    موفقیت یک فرایند است نه یک اتفاق...

    ******** استفاده از گزینه تشکر نشانه اهمیت و احترام شما به پیگیری شخص نظر دهنده است ********

    دیدگاه


      #3
      پاسخ : سوال برنامه نویسی در کدویژن

      میخام از همون 16 کیلو حافظه فلش اتمگا 16 استفاده کنم این کار رو با زبون بیسیک انجام دادم که یه اشکال جزئی داشت( فرکانس ارسال دیتا ها به مقدار دلخواه نمی رسید) و حالا برای اولین بار اومدم سراغ زبون سی . :rolleyes: :rolleyes:

      و این دیتا ها مربوط به یه نمونه صوتی هستن و با یه تبدیل r2r به انالوگ تبدیل میشن.

      و باید عرض شود که من ده هزار تا عدد 8 بیتی دارم که مجوعا میشه 10 کیلو بایت و روی یه اتمگا 16 جا میشه چون توی بسکام جواب داده.
      لطفا بفرمایید در مورد ادرس دهی غیر مستقیم و ارتباط spi و i2c از کجا میتونم اطلاعات کسب کنم ؟؟
      با تشکر :bye :bye

      دیدگاه


        #4
        پاسخ : سوال برنامه نویسی در کدویژن

        اقا یکی پیدا بشه جواب مارو بده :eek: :eek:

        دیدگاه


          #5
          پاسخ : سوال برنامه نویسی در کدویژن

          سلام

          برای اون سوال اول:

          int i;
          for(i=0;i<10000;i++)
          PORTA=display[i];
          سوال دوم:
          PDF آموزش سریع میکروکنترولر AVR نویسنده : آقای رضا سپاسیار.
          AVR.ir

          دیدگاه

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