امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ارتباط سریال
نویسنده پیام
jm آفلاین
تازه وارد

ارسال‌ها: 10
موضوع‌ها: 6
تاریخ عضویت: آبان ۱۳۸۵

تشکرها : 0
( 1 تشکر در 1 ارسال )
ارسال: #1
ارتباط سریال
با سلام و تشکر
من همیشه از ارتباط سریال بین میکرو و کامپیوتر استفاده می کردم و هیچ مشکلی ندارم ، و لی در avr احتیاج به ارتباط سریال بین دو میکروکنترلر دارم ولی جواب نمی دهد یعنی مثلا به جای 63 یک بار عدد 52 ، یک بار 50 و یک بار 10 را می فرستد .( در ضمن همین برنامه را با کامپیوتر چک می کنم هم درست می فرستد و هم درست می گیرد.) بین دو میکرو دو تا ای سی max232 هم گذاشتیم باز هم جواب نداد.لطفا راهنمایی کنید.
۲۲-آذر-۱۳۸۵, ۱۲:۰۳:۲۲
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #2
 
این که کار نمی کنه شاید مال این باشه که باد ریت ها دقیقا برابر نیست توی کامپیوتر خطای بیشتری رو برای بادریت قبول می کنه ولی توی میکرو باید تو هردو از یه کریستال استفاده کنی و یه تنظیمات رو هم برای هر دو بزاری
ببین برای هر یه کارکتری که می فرستی اون طرف هم یه کارکتر می گیری یا بیشتر

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۲۲-آذر-۱۳۸۵, ۲۳:۴۳:۲۰
وب سایت ارسال‌ها
پاسخ
jm آفلاین
تازه وارد

ارسال‌ها: 10
موضوع‌ها: 6
تاریخ عضویت: آبان ۱۳۸۵

تشکرها : 0
( 1 تشکر در 1 ارسال )
ارسال: #3
مشکل حل شد
مشکل در این بود که عدد 63 را می فرستادیم ، سه تا عدد دریافت می کردیم
اشتباه در اینجا بود که از دستور print که مربوط به کامپیوتر استفاده می کردیم به جای آن از برنامه asm استفاده کردیم و یا chr و asc استفاده کردیم .
همه چیز درست بودفقط نحوه دریافت و ارسال با هم فرق داشت
۲۵-آذر-۱۳۸۵, ۱۳:۲۷:۱۵
ارسال‌ها
پاسخ
ali9393 آفلاین
تازه وارد

ارسال‌ها: 7
موضوع‌ها: 1
تاریخ عضویت: دى ۱۳۸۵

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #4
با عرض پوزش
اقا هادي سلام.....همونطور كه گفتين اومدم اينجا مشكلم رو بگم...
راستشو بخاين ميدونم مشكل دوستمون حل شده ولي من هم همين مشكل رو دارم...
ميخوام يه كار خيلي ساده بكنم...2 تا ميكرو رو به صورت سريال بهم وصل كردم....با usart...به يه port ها كد دادم ميخوام همين كد رو از يه port ميكرو دوم بگيرم...فكر ميكردم كار ساده ايه...اما مشكلات تو عمل بوجود مياد...از مثالهاي كتاب علي سليميان استفاده كردم....فرستنده ميفرسه ولي گيرنده نميگيره...نميدونم چكار كنم..
مثال هم كه نداره....اگه يه لطفي بكنين براي من كدشو بفرستين...خيلي ممنونم...
به خدا تنبل نبودم...نميشه...
۱۱-بهمن-۱۳۸۵, ۰۲:۰۱:۴۷
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #5
 
پس فقط تو گیرنده مشکل داری؟ مطمئنی مشکل سخت افزاری نیست؟
روی خودش از مثلا های کمپایلرت استفاده کن و فرستنده گیرنده رو بهم وصل کن ببین همون که می فرستی می گیری یا نه اگه نیست مشکل سخت افزاریه
کد:
#include <90s8515.h>
#include <stdio.h>

/* quartz crystal frequency [Hz] */
#define xtal 4000000L

/* Baud rate */
#define baud 9600

void main(void) {
char k;

/* initialize the UART's baud rate */
UBRR=xtal/16/baud-1;

/* initialize the UART control register
   RX & TX enabled, no interrupts, 8 data bits */
UCR=0x18;

while (1) {
        /* receive the character */
        k=getchar();
        /* and echo it back */
        putchar(k);
        };
}
این echo می کنه هر چی بگیره

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۱۲-بهمن-۱۳۸۵, ۱۰:۴۹:۳۱
وب سایت ارسال‌ها
پاسخ
ali9393 آفلاین
تازه وارد

ارسال‌ها: 7
موضوع‌ها: 1
تاریخ عضویت: دى ۱۳۸۵

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #6
مرسي..
مرسي...
من براي فرستنده بعداز تعريف کردن usart کد زير رو نوشتم...
کد:
while (!(UCSRA & 0x20));

      {
      UDR=PORTB;

      };

و براي گيرنده کد زير را:
کد:
while (UCSRA & 0x80)
      {
      PORTC=UDR;

      };

به port b فرستنده ورودي ميدم....0 و 1
و از port c گيرنده خروجي به led دادم...
اول اينکه فرستنده 2 بار فقط ارسال ميگنه...
دوم اينکه چيزي در گيرنده مشخص نيست..
فعلا با کارکتر کاري ندارم..
به نظر شما مشکل چيه...
۱۴-بهمن-۱۳۸۵, ۱۷:۱۱:۲۷
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #7
 
چرا از دستورات آماده استفاده نمی کنی؟ برای این کار تابع داره
برای گیرنده
کد:
while (1) {
        /* receive the character */
       PORTC=getchar();
        };
وبرای فرستنده
کد:
while (1) {
        putchar(PINB);
        };
به اون روش آدم بعضی وقتها اشتباه می کنه به نظر من فرستنده و گیرنده رو با کامپیوتر جدا تست کن بعد که هر دو درست بودن با هم چک کن البته یادت نره ورودی خروجی ها رو تعریف کنی پول آپ ها رو هم فراموش نکن مثلا برای خوندن باید از pin استفاده کنی که از port استفاده کزده بودی

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۱۴-بهمن-۱۳۸۵, ۲۱:۳۱:۴۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر
ali9393 آفلاین
تازه وارد

ارسال‌ها: 7
موضوع‌ها: 1
تاریخ عضویت: دى ۱۳۸۵

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #8
ممنون
بسيار ممنون....مشكلم حل شد....دقيقا شما مشكل من رو فهميدين...الان داره مدار خوب كار ميكنه...اين چند روز كاراي زيادي روش كردم..از جمله اينكه به صورت بي سيم اين اطلاعات رو ميفرستم و سيم ديگه حذف شده....الان با مشكلي كه بر خوردم اينه كه
چون ميخوام از كدينگ استفاده كنم...بايد اطلاعات getchar شده توسط گيرنده رو بگيرم و روش پردازش كنم....ميدوني چيه طبق كد شما
کد:
PORTC=getchar();
درسته اطلاعات رو تونستيم بريزيم روي پرت C ولي اگه خواستيم مثلا بريزيم روي R1 و بعد روش كاري انجام بديم نميشه...به نظرشما چيكار كنم..
۱۹-بهمن-۱۳۸۵, ۰۱:۵۹:۳۸
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #9
 
R1 که مال اسمبلی بود هر متغیری دوست داشتی تعریف کن و اینو بریز توش
کد:
char mycode;
mycode = getchar();

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۱۹-بهمن-۱۳۸۵, ۱۰:۱۸:۱۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر
ali9393 آفلاین
تازه وارد

ارسال‌ها: 7
موضوع‌ها: 1
تاریخ عضویت: دى ۱۳۸۵

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #10
ممنون
مرسي.....نه مشکل من R1 و اينا نبود.....مشکل اين بود در يکي از شرط ها == نگذاشته بودم...و يه شرط برنام ام رو چک نميکرد....الان مشکلي ندارم..بازم از راهنمايي هاتون تشکر ميکنم..
۲۳-بهمن-۱۳۸۵, ۱۹:۲۱:۴۳
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  ارتباط میکرو با plc از طریق شبکه profibus nex2004 11 14,656 ۰۱-بهمن-۱۳۹۸, ۱۱:۰۰:۱۹
آخرین ارسال: d.hamidi2535
  [مقاله] پروگرام میکرو با پورت سریال behzady 5 11,384 ۱۵-دى-۱۳۹۸, ۲۳:۱۹:۰۹
آخرین ارسال: 1نفر
Exclamation ارتباط سريال بين دو ميكرو و نمايش روي lcd با codevision ali313 13 28,959 ۰۱-شهریور-۱۳۹۷, ۱۱:۰۸:۴۳
آخرین ارسال: farhadtavakkol
  مشکل دریافت متن از پورت سریال میکرو sajadcut 1 3,260 ۱۲-آبان-۱۳۹۵, ۲۲:۱۰:۲۳
آخرین ارسال: behzady
  مشکل در ارتباط بیسیم با پروتکل USART cortex-m3 5 6,012 ۰۷-آبان-۱۳۹۵, ۰۰:۱۷:۳۶
آخرین ارسال: milad15m
  هنگ کردن میکرو در ارتباط سریال nex 1 2,890 ۰۴-آبان-۱۳۹۵, ۲۰:۵۶:۵۹
آخرین ارسال: علی محد شریفی
  مبدل-وایفای-به-سریال-wifi-esp8266 kimiafars 15 10,216 ۰۳-مهر-۱۳۹۵, ۰۳:۲۴:۳۲
آخرین ارسال: jalil2008
  ارتباط avr با plc از طریق profibus nex2004 5 7,429 ۰۳-مهر-۱۳۹۵, ۰۳:۱۶:۰۸
آخرین ارسال: jalil2008
  ارتباط دو طرفه با فرستنده nrf24 sniper-70 0 2,426 ۰۹-شهریور-۱۳۹۵, ۲۲:۱۶:۴۸
آخرین ارسال: sniper-70
Question مشکل با ارتباط spi miladd72 1 2,510 ۱۸-مرداد-۱۳۹۵, ۲۱:۱۷:۵۳
آخرین ارسال: sharin

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS