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

موضوع: انتخاب سرعت بالا برای usb

  1. #1
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض انتخاب سرعت بالا برای usb

    سلام
    در پروژه دماسنج، از سرعت پایین استفاده شده و برای ارسال مقدار به کامپیوتر از تابع setup استفاده کرده.
    همچنین با وصل کردن یه دیود به D- مدارو واسه سرعت پایین ست کرده.
    اگه بخواهیم از سرعت بالا استفاده کنیم، شماتیک مدار به چه صورت میشه؟؟؟ میشه نقشه شماتیکی ازش بزارین؟
    همچنین برای انتقال سرعت بالا از توابع read و write استفاده میشه در داخل میکرو. لطفا اگه امکان داره یه مثال از نحوه کد نویسی ای دو تابع در اختیار من بزارین. به یه مثال خیلی ساده نیاز دارم که مثلا از طرف کامپیوتر یه مقداری به میکرو بفرستم و میکرو متناسب با اون مقداری به کامپیوتر بده.
    در اصل نحوه کار با این توابع رو میخوام
    با تشکر...

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

  3. #2
    مدیرکل سایت kavir آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    زارعی
    نوشته ها
    3,547
    تشکر
    1,218
    تشکر شده 5,684 بار در 1,801 پست

    پیش فرض

    سلام
    شماتیک فرقی نمی کنه فقط برنامه کامپیوتری و میکرو
    http://kavirkit.ir/kavirupload/files...AVR_Source.zip
    این سورس بالا پروگرامر avr هست که آقای منصوری نوشتند به صورت کامل هست و سرعت بالا

    برنامه میکرو winavr
    برنامه کامپیوترC++builder6 که در فروشگاه هم قرار داده شده
    موفق باشید
    کویر ویدئو راه اندازی شد

    اگر چه دیر ولی برگشتم به جمع دوستان قدیمی....

  4. #3
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    سلام
    کویر جان ممنون بابت سورس برنامه...
    با دیدن اون سورس چندتا سوال واسم پیش اومده!!!
    1- usbFunctionSetup هم برای ارسال اطلاعات و دریافت اطلاعات استفاده می شود؟
    2- حتما باید usbFunctionSetup را در کنار usbFunctionWrite و usbFunctionRead بکار ببریم؟
    3- دقیقا طرز کار این 3 تابع چطوریه؟
    4- در تابع usbFunctionRead (که میخواهیم اطلاعات را از میکرو به میزبان ارسال کنیم) در آرگومان ورودی len ، طول len از قبل معلوم است؟ چون در یه حلقه از صفر شروع کرده تا به اندازه طول len تکرار بشه و در داخل حلقه بایت بایت خانه های data را مقدار دهی کرده! خوب آیا بعد از خروج از این تابع اطلاعات اتوماتیک فرستاده میشه به میزبان؟؟؟
    5- تابع usbFunctionWrite هم همینطوره؟ در یک حلقه اطلاعاتی رو که از میزبان اومده رو میخونه؟ آیا ممکنه که هر کدام از این بایتها در پروتکلهای usb مفهوم خاصی داشته باشه؟؟؟ مثلا در برنامه چک شده که اگه data[1]=1 بود یعنی ارتباط بین مدار و میزبان برقراره! اطلاعات دقیقا چطوری قرار میگیرن در این آرایه ها؟؟؟؟
    6- در این برنامه چرا از هر سه تابع usbFunctionSetup و read و write استفاده شده؟!
    7- این توابع بصورت اتوماتیک فراخوانی می شوند؟ طرز فراخوانیشون چطوریه؟؟؟؟
    من نفهمیدم که اطلاعات دقیقا به چه صورتی ارسال و دریافت می شوند و حجم اطلاعات چقدر هست!!!!!
    منتظر راهنمايي هاي شما هستم... :D

  5. #4
    مدیرکل سایت kavir آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    زارعی
    نوشته ها
    3,547
    تشکر
    1,218
    تشکر شده 5,684 بار در 1,801 پست

    پیش فرض

    سلام
    من خیلی وقت پیش همین سوال رو از دوست خوبم آقای منصوری پرسیدم که به صورت نقل قول براتون می ذارم
    در ضمن استفاده از پروگرامر ایشان به صورت تجاری ممنوع است
    بسمه تعالی
    سلام دوست عزیز
    فکر می کنم با مثال قبلی که برات فرستادم مشکلت با پروژه حل بشه ولی برای اینکه انتقال اطلاعات با سرعت بالا و استفاده از بافر را خواسته بودی این توضیحات را می نویسم :
    اول اینکه هیچ پروژه ای به یادم نیومد که از بافر استفاده شده باشه و حضور ذهن داشته باشم کامل توضیحش بدم لذا قسمتی از برنامه کامپیوتری و برنامه میکروی اون پروگرمر را برات توضیح میدم . امیدوارم با این توضیحات بتونی برای هر پروژه دیگری که به ذهنت رسید این توابع را بگونه ای تغییر دهی که کارت راه بیفته .
    اول برنامه کامپیوتری :
    static int usbasp_paged_load(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
    int page_size, int n_bytes)
    این تابع برای خواندن یک پیج از روی حافظه میکروست (هم فلش و هم رام){
    int n;
    unsigned char cmd[4];آدرس شروع پیچ را با این متغیر به میکرو می فرستیم
    int address = 0;
    int wbytes = n_bytes;
    int blocksize;مشخص کننده طول بلوک اطلاعاتی است که باید یکجا از میکرو ارسال شود.
    unsigned char * buffer = m->buf;این بافر همون بافری است که حاوی اطلاعاتی است که از روی میکرو خوانده می شود
    int function;

    if (strcmp(m->desc, "flash") == 0) {
    function = USBASP_FUNC_READFLASH;
    } else if (strcmp(m->desc, "eeprom") == 0) {
    function = USBASP_FUNC_READEEPROM;
    } else {
    return -2;
    این چند خط بالا برای تشخیص اینه که می خواهیم از روی رام بخوانیم یا از روی فلش }

    while (wbytes) {
    if (wbytes > USBASP_READBLOCKSIZE) {
    blocksize = USBASP_READBLOCKSIZE;
    wbytes -= USBASP_READBLOCKSIZE;
    } else {
    blocksize = wbytes;
    wbytes = 0;
    }
    اینجا آدرس را در دوبایت به میکرو میفرستیم
    cmd[0] = address & 0xFF;
    cmd[1] = address >> 8;
    حال که تمامی پارامتر های تابع ارسال تکمیل شده ارسال می کنیم .
    n = usbasp_transmit(1, function, cmd, buffer, blocksize);

    if (n != blocksize) {
    fprintf(stderr, "%s: error: wrong reading bytes %x\n",
    progname, n);
    exit(1);
    }
    مقدار بافر و آدرس را با توجه به تعداد بایتهای بلوک آپدیت می کنیم
    buffer += blocksize;
    address += blocksize;
    این تابع برای نمایش نواراست(Progress bar)
    report_progress (address, n_bytes, NULL);
    }

    return n_bytes;
    }
    این تابع برای نوشتن یک پیج روی میکرو است
    static int usbasp_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
    int page_size, int n_bytes)
    {
    int n;
    unsigned char cmd[4];این متغیر برای ارسال آدرس و اندازه پیج استفاده می شود
    int address = 0;
    int wbytes = n_bytes;
    int blocksize;
    unsigned char * buffer = m->buf;
    unsigned char blockflags = USBASP_BLOCKFLAG_FIRST;
    int function;

    if (strcmp(m->desc, "flash") == 0) {
    function = USBASP_FUNC_WRITEFLASH;
    } else if (strcmp(m->desc, "eeprom") == 0) {
    function = USBASP_FUNC_WRITEEEPROM;
    } else {
    return -2;
    }

    while (wbytes) {
    if (wbytes > USBASP_WRITEBLOCKSIZE) {
    blocksize = USBASP_WRITEBLOCKSIZE;
    wbytes -= USBASP_WRITEBLOCKSIZE;
    } else {
    blocksize = wbytes;
    wbytes = 0;
    blockflags |= USBASP_BLOCKFLAG_LAST;
    }

    cmd[0] = address & 0xFF;بایت پایین آدرس
    cmd[1] = address >> 8;بایت بالای آدرس
    cmd[2] = page_size & 0xFF;بایت پایین اندازه پیج
    cmd[3] = (blockflags & 0x0F) + ((page_size & 0xF00) >> 4);
    blockflags = 0;
    ارسال با تابع مخصوصش
    n = usbasp_transmit(0, function, cmd, buffer, blocksize);

    if (n != blocksize) {
    fprintf(stderr, "%s: error: wrong count at writing %x\n",
    progname, n);
    exit(1);
    }

    اصلاح بافر و آدرس برای ارسال بلوک بعدی
    buffer += blocksize;
    address += blocksize;

    report_progress (address, n_bytes, NULL);
    }

    return n_bytes;
    }







    و حالا برنامه میکرو :
    uchar usbFunctionRead(uchar *data, uchar len}(این تابع برای خواندن اطلاعات فلش یا رام و ارسال به یو اس بی است

    uchar i;

    /* check if programmer is in correct read state */
    if ((prog_state != PROG_STATE_READFLASH) &&
    (prog_state != PROG_STATE_READEEPROM)) {
    return 0xff;
    }
    در اینجا بافری را که باید به کامپیوتر بفرستیم پر می کنیم
    /* fill packet */
    for (i = 0; i < len; i++) {
    if (prog_state == PROG_STATE_READFLASH) {
    data[i] = ispReadFlash(prog_address);
    } else {
    data[i] = ispReadEEPROM(prog_address);
    }
    prog_address++;
    }

    /* last packet? */
    if (len < 8) {
    prog_state = PROG_STATE_IDLE;
    }
    طول بافر پر شده را برمی گردانیم
    return len;
    }

    این تابع برای نوشتن یک پیج روی رام یا فلش میکروست
    uchar usbFunctionWrite(uchar *data, uchar len) {

    uchar i;

    /* check if programmer is in correct write state */
    if ((prog_state != PROG_STATE_WRITEFLASH) &&
    (prog_state != PROG_STATE_WRITEEEPROM)) {
    return 0xff;
    }


    for (i = 0; i < len; i++) {

    if (prog_state == PROG_STATE_WRITEFLASH) {
    /* Flash */

    if (prog_pagesize == 0) {
    /* not paged */
    ispWriteFlash(prog_address, data[i], 1);
    } else {
    /* paged */
    ispWriteFlash(prog_address, data[i], 0);
    prog_pagecounter --;
    if (prog_pagecounter == 0) {
    ispFlushPage(prog_address, data[i]);
    prog_pagecounter = prog_pagesize;
    }
    }

    } else {
    /* EEPROM */
    ispWriteEEPROM(prog_address, data[i]);
    }

    prog_nbytes --;

    if (prog_nbytes == 0) {
    prog_state = PROG_STATE_IDLE;
    if ((prog_blockflags & PROG_BLOCKFLAG_LAST) &&
    (prog_pagecounter != prog_pagesize)) {

    /* last block and page flush pending, so flush it now */
    ispFlushPage(prog_address, data[i]);
    }
    }

    prog_address ++;
    }

    return 0;
    کویر ویدئو راه اندازی شد

    اگر چه دیر ولی برگشتم به جمع دوستان قدیمی....

  6. #5
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    مرسي كوير جان...

  7. #6
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    سلام
    با دیدن این راهنما به بعضی از جوابهام رسیدم ولی چندتا از سوالاتم رو با اجازتون دوباره مطرح می کنم:
    1- آیا تابع setup و دو تابع read و write در هر لحظه در حال اجرا هستند؟ در اصل من با نحوه فراخوانی این توابع مشکل دارم!
    2- فکر کنم که setup اول اجرا میشه بعد دو تابع دیگه! درسته؟ چون تو برنامه که دیدم ، اول وضعیت پروگرامر رو واسه اون کاری که میخواد انجام بده ست میکنه (از لحاظ دستوری) بعد مثلا از تابع Write استفاده می کنه؟!
    لطفا یه توضیحی به من بدین
    راستي برنامه نويسي كامپيوتر من با وي بي دات نت و سي شارژ كار مي كنم. سورسي يا راهنمايي دارين كه بتونم ازش استفاده كنم تو دات نت؟
    ممنونم

  8. #7
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    سلام
    در این مثال خواستم که اگه مقدار 5 به میکرو فرستاده شد وضعیت 1 فعال بشه و در تابع read مقدار آرایه مربوطه به کامپیوتر ارسال بشه. همینطور واسه عدد 6
    ولی در تست، هیچ چیزی میکرو برنمیگردونه!!!!! انگار تابع read کار نمیکنه!
    به وسیله replybuffer در تابع setup میتونم مقدار رو بخونم ولی میخوام با استفاده از تابع read این کارو کنم!
    به نظر شما اشکال کار من کجاست؟؟؟؟؟

    #include <avr>
    #include <avr>
    #include <avr>
    #include <avr>
    #include <avr>
    #include <avr>

    #include "usbdrv.h"

    static char replyBuffer[8];

    static unsigned int myStatus;

    uchar MyName1[15]="ThisisTest1";
    uchar MyName2[15]="ForALongT";
    static unsigned int myAdd;

    uchar usbFunctionSetup(uchar data[8]) {
    uchar len = 1;

    if (data[1]==5)
    {
    myAdd=0;
    myStatus=1;
    len=0xff;
    }
    else if(data[1]==6)
    {
    myAdd=0;
    myStatus=2;
    len=0xff;
    }


    usbMsgPtr = replyBuffer;
    return len;
    }


    uchar usbFunctionRead(uchar *data, uchar len) {

    uchar i;

    /* fill packet */
    for (i = 0; i < len; i++)
    {

    if (myStatus==1)
    data[i] = MyName1[myAdd];
    else if(myStatus==2)
    data[i] = MyName2[myAdd];
    myAdd++;
    } // for



    /* last packet? */
    if (len < 8) {

    }

    return len;
    //return 0xff;
    }


    uchar usbFunctionWrite(uchar *data, uchar len) {

    return 0xff;
    }


    int main(void)
    {
    PORTD = 0;
    PORTB = 0; /* no pullups on USB and ISP pins */
    DDRD = ~(1 << 2); /* all outputs except PD2 = INT0 */
    DDRB = 0; /* all USB and ISP pins inputs */

    DDRC = 0b101111; /* all output except PC4 */
    PORTC = 0b001000;

    usbInit();
    sei();
    for(;;){ /* main event loop */
    usbPoll();
    }
    return 0;
    }

  9. #8
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    كسي نيست جوابه منو بده؟؟؟؟

  10. #9
    مدیرکل سایت kavir آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    زارعی
    نوشته ها
    3,547
    تشکر
    1,218
    تشکر شده 5,684 بار در 1,801 پست

    پیش فرض

    دوست عزیز منم با این توابع کار نکردم یعنی تا حالا مورد نیازم نبوده وفقط از همون setup استفاده کردم
    خوب یک مثال جامع و کامل با سورس کامل در اختیارتون گذاشتم بررسی کنید و یک مثال ساده در همین تاپیک بذارید
    کویر ویدئو راه اندازی شد

    اگر چه دیر ولی برگشتم به جمع دوستان قدیمی....

  11. #10
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    نقل قول نوشته اصلی توسط kavir
    سلام
    من خیلی وقت پیش همین سوال رو از دوست خوبم آقای منصوری پرسیدم که به صورت نقل قول براتون می ذارم
    در ضمن استفاده از پروگرامر ایشان به صورت تجاری ممنوع است
    بسمه تعالی
    سلام دوست عزیز
    فکر می کنم با مثال قبلی که برات فرستادم مشکلت با پروژه حل بشه ولی برای اینکه انتقال اطلاعات با سرعت بالا و استفاده از بافر را خواسته بودی این توضیحات را می نویسم :
    اول اینکه هیچ پروژه ای به یادم نیومد که از بافر استفاده شده باشه و حضور ذهن داشته باشم کامل توضیحش بدم لذا قسمتی از برنامه کامپیوتری و برنامه میکروی اون پروگرمر را برات توضیح میدم . امیدوارم با این توضیحات بتونی برای هر پروژه دیگری که به ذهنت رسید این توابع را بگونه ای تغییر دهی که کارت راه بیفته .
    اول برنامه کامپیوتری :
    static int usbasp_paged_load(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
    int page_size, int n_bytes)
    این تابع برای خواندن یک پیج از روی حافظه میکروست (هم فلش و هم رام){
    int n;
    unsigned char cmd[4];آدرس شروع پیچ را با این متغیر به میکرو می فرستیم
    int address = 0;
    int wbytes = n_bytes;
    int blocksize;مشخص کننده طول بلوک اطلاعاتی است که باید یکجا از میکرو ارسال شود.
    unsigned char * buffer = m->buf;این بافر همون بافری است که حاوی اطلاعاتی است که از روی میکرو خوانده می شود
    int function;

    if (strcmp(m->desc, "flash") == 0) {
    function = USBASP_FUNC_READFLASH;
    } else if (strcmp(m->desc, "eeprom") == 0) {
    function = USBASP_FUNC_READEEPROM;
    } else {
    return -2;
    این چند خط بالا برای تشخیص اینه که می خواهیم از روی رام بخوانیم یا از روی فلش }

    while (wbytes) {
    if (wbytes > USBASP_READBLOCKSIZE) {
    blocksize = USBASP_READBLOCKSIZE;
    wbytes -= USBASP_READBLOCKSIZE;
    } else {
    blocksize = wbytes;
    wbytes = 0;
    }
    اینجا آدرس را در دوبایت به میکرو میفرستیم
    cmd[0] = address & 0xFF;
    cmd[1] = address >> 8;
    حال که تمامی پارامتر های تابع ارسال تکمیل شده ارسال می کنیم .
    n = usbasp_transmit(1, function, cmd, buffer, blocksize);

    if (n != blocksize) {
    fprintf(stderr, "%s: error: wrong reading bytes %x\n",
    progname, n);
    exit(1);
    }
    مقدار بافر و آدرس را با توجه به تعداد بایتهای بلوک آپدیت می کنیم
    buffer += blocksize;
    address += blocksize;
    این تابع برای نمایش نواراست(Progress bar)
    report_progress (address, n_bytes, NULL);
    }

    return n_bytes;
    }
    این تابع برای نوشتن یک پیج روی میکرو است
    static int usbasp_paged_write(PROGRAMMER * pgm, AVRPART * p, AVRMEM * m,
    int page_size, int n_bytes)
    {
    int n;
    unsigned char cmd[4];این متغیر برای ارسال آدرس و اندازه پیج استفاده می شود
    int address = 0;
    int wbytes = n_bytes;
    int blocksize;
    unsigned char * buffer = m->buf;
    unsigned char blockflags = USBASP_BLOCKFLAG_FIRST;
    int function;

    if (strcmp(m->desc, "flash") == 0) {
    function = USBASP_FUNC_WRITEFLASH;
    } else if (strcmp(m->desc, "eeprom") == 0) {
    function = USBASP_FUNC_WRITEEEPROM;
    } else {
    return -2;
    }

    while (wbytes) {
    if (wbytes > USBASP_WRITEBLOCKSIZE) {
    blocksize = USBASP_WRITEBLOCKSIZE;
    wbytes -= USBASP_WRITEBLOCKSIZE;
    } else {
    blocksize = wbytes;
    wbytes = 0;
    blockflags |= USBASP_BLOCKFLAG_LAST;
    }

    cmd[0] = address & 0xFF;بایت پایین آدرس
    cmd[1] = address >> 8;بایت بالای آدرس
    cmd[2] = page_size & 0xFF;بایت پایین اندازه پیج
    cmd[3] = (blockflags & 0x0F) + ((page_size & 0xF00) >> 4);
    blockflags = 0;
    ارسال با تابع مخصوصش
    n = usbasp_transmit(0, function, cmd, buffer, blocksize);

    if (n != blocksize) {
    fprintf(stderr, "%s: error: wrong count at writing %x\n",
    progname, n);
    exit(1);
    }

    اصلاح بافر و آدرس برای ارسال بلوک بعدی
    buffer += blocksize;
    address += blocksize;

    report_progress (address, n_bytes, NULL);
    }

    return n_bytes;
    }







    و حالا برنامه میکرو :
    uchar usbFunctionRead(uchar *data, uchar len}(این تابع برای خواندن اطلاعات فلش یا رام و ارسال به یو اس بی است

    uchar i;

    /* check if programmer is in correct read state */
    if ((prog_state != PROG_STATE_READFLASH) &&
    (prog_state != PROG_STATE_READEEPROM)) {
    return 0xff;
    }
    در اینجا بافری را که باید به کامپیوتر بفرستیم پر می کنیم
    /* fill packet */
    for (i = 0; i < len; i++) {
    if (prog_state == PROG_STATE_READFLASH) {
    data[i] = ispReadFlash(prog_address);
    } else {
    data[i] = ispReadEEPROM(prog_address);
    }
    prog_address++;
    }

    /* last packet? */
    if (len < 8) {
    prog_state = PROG_STATE_IDLE;
    }
    طول بافر پر شده را برمی گردانیم
    return len;
    }

    این تابع برای نوشتن یک پیج روی رام یا فلش میکروست
    uchar usbFunctionWrite(uchar *data, uchar len) {

    uchar i;

    /* check if programmer is in correct write state */
    if ((prog_state != PROG_STATE_WRITEFLASH) &&
    (prog_state != PROG_STATE_WRITEEEPROM)) {
    return 0xff;
    }


    for (i = 0; i < len; i++) {

    if (prog_state == PROG_STATE_WRITEFLASH) {
    /* Flash */

    if (prog_pagesize == 0) {
    /* not paged */
    ispWriteFlash(prog_address, data[i], 1);
    } else {
    /* paged */
    ispWriteFlash(prog_address, data[i], 0);
    prog_pagecounter --;
    if (prog_pagecounter == 0) {
    ispFlushPage(prog_address, data[i]);
    prog_pagecounter = prog_pagesize;
    }
    }

    } else {
    /* EEPROM */
    ispWriteEEPROM(prog_address, data[i]);
    }

    prog_nbytes --;

    if (prog_nbytes == 0) {
    prog_state = PROG_STATE_IDLE;
    if ((prog_blockflags & PROG_BLOCKFLAG_LAST) &&
    (prog_pagecounter != prog_pagesize)) {

    /* last block and page flush pending, so flush it now */
    ispFlushPage(prog_address, data[i]);
    }
    }

    prog_address ++;
    }

    return 0;
    سلام. من در اين تاپيك از شما سوالي پرسيدم. ميشه لطفا برنامه منو چك كنين؟؟؟؟

  12. #11
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    نقل قول نوشته اصلی توسط kavir
    دوست عزیز منم با این توابع کار نکردم یعنی تا حالا مورد نیازم نبوده وفقط از همون setup استفاده کردم
    خوب یک مثال جامع و کامل با سورس کامل در اختیارتون گذاشتم بررسی کنید و یک مثال ساده در همین تاپیک بذارید
    سلام كوير جان
    برنامه ميكروي من مشكلي نداشت و سالم هست! اشكال كار من در برنامه كامپيوتري بود! فايلي كه واسه ارتباط با ميكرو استفاده مي كنم مشكل داره واسه ارسال داده به ميكرو!
    آيا شما كامپوننتي، dllاي دارين كه بتونم باهاش كار كنم؟؟؟ زبان برنامه نويسي من وي بي دات نت هست. اگه چنين كامپوننتي رو داري لطفا در اختيار منم بزار.
    با تشكر

  13. #12
    مدیرکل سایت kavir آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    زارعی
    نوشته ها
    3,547
    تشکر
    1,218
    تشکر شده 5,684 بار در 1,801 پست

    پیش فرض

    سلام
    اگه ارتباط خیلی سریع و راحت می خواهید توی انجمن avr309 جستجو کنید فقط برنامه میکرو اسمبلی هست و لی ارتباط خیلی راحت هست و یا توی گوگل avrcdc بگردید اونم ارتباطش راحته که برنامه میکرو اون با winavr و یک پورت com مجازی می سازه و بسادگی می تونید ارتباط برقرار کنید
    موفق باشید
    کویر ویدئو راه اندازی شد

    اگر چه دیر ولی برگشتم به جمع دوستان قدیمی....

  14. #13
    عضو جدید
    تاریخ عضویت
    Dec 2010
    نوشته ها
    7
    تشکر
    5
    تشکر شده 0 بار در 0 پست

    پیش فرض

    با سلام
    اگه بخواهیم برای انتقال های بیشتر از 2 بایت از تابع های read ,write در برنامه میکرو استفاده کنیم برنامه سمت کامپیوتر رو در #c چطور باید بنویسیم
    ممنون میشم اگه راهنمایی کنید یا مرجعی به من معرفی کنید

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

  1. افزایش سرعت اینترنت ایرانسل
    توسط kianet7741 در انجمن گفت و گوي آزاد
    پاسخ: 0
    آخرين نوشته: 14-07-2013, 12:26
  2. حداکثر سرعت
    توسط sadeghbakhshi در انجمن میکروکنترلرهای 8و16 بیتی
    پاسخ: 1
    آخرين نوشته: 02-07-2013, 17:28
  3. سرعت كليد زني
    توسط wiki در انجمن AVR
    پاسخ: 20
    آخرين نوشته: 19-09-2011, 12:06
  4. پاسخ: 0
    آخرين نوشته: 02-02-2010, 20:13
  5. ساعت عقربه ای با LED دو رنگ(RG)
    توسط rasool.v در انجمن AVR
    پاسخ: 4
    آخرين نوشته: 21-09-2009, 09:16

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

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