پرینت روی کانال اول atmega64

سلام وقت بخیر
ممنون از پاسخگویی شما.
در atmega 64 دوتا کانال usart داریم میخواهیم برای دریافت و ارسال از کانال یک استفاده کنیم و میخواهم از دستور printf در این کانال استفاده کنم ولی printf به صورت پیش فرض روی کانال صفر وجود دارد.چطوری با printf روی کانال یک برم؟
و این که تابع اخصاصی هم نوشتم ولی باز جواب نداد.
فقط یک کاراکتر رو نمایش میده .
UDR1=123562 فقط 1 رو میفرسته
مشکلش از کجا نمیدونم دقیقا.

@Mehrad#3952

سلام

در atmega64 دو تا کانال برای usart داریم وقتی printf رو میزنیم به صورت پیش فرض روی کانال صفر پرینت میکنه میخوام روی کانال اولش پرینت کنم باید چه کرد؟

تشکر

سلام دوست عزیز، از چه کامپایلر و نرم افزاری استفاده می کنید؟ توابعی مثل printf رو معمولا خود نرم افزار در اختیار شما قرار میده و می تونید داخل تنظیمات خود نرم افزار و یا داخل فایل های .h مربوط به توابع مورد استفادتون دنبال تنظیمی که می خواید بگردید.
نکته بعدی هم اینکه نوشتن تابع printf اختصاصی خودتون کار آسونی هست و فقط باید آدرس رجیستر های مربوط به کانال های دیگه usart رو بدونید که اون هم به راحتی داخل دیتاشیت وجود داره.

من داخل codevision الان امتحان کردم. در code wizard موقعی که پروژه رو میسازید، usart1 رو اگر انتخاب کنید، براتون یک تابع بع اسم putchar1 اضافه می کنه که این همون تابعی هست که گفتم باید داشته باشید. حالا با استفاده از این می تونید هرچیزی که خواستید بفرستید رو به تعداد کاراکترهاش یک loop بزنید و دونه دونه با استفاده از putchar1 ارسال کنید روی سریال دوم.

سلام، نرم افزار مورد استفادتون رو نگفتید. داخل فایل های .h و تنظیمات گشتید؟
اینکه شما UDR1 رو معادل یک عدد بذارید کار درستی نیست. شما به صورت ۸ بیتی می تونید داده ها رو ارسال کنید و ابتدا باید تابع putchar رو بنویسید برای udr1 و بعدش spintf که میاد یک رشته میگیره و دونه دونه putchar میکنه.

سلام و عرض احترام
من هم همچین مشکلی دارم.

با تابع putchar1 چطور باید کار کنم؟

مثلا من میخوام یک بافر یا یک استرینگ رو از طریق putchar1 ارسال کنم.

یه نمونه مثال لطف میکنید بنویسید.

ممنون