PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزش جامع اتصال avr به پورت usb در بسکام



morteza_rk
12-07-2012, 18:21
سلام

یه آموزش راجع به نحوه ی ارتباط دهی AVR با پورت USB و برنامه نویسیش با بسکام تهیه کردم. در سمت کامپیوتر هم زبان های برنامه نویسی می تونن ویژوال بیسیک ، VB.NET و #C باشن.

این آموزش در قالب سه فایل تهیه شده : آموزش برنامه ی AVR ، آموزش برنامه ی کامپیوتر و آموزش سخت افزار - البته در سمت کامپیوتر ، آموزش بر مبنای BV.NET تهیه شده. ضمنا آموزش شامل 4 مثال متنوع و ساده هم هست.

امیدوارم که مطلب خوبی باشه.


دانلود فایل های آموزش AVR و پورت USB (You can see links before reply)

لینک کمکی (You can see links before reply)


بخش هایی از آموزش برنامه ی AVR :

کمپانی MCSelec که تهیه کننده و سازنده ی کامپایلر بسکام می باشد در امر ایجاد کتابخانه های فراوان و مفید ، برای ارتباط میکروکنترلرهای AVR با مدارات جانبی ، یدی طولانی دارد. از جمله دارای کتابخانه ای با نام USB Add On می باشد. اما شاید بتوان گفت که بزرگترین ضعف این کتابخانه اینست که تنها برای میکروکنترلرهای سری ATUSB طراحی شده که از بین آنها درحال حاضر فقط ATUSB162 و ATUSB1287 پشتیبانی می شوند. (سایر تراشه های گروه ATUSB هم بزودی پشتیبانی خواهند شد). بنابراین در صورت استفاده از این کتابخانه نمی توان با سایر میکروکنترلرهای AVR برنامه ای برای ارتباط با پورت USB نوشت. ضمن اینکه این کتابخانه جزو آندسته از کتابخانه هائیست که باید از شرکت mcselec خریداری شوند.

اما در کنار این کتابخانه ، فردی با نام کاربری Ollopa که یکی از کاربران سایت Home - MCS Electronics (You can see links before reply) می باشند کتابخانه ی دیگری با نام swusb.LBX تهیه کرده اند که دارای دو مزیت عمده نسبت به کتابخانه ی USB Add On می باشد. مزیت اول رایگان بودن کتابخانه است و مزیت دوم اینست که می توان از آن برای هر میکروکنترلری که دارای 4 کیلو بایت حافظه ی Flash باشد استفاده کرد. بنابراین شما می توانید با استفاده از این کتابخانه و یک میکروکنترلر ATMega8 برنامه هایی مبتنی بر پورت USB بنویسید. این کتابخانه سخت افزار را به عنوان یک HID یا Human Interface Device به کامپیوتر معرفی می کند. بنابراین سخت افزار بصورت اتوماتیک توسط کامپیوتر شناخته می شود و نیازی به درایور برای معرفی آن نیست.


بخش هایی از آموزش برنامه ی کامپیوتر :

در زبان های برنامه نویسی مختلف ، توابع و کلاس های متفاوتی برای کار با پورت USB وجود دارند که بکارگیری آنها برای همگان کار ساده ای نیست و با پیچیدگی و دشواری های خاصی همراه است. لذا جناب آقای Amr Bekhit اقدام به تهیه ی یک کتابخانه و فایل DLL در سمت کامپیوتر و برای زبان های ویژوال بیسیک ، Visual Basic.NET و C# نموده اند که به برنامه نویسان اجازه می دهد به سادگی با پورت USB ارتباط برقرار کنند. نام این کتابخانه mcHIDInetrface می باشد و به همراه یک فایل DLL به نام mcHID مورد استفاده قرار می گیرد.

در این آموزش که برای زبان محبوب Visual Basic.NET تهیه شده است به روش های ایجاد یک پروژه با استفاده از این کتابخانه پرداخته ام و برای درک هرچه بهتر مطالب از چهار مثال عملی استفاده کرده ام که هرکدام دارای مثالی مشابه در فایل آموزش برنامه ی AVR می باشند. بدین معنی که مثال یک در این آموزش دقیقا همان مثال یک در فایل آموزش برنامه ی AVR است با این تفاوت که در اینجا به بررسی برنامه نویسی سمت کامپیوتر این مثال می پردازیم و در فایل آموزش برنامه ی AVR به بررسی برنامه ی میکروکنترلر آن.


بخش هایی از آموزش سخت افزار :

در حالت کلی دستگاه هایی که به پورت USB متصل می شوند از نظر سرعت برقراری ارتباط به چهار نوع تقسیم بندی می شوند که عبارتند از :

1. دستگاه های سرعت پائین یا Low Speed با نرخ سرعت 1.5 Mbit/s در نسخه ی USB 1.0 که در ژانویه 1996 بطور رسمی معرفی شد.

2. دستگاه های سرعت بالا یا Full Speed با نرخ سرعت 12 Mbit/s که به همراه سرعت 1.5Mbit/s در ژانویه 1996 در نسخه ی USB 1.0 معرفی گردید. اما استفاده ی گسترده از پورت USB در سپتامبر سال 1998 و از نسخه ی USB 1.1 به بعد بود.

3. دستگاه های سرعت ماکزیمم یا High Speed با نرخ سرعت 480 Mbit/s یا 60 MB/s که در آوریل سال 2000 و در نسخه ی USB 2.0 عرضه شد.

4. دستگاه های ابر سرعت یا Super Speed با نرخ سرعت 5 Gbit/s یا 625 MB/s که در نوامبر سال 2008 و در نسخه ی USB 3.0 عرضه گردید که سرعت آن بیش از 10 برابر سرعت نسخه ی USB 2.0 است.

توجه :نوع انتقال داده در همه ی نسخه های USB از نوع سریال می باشد اما نسخه ها ی USB 2.0 و قبل از آن ، دارای ارتباط نیمه دو طرفه می باشند در حالیکه در نسخه ی USB 3.0 این ارتباط کاملا دو طرفه است که یکی از دلایل افزایش سرعت آن نیز همین مورد می باشد.

KHM
12-07-2012, 18:28
دادا دمت گرم..خسته نباشی...خیلی خیلی تشکر

sadmonew
12-07-2012, 21:33
سلام مهندس رحيمي عزيز:hi:
دستتون درد نكنه.
جاي همچين آموزشي خالي بود. :0013:
ممنون از زحمتي كه كشيدين.:wink:
خودم خيلي كم از بسكام استفاده ميكنم و بيشتر با WINAVR كار ميكنم.

sarutobi
18-07-2012, 20:46
سلام
من خیلی دنبال یه همچین چیزی برای بسکام میگشتم
یه تنکس خشک وخالی کافی نبود
واقعا دستت درد نکنه

morteza_rk
18-07-2012, 21:15
اتفاقا منم خیلی دنبالش بودم ، خیلی هم اتفاقی توی سایت mcselec پیداش کردم. انقدر برام مهم بود که پروژه ای رو که در حال انجامش بودم کلا ول کردم و رفتم دنبال این کتابخونه و نوشتن آموزش استفاده از اون.

چنتا آموزش دیگه هم می خوام بذارم در زمینه ی Bootloader و MMC و ترکیب این دوتا ، ولی وقت نمیشه متاسفانه. انشالله سرم که یکم خلوت بشه روی بوت لودر با پورت USB هم کار می کنم و آموزش اونم میذارم.

nadaliniareza
25-07-2012, 16:12
دمت گرم

vahidasm
25-07-2012, 21:21
تشکر فراوان آقا مرتضی

majid.ebru
27-07-2012, 23:34
سلام و وقت بخیر
ببخشید من زیاد پروتوس کار نکردم و یه مشکل دارم:
منبع تغذیه مدار کجاست؟
مدار میکرو چه جوری تغذیه میشه؟با 3.3 ولت:cry::(cry::ii998)
من کلن مبهوت شدم
چون از usb 5 ولت میگیریم و به میکرو میدم ؟؟؟؟:brk:
لطفن راهنمای کنید
ممنون

vahidasm
28-07-2012, 07:35
سلام و وقت بخیر
ببخشید من زیاد پروتوس کار نکردم و یه مشکل دارم:
منبع تغذیه مدار کجاست؟
مدار میکرو چه جوری تغذیه میشه؟با 3.3 ولت:cry::(cry::ii998)
من کلن مبهوت شدم
چون از usb 5 ولت میگیریم و به میکرو میدم ؟؟؟؟:brk:
لطفن راهنمای کنید
ممنون

با سلام دوست عزیز
ورودتون به انجمن رو به نوبه خودم خیر مقدم عرض میکنم
قبل از هر چیز باید بگم که جای پرسیدن این سوال اینجا نبود
در مورد تغذیه باید بگم که تو پروتیوس احتیاجی نیست که تغذیه وصل بکنید و به این دلیل پایه تغذیه رو شما توی پروتیوس پیدا نمیکنید که خودش به صورت اتوماتیک وصل میشه
من نمیدونم که شما از چه میکرو کنترلری استفاده میکنید که بهتون بگم که دقیقا پایه تغذیه کدوم پایه ها میشه ولی شما میتونی از اینجا (You can see links before reply) قطعه مورد نظرتو سرچ کنی و دیتا شیتشو دانلود کنی و از روی اون بفهمی که پایه های تغذیه به کدوم پایه ها وصل میشن
مثلا میکرو mega32 پایه 10 میشه vcc و پایه 11 میشه gnd
موفق باشید

morteza_rk
28-07-2012, 16:24
منبع تغذیه مدار کجاست؟
مدار میکرو چه جوری تغذیه میشه؟با 3.3 ولت
من کلن مبهوت شدم
چون از usb 5 ولت میگیریم و به میکرو میدم ؟؟؟

سلام ، به انجمن ما خوش اومدی.

فکر می کنم که توی آموزش ها ، قسمت سخت افزار رو نخوندی! اونجا دقیقا توضیح دادم که چی به چیه؟! اونم به چندین روش.

vahidasm
02-08-2012, 22:23
اگه بخواهیم درباره برنامه های این آموزش سوال کنیم همینجا باید مطرح بشه؟
lov:

سلام
بله همینجا مطرح کنید
مثل من که الان یه سوال برام پیش اومده :mrgreen:
آقا مرتضی این پروژه و همچنین نرم افزارش برای ویندوز 64 بیتی جواب میده؟؟
آخه یه جا دیگه ازتون پرسیدم گفته بودین که درایور تعریف کردن توی ویندوزهای 64 بیتی یه سری مشکلات ایجاد میکنه و...
بازم ممنونم

mehdi29665
02-08-2012, 22:37
سلام آقا وحید.
من الان دارم روی همین پروژه کار میکنم.
ویندوزم 7 ولی 32 بیتی
یک دونه USBASP پروگرمر درست کرده بودم روی ایکس پی خوب کار میکرد ولی 7 نشناختش
با کلی وبگردی تونستم نسخه جدید فریمورش رو پیداکنم.
.
سوال من اینه که چند تا دستور رو داخل بدنه اصلی برنامه قرار دادند و دائما اجرا میشن
امکانش هست که مثلا بذاریم با یک وقفه کارشونو شروع کنند
مثل این


Resetcounter = 0


'Check for reset here

While _usb_pin._usb_dminus = 0

Incr Resetcounter

If Resetcounter = 1000 Then

Call Usb_reset()

End If

Wend

چون ممکنه مثلا برای تابلو روان یا مشابه این برنامه بنویسیم و این 1000 شماره وقفه ای توی برنامه ایجاد کنه

morteza_rk
03-08-2012, 01:24
آقا مرتضی این پروژه و همچنین نرم افزارش برای ویندوز 64 بیتی جواب میده؟؟

راستش من با ویندوز 64 بیتی تست نکردم. ولی از اونجائیکه این کتابخونه سخت افزار رو یک دستگاه HID تعریف می کنه بنابراین نیازی به درایور نداره! وقتی هم که به درایور نیازی نباشه یعنی نباید مشکلی پیش بیاد.


سوال من اینه که چند تا دستور رو داخل بدنه اصلی برنامه قرار دادند و دائما اجرا میشن
امکانش هست که مثلا بذاریم با یک وقفه کارشونو شروع کنند

فکر نمی کنم که بشه مهندس! اگه اینکارو بکنید دستگاه دیرتر توسط کامپیوتر شناخته میشه یا اینکه اصلا کار نمی کنه. توابعی مثل این همیشه باید بطور ثابت و دست نخورده باقی بمونن. بازم برای اطمینان خاطر بیشتر به آدرس زیر که تاپیکی راجع به این کتابخونه در سایت mcselec.com هست مراجعه کنید و اونجا سوالتونو مطرح کنید.


Forum - MCS Electronics (You can see links before reply)

mehdi29665
03-08-2012, 23:23
جناب آقای رحیمی برنامه های سمت کامپیوتر حتما باید با vb.net باشه؟
امکانش هست با vb هم براش برنامه نوشت. اگه ممکنه فقط برنامه ارسال و دریافت رو با vb برام تیدیل کنید ممنون میشم.
با تشکر

morteza_rk
04-08-2012, 00:22
جناب آقای رحیمی برنامه های سمت کامپیوتر حتما باید با vb.net باشه؟
امکانش هست با vb هم براش برنامه نوشت. اگه ممکنه فقط برنامه ارسال و دریافت رو با vb برام تیدیل کنید ممنون میشم.
با تشکر

برنامه می تونه با زبان های سی شارپ و vb هم باشه. فایل های لازم برای این زبان ها هم توی پوشه ی پیوست ها هست. اگر کسی باشه که به زبان های دیگه تسلط داشته باشه می تونه این فایل های کتابخونه رو برای زبان های دیگه هم تبدیل کنه.

من شرمنده ام. اصلا وقت ندارم که vb.net رو به vb تبدیل کنم. (البته خیلی ساده هست ، تقریبا شبیه هم هستن) ، حتی الان یه ماه و خورده ای میشه که کمتر به سایت سر میزنم. خیلی درگیرم.

mehdi29665
04-08-2012, 15:44
آقای رحیمی باز هم تشکر میکنم
یک برنامه به زبان وی بی پیدا کردم که با کمی دستکاری جواب میگیرم.
:hi:

mehdi29665
05-08-2012, 06:47
بالاخره راه افتاد
این پروژه رو به این شکل بستم که آی سی یو اس بی (مگا8)با دستور input یک بایت رو از ورودی rx میکرو میگره و به کامپیوتر ارسال میکنه و در کامپیوتر نیز نمایش داده میشه
از طرف دیگه یک میکرو دیگه(مگا32) یکسری اعداد رو پشت سر هم توسط دستور printbin به مگا 8 ارسال میکنه
منتها یک مشکلی این وسط هست و اونم اینه که سرعت ارسال بایتهای پشت سر هم توسط مگا 32 رو باید با دستور waitms 33 کم کرد والا بعضی بایتها جا میمانند.
با آزمایش من حداکثر تعداد بایت در ثانیه رو به 30 بایت میشه رسوند و بیشتر از اون برابر است با cry::

آیا میتونید منو راهنمایی کنید چطور میشه سرعت رو بالا برد؟
البته فکر کنم مشکل توی برنامه مگا 8 باید باشد اون دستورات داخل بدنه اصلی برنامه؟

morteza_rk
05-08-2012, 14:44
مشکل از این جاست که در سرعت های بالا باید برای ارتباط سریال بافر تعریف کنید وگرنه اطلاعات از دست میرن.

اما اگه بافر وجود داشته باشه این مشکل پیش نمیاد ، چون اطلاعات ورودی یه جا نگه داشته میشن تا نوبتشون برسه و خونده بشن.

mehdi29665
05-08-2012, 17:57
من توی برنامه مگا 8 داخل برنامه اصلی یک متغیر از نوع بایت رو دائما یک شماره اضافه میکردم و به کامپیوتر میفرستم و اونجا از 0 تا 255 شماره رو کامل میگرفت و با یک محاسبه متوجه شدم حلقه بین do..loop برنامه مگا8 دقیقا 32 میلی ثانیه طول میکشه تا از اول اجرا بشه و مشکل پائئین بودن سرعت مگا 8 میباشد


Do

Resetcounter = 0

'Check for reset here

While _usb_pin._usb_dminus = 0
Incr Resetcounter
If Resetcounter = 1000 Then
Call Usb_reset()
End If
Wend

Check for received data

If _usb_status._usb_rxc = 1 Then
If _usb_status._usb_setup = 1 Then
'Process a setup packet/Control message
Call Usb_processsetup(_usb_tx_status)
Elseif _usb_status._usb_endp1 = 1 Then
' Input data endpoints
End If
'Reset the RXC bit and set the RTR bit (ready to receive a new packet)
_usb_status._usb_rtr = 1
_usb_status._usb_rxc = 0
End If


If Device_configured = 1 Then
If _usb_tx_status2._usb_txc = 1 Then

در این قسمت یک بایت ارسال میشود

_usb_tx_buffer2(2) = Key

Call Usb_send(_usb_tx_status2 , 1) ' Send data (1 bytes) to PC

Incr Key

end If
End If

Loop


البته این سرعت فکر کنم برای موس و کیبورد مناسب باشه
ولی برای ساخت یک اسکوپ خیلی کمه

mehdi29665
05-08-2012, 18:25
آخرین کاری که میشه انجام داد اینه


If Device_configured = 1 Then



For Key = 0 To 50

If _usb_tx_status2._usb_txc = 1 Then


_usb_tx_buffer2(2) = Key


Call Usb_send(_usb_tx_status2 , 1) ' Send data (1 bytes) to PC



End If

Waitms 32

Next Key

End If



یعنی بجای اینکه داخل حلقه do..loop بچرخه فقط در قسمت ارسال ، حلقه درست کردم ودائما عدد فوق رو ارسال کردم و دیدم بدون waitms 32 اعداد ناقص بسمت کامپیوتر ارسال میشن

آقا کسی نیست راهنمایی کنه؟:unh::cry::brk:

morteza_rk
06-08-2012, 00:09
مهندس شما چرا همیشه Device_configured رو تست می کنید؟ این فقط در اولین لحظه ی اتصال دستگاه به پورت باید چک بشه ، اونم در برنامه هایی که سرعت مهمه.

تا وقتیکه شما دستگاه رو از پورت جدا نکردین Device_configured صفر نمیشه که!

ضمن اینکه شما از کجا می دونی که مشکل از برنامه ی سمت کامپیوتر نیست؟ ضمنا از کریستال 15 مگاهرتز استفاده کنید و نتیجه رو ببنید.

mehdi29665
06-08-2012, 01:14
مهندس شما چرا همیشه Device_configured رو تست می کنید؟ این فقط در اولین لحظه ی اتصال دستگاه به پورت باید چک بشه ، اونم در برنامه هایی که سرعت مهمه.
.

خب توی توضیحاتتون نوشته بودید که در دستورات تاخیری ابتدا بایدDevice_configured چک بشه سپس ارسال صورت بگیره در ضمن اون قبل از شروع حلقه گذاشته و نمیتونه تاثیری روی سرعت ارسال بذاره و من هم چون هر دفعه که برنامه رو تغییر میدم و پروگرم میکنم میبایست یو اس بی رو جدا کرده و بعد از پروگرم کردن دوباره وصل کنم.
از راهنماییتون هم ممنونم .
از کریستال 15 هم استفاده میکنم حتما ولی با در نظر گرفتن سرعت فعلی که 240 بیت بر ثانیه است فوقش میشه 320 بیت بر ثانیه که اصلا مورد قبول نیست. شما فرض کنید باقی بیتهای ارسالی که برای کنترل و .... ارسال میشه هم 3 برابر این باشه نهایتا سرعت میشه 1 کیلو بیت و در مقابل سرعت سریال که تا 115 کیلو بیت میرسه باز هم هیچه.
خداییش من چون سیستمم پورت سریال نداره و از طرفی برای بردهایی که میسازم نیاز به این ارتباط و سرعتش دارم میخام با پورت یو اس بی بی دردسری کار کنم و از نظر برنامه و سخت افزار واقعا عالیه و باز هم ازتون ممنونم فقط من مشکل سرعت دارم و اگر فکر میکنید آی سی ft232 کارایی بهتری داره برم سراغش.
در ضمن برنامه سمت کامپیوتر رو هم حتما بررسی میکنم.و ممنون :hi: :gop:

mehdi29665
06-08-2012, 02:14
من روی برنامه داخل کامپیوتر کار کردم و با استفاده از تایمر متوجه شدم سرعت کامپیوتره که بین هر بایت بایست حداقل 32 میلی ثانیه فاصله داشته باشه تا بتونه بایتهای پشت سرهم رو کامل بگیره
حالا میرم سراغ افزایش تعداد بایت در هر ارسال یعنی بجای ارسال و دریافت یکی یکی از حداکثر تعداد که 8 بایت میباشد استفاده کنم ببینم چی جواب میده.
:0013:

esisafa
06-08-2012, 02:25
اگه از V-USB که به زبان c هست استفاده کنین تا سرعت های 10 یا 20 کیلو بایت افزایش پیدا میکنه و نمونه عملی اون پروگرامر usbasp هست و میتونین سرعتش رو ملاحظه کنید. البته این پروگرمر فقط برای ارسال و دریافت اطلاعات نیست و پردازش پروگرامر هم انجام میده و سرعت حتما کمتر خواهد شد

mehdi29665
06-08-2012, 04:01
من ارسال بایتها از سمت مگا8 رو به 7 بایت رسوندم و اون تاخیر بین ارسالهارو برداشتم و جالب اینکه برنامه سمت کامپیوتر کل اطلاعات رو میگیره ولی بین هر بار خوندن کامل اون 7 بایت ، تاخیر 32 میلی ثانیه ای رو داره
خلاصه اینکه با ارسال 7 بایت به جای 1 بایت سرعت کلی اطلاعت از 240 بیت به 1744 بیت رسیده البته در ارسال 255 بایت پشت سر هم.
:018:

mehdi29665
06-08-2012, 04:06
اگه از V-USB که به زبان c هست استفاده کنین

سلام آقای صفا منش :hi:
ممنون از راهنماییتون ، من سی زیاد کار نکردم و چون میخام برنامه رو دستکاری کنم نمیتونم برم طرفش.
آیا با بیسیک هم میشه برنامه شو پیدا کرد.
البته منم جستجو میکنم :mrgreen:

mehdi29665
06-08-2012, 05:30
خب خدمتتون بگم مثل اینکه من تنهایی باید سوال کنم و جواب بدم....:baad:
با تحقیقاتی که انجام دادم متوچه شدم به این طرق و روشها که ما میخاهیم استفاده کنیم حداکثر سرعت 200 کیلوبیت در ثانیه میباشد که از این مقدار فقط 1700 بیت میتواند اطلاعات ما رو رد و بدل کنه بقیش مال خود ارتباطات یو اس بی میباشد.
خب البته کل این سرعتها هم فکر کنم ارتباط مستقیم به کریستال میکرو داره که از 16 بیشتر نمیتونیم بذاریم و خلاص....!

خب حالا کار اصلی من ببینم کسی میتونه یک راهنمایی جانانه بکنه و منو از اینهمه سوال پیچ کردن بچه ها خلاص کنه.:0013:
من میخام تقریبا یک اسکوپ درست کنم (البته در کامپیوتر) که تمام مدارها و دستگاه هایی که میسازم یا میخام از کارشون سر در بیارم وصل کنم به کامپیوتر تا هم بشه کارهایی که انجام میدن رو تماشا کرد و هم ذخیره کرد و ... !؟ ( آخیش ) :( همش همین
مرا یاری رسانید... ممنون
البته ناگفته نماند آموزش آقای رحیمی هم خوب بود و من ساختمش .

morteza_rk
06-08-2012, 14:44
مهدی جان من خودم اصلا سرعت این ارتباط رو چک نکردم. فقط هم موقع آموزش از این پروژه استفاده کردم. اصلا وقت نکردم که برم دنبال جزئیاتش. اما مسئله ای که هست اینه که آقای ollopa هم گفتن که این نسخه نهائی نیست و هنوز کار داره تا تکمیل بشه. توی فایل ها هم یه قسمت هایی سبز رنگه که یعنی فعلا ازشون استفاده نشده.

کلا سرعت دستگاههای Low Speed در نهایت 1.5 مگابیت بر ثانیه هست که بر حسب بایت میشه 187500 بایت بر ثانیه! این دیگه ایده آل Low Speed هست. نمی دونم این سرعت بکارتون میاد یا نه؟

من خودم سری Ft رو تست نکردم. ولی یه مبدل سریال با آی.سی PL2303 دارم که نهایت سرعتش 128000 بایت بر ثانیه هست.

مهندس esisafa اگه بتونی یه فایل PDF از آموزش کامل تاپیکت راجع به ارتباط USB و زبان سی بذاری اونم با مثال های کامل می تونه راه گشای خیلی ها باشه. نمی دونم وقت داری یا نه؟ فقط یه پیشنهاد بود.

esisafa
06-08-2012, 16:46
مهندس esisafa اگه بتونی یه فایل PDF از آموزش کامل تاپیکت راجع به ارتباط USB و زبان سی بذاری اونم با مثال های کامل می تونه راه گشای خیلی ها باشه. نمی دونم وقت داری یا نه؟ فقط یه پیشنهاد بود.

اگه تاپیک من رو که لینکش همین پایین هست و داخل اون هم در اولش یک لینک دادم به پروژه behnam6500 ، با هم مطالعه کنید. اکثر مطالب گفته شده.
استفاده از کلاس libusb.net و همچنین آموزش v-usb . اگه سوالم داشتین میتونین بپرسین تا ببینیم کجا کم توضیح داده شده

esisafa
06-08-2012, 16:51
در ضمن اگه مشکل از تاخیری هست که خود سیستم عامل ایجاد میکنه که شما گفتین 32 میلی ثانیه، پیشنهاد میکنم که برنامه رو مجبور کنید تا سریعتر بگیره داده رو. دو تا راه هست. 1 اینکه بتونین اولویت برنامه رو در اجرا بالا ببرین و من در این مورد روشش چیزی نمیدونم. 2 اینکه در برنامه ویندوز میشه از تایمر استفاده کرد که حداقل زمان 1 میلی ثانیه رو فراهم میکنه. حالا در تابع تایمر میتونین هر 1 میلی ثانیه داده پورت رو بخونین و دیگه 32 میلی ثانیه یا حتی شاید بیشتر منتظر نمونین یا به جای تایمر خیلی بهتره که از رویدادها استفاده کنید. یه چیزی معادل همون اینتراپت خودمون میشه در میکرو. به محض رسیدن داده به کامپیوتر تابع اجرا بشه و اونو بخونه.
من حدس میزنم که شما به طور معمولی دارین داده رو میخونین و این مشکل ایجاد کرده. آخه ویندوز یک مدیریتی بین پردازشها انجام میده

M_GH
06-08-2012, 17:31
1 اینکه بتونین اولویت برنامه رو در اجرا بالا ببرین و من در این مورد روشش چیزی نمیدونم. 2

باید تو task manager رو برنامه مرد نظر راست کلیک کنین و go to process رو بزنین بعدش رو process مورد نظر راست کلیک کنین و از بخش Set Priority بنا به اولویت مورد نیازتون تغییرش بدین

البته باید بگم که اگه مواضب نباشین ممکنه cpu بسوزونین! (گمونم احتمالش باشه :mrgreen:)
یعنی وقتی سر کامپیوترتون خلوته اولویت چند تا برنامه رو بالا ببرین

مثلا وقتی می خواین یه برنامه ای که دیر نصب میشه رو زودتر نصب کنین اول همه برنامه هارو ببندین و بعدش اولویت برنامه نصب رو تا ته ببرین بالا بعدشم دیگه به کامپیوترتون دست نزنین تا نصبش تموم بشه

(من امتحان کردم جواب داد)
موفق باشین:wink:

mehdi29665
06-08-2012, 17:42
کلا سرعت دستگاههای Low Speed در نهایت 1.5 مگابیت بر ثانیه هست که بر حسب بایت میشه 187500 بایت بر ثانیه! این دیگه ایده آل Low Speed هست.
.

درسته همونطور که خودمم کل این جریان مبادله اطلاعات در سیستم usb رو مطالعه کردم حداکثر سرعت همینه و بیشترین داده ها صرف آدرس دهی دستگاه و شناسایی و ack و ... میشه برای همین توی ارسال تعداد بایت بیشتر در هر ارسال بهتر عمل میکنه
احتمالا مجبورم همونی رو که پیشنهاد کردید رو بسازم. ممنون:mrgreen:

morteza_rk
06-08-2012, 20:09
یه چیزی معادل همون اینتراپت خودمون میشه در میکرو. به محض رسیدن داده به کامپیوتر تابع اجرا بشه و اونو بخونه.
من حدس میزنم که شما به طور معمولی دارین داده رو میخونین و این مشکل ایجاد کرده. آخه ویندوز یک مدیریتی بین پردازشها انجام میده
کتابخونه های سمت کامپیوتر خودشون به این شکل عمل می کنن یعنی ما در دریافت چنتا رویداد داریم. این کتابخونه ، کتابخونه ی اصلی کامپایلر بسکام نیست. بلکه کتابخونه ای هست که توسط کاربران گسترش داده شده. مال خود بسکام پولیه و 100% از این بهتره.

esisafa
06-08-2012, 20:24
میگم هستین هممون رو هم پول بزاریم این کتاب خونه رو به نام یکی بخریم بعد تو ایران میکرو پخش کنیم؟:0013:
احتمالا هر کتابخونه با یک لایسنس خاص که با یک کامپایلر کار کنه نیست؟؟؟؟؟؟؟

morteza_rk
07-08-2012, 01:11
نمی دونم این کتابخونه چجوریه؟ ولی نمایندگی رسمی بسکام توی ایران شرکت یزدکیت هست!

البته یه مشکلی که کتابخونه ی خود بسکام داره اینه که در حال حاظر فقط سری ATUSB رو پشتیبانی می کنه و براساس v-USB نیست. البته قراره در آینده بقیه میکروهارو هم ساپورت کنه.

mehdi29665
08-08-2012, 01:13
آره باید رو حالت realtime قرار بدین. 7 که داره اکسپی نمیدونم

سلام به همه دوستان و اساتید.
از راهنمایی همتون ممنونم
فکر کنم من توی ور رفتن آخرش باشم!
اونقدر با برنامه ها بازی کردم تا آخرش فهمیدم که برنامه توی کامپیوتر مشکل نداره و مشکل توی سرعت ارسال میکرو میباشد و همونطور که قبلا گفتم بخاطر اینکه کنار ارسال اطلاعات من از میکرو یکسری اطلاعات دیگه هم ارسال میشه عین این میمونه که ماشین حمل شیر برای دادن یک جعبه شیر بایست 10 جعبه سایر لبنیات رو خالی کنه تا یک جعبه شیر به شما بده.:mrgreen:
همین

mahdiele1224
19-08-2012, 18:32
سلام آقا مرتضی خسته نباشید من با این برنامه به مشکل خوردم آموزش را کامل خوندم و بند به بند اجرا کردم ولی برنامه کامپایل نمیشه و خطای زیر را میده
source variable does not match the target vaiable
_usb_crc = Crc16uni(txstate(3) , Count , &HFFFF , &H8005 , 1 , 1) این خط از برنامه در زیر برنامه USB-Functions مشکل از کجاس بازم ممنون از زحمتی که کشیدین
اگر امکان داره نتیجه را به میل بنده
mahdiele1224@gmail.com
یا یک شماره همراه بدین تا تماس بگیرم

mehdi29665
20-08-2012, 00:29
من این پروژه رو استفاده کردم و همه چیزش میزونه میزونه. فقط مقدار بایت ارسالی و دریافتی رو باید در فایلهایی که آقای رحیمی تو آموزششون توضیح دادند رو حتما مثل هم قرار بدی . ....همین....

hossein68y
28-08-2012, 18:29
سلام.خسته نباشید.خیلی ممنون از آموزش کامل و مفیدتون.فکر کنم خیلی ها دنبال یه همچین آموزشی واسه ارتباط مستقیم با پورت یو اس بی بدون استفاده از مبدل های یو اس بی به سریال می گشتن.واقعا دستستون درد نکنه آقا مرتضی.
مدار1 رو بستم و جواب گرفتم :)

یا علی

salix
29-08-2012, 19:38
با سلام به همگی و تشکر فراوان از آقای رحیمی
من دوتا از فایلهای hex کد آقای رحیمی رو رو atmega8 پروگرام کردم و هیچ تغییری در اونا ندادم، اما نمیدونم چرا ویندوز نمیتونه شناساییش کنه و پیغام usb device not recognized میده
سخت افزارم هم کاملا مثل شماتیکا بستم
بی زحمت عکس زیر رو یه نگا بندازین ببینن فیوزبیتها رو درست تنظیم کردم
verify eeprom لازم داره؟
ممنون

morteza_rk
29-08-2012, 20:39
تنظیم فیوزبیت ها اشتباهه مهندس.

همه ی ckselهارو بذار روی یک.

hossein68y
30-08-2012, 18:34
سلام دوستان.اگه میشه یه راهنمایی کنید.
برنامه ای که آقا مرتضی زحمت کشیدن اینجا گذشتن که جا داره بازم ازشون تشکر کنم،اونجوری که من دیدم و تست کردم فقط میتونه داده از نوع byte ارسال یا دریافت کنه و قابلیت ارسال کاراکتر نداره مگه اینکه کاراکتر رو تو میکرو به کد تبدیل کنیم و تو برنامه کامپیوتر دوباره کدی که از میکرو به کامپیوتر ارسال میشه را به کاراکتر برگردونیم.
تا اینجا مشکلی نبود... حالا اگه بخوایم مثلا یه رشته کاراکتر مثل salam را از میکرو به کامپیوتر ارسال کنیم باید چطوری این کار رو انجام بدیم؟!

من یه کد نوشتم واسه ارسال از میکرو ولی جواب نداد :(


[LEFT]


Dim Ch As String * 10
Dim A As String * 10
Dim Count As Byte
Dim Lenn As Byte

A = "salam"
.
.
.
.
If Pinc.5 = 1 Then

While Count < Lenn
Ch = Mid(a , Count , 1)


'Queue data to be sent on endpoint 2 (HID report)
If _usb_tx_status2._usb_txc = 1 Then

_usb_tx_buffer2(2) = Asc(ch) 'Put our Byte in the TX buffer
Call Usb_send(_usb_tx_status2 , 1) 'Send data to PC

End If

Count = 1 + Count
Wend

End If



اگه میشه کمک کنید

salix
30-08-2012, 22:00
سلام، یه مشکل عجیب !!!
بالاخره من هم جواب گرفتم اما بعد از اینکه ویندوزو ریست کردم دوباره همون پیغام usb device not recognized رو میده
ممکنه این مشکلات مال این باشه که مدارم رو روی بردبورد بستم
همه جاش هم چک کردم اتصالاتش درسته
لطفا کمک کنید

mehdi29665
03-09-2012, 01:16
سلام، یه مشکل عجیب !!!
بالاخره من هم جواب گرفتم اما بعد از اینکه ویندوزو ریست کردم دوباره همون پیغام usb device not recognized رو میده
ممکنه این مشکلات مال این باشه که مدارم رو روی بردبورد بستم
همه جاش هم چک کردم اتصالاتش درسته
لطفا کمک کنید
سلام.
منم هم روی برد بورد بستم و هم مدارشو ساختم و گاهی اوقات همون پیغامو میده که وقتی یو اس بی رو قطع و وصل میکنم درست میشه البته وقتی سیم یو اس بی رو عوض کردم خیلی بهتر شده. امتجان کن.
ولی اگه دائم این پیفامو میده برنامه رو چک کن.:0013:

mehdi29665
03-09-2012, 01:30
سلام دوستان.اگه میشه یه راهنمایی کنید.

While Count < Lenn
Ch = Mid(a , Count , 1)


'Queue data to be sent on endpoint 2 (HID report)
If _usb_tx_status2._usb_txc = 1 Then

_usb_tx_buffer2(2) = Asc(ch) 'Put our Byte in the TX buffer
Call Usb_send(_usb_tx_status2 , 1) 'Send data to PC

End If

Count = 1 + Count
Wend

End If
[/CODE]


اگه میشه کمک کنید
سلام
ببین برنامه رو به این شکل تغییر بده.

If _usb_tx_status2._usb_txc = 1 and pinc.5=1 Then
While Count < Lenn


Ch = Mid(a , Count , 1)
_usb_tx_buffer2(2) = Asc(ch) 'Put our Byte in the TX buffer

Call Usb_send(_usb_tx_status2 , 1) 'Send data to PC


Count = 1 + Count
Wend
End If

من با یک حلقه 100 تایی انجام دادم و جواب گرفتم.
راستی اون pinc.5 چیه

hossein68y
03-09-2012, 11:30
سلام
ببین برنامه رو به این شکل تغییر بده.

If _usb_tx_status2._usb_txc = 1 and pinc.5=1 Then
While Count < Lenn


Ch = Mid(a , Count , 1)
_usb_tx_buffer2(2) = Asc(ch) 'Put our Byte in the TX buffer

Call Usb_send(_usb_tx_status2 , 1) 'Send data to PC


Count = 1 + Count
Wend
End If

من با یک حلقه 100 تایی انجام دادم و جواب گرفتم.
راستی اون pinc.5 چیه


سلام.ممنون از راهنماییتون.حتما انجام می دم ببینم چه نتیجه ای می گیرم.
pinc.5 که تو برنامه send number آقا مرتضی بود دیگه. تو اون برنامه اگه pinc.5 رو 1 کنیم میکرو عدد را به کامپیوتر ارسال می کنه...

hossein68y
03-09-2012, 12:25
سلام
ببین برنامه رو به این شکل تغییر بده.

if _usb_tx_status2._usb_txc = 1 and pinc.5=1 then
while count < lenn


ch = mid(a , count , 1)
_usb_tx_buffer2(2) = asc(ch) 'put our byte in the tx buffer

call usb_send(_usb_tx_status2 , 1) 'send data to pc


count = 1 + count
wend
end if

من با یک حلقه 100 تایی انجام دادم و جواب گرفتم.
راستی اون pinc.5 چیه


سلام.من این تغییری که گفتید اعمال کردم ولی نتیجه نگرفتم :( دوست عزیز اگه میشه سورس کد برنامه میکرو و کامپیوتر را اینجا آپلود کنید.

من هم تغییر کوچیکی که تو برنامه send number آقا مرتضی انجام دادیم که بتونیم یک رشته کاراکتر یا کلمه ارسال کنیم رو اینجا آپلود می کنم یه نگاه بندازی...

salix
16-09-2012, 14:38
سلام به همگی
من می خوام یه همچین ارتباطی با usb رو با نرم افزار labview ایجاد کنم، یعنی ارسال و دریافت داده
کسی میتونه راهنماییم کنه که چطور این سخت افزار آقای رحیمی رو به labview بشناسونم و داده رد و بدل کنم.

ممنون

esmaeil57
08-10-2012, 15:11
با سلام به جناب آقای رحیمی
تشکر میکنم بابت آموزش اتصال avr به پورت usb ولی من که کلا از این مقاله ناامید شدم چون مدار تست led رو کاملا درست بستم و پروگرام هم کردم ولی توسط ویندوز شناسایی نمیشه و کار نمیکنه !!! اگه مشکلم رو حل کنید ممنون میشم. در ضمن ویندوز من سون هست و کامپایلر بسکام ورژن 2.0.7.3

M_GH
08-10-2012, 16:19
با سلام به جناب آقای رحیمی
تشکر میکنم بابت آموزش اتصال avr به پورت usb ولی من که کلا از این مقاله ناامید شدم چون مدار تست led رو کاملا درست بستم و پروگرام هم کردم ولی توسط ویندوز شناسایی نمیشه و کار نمیکنه !!! اگه مشکلم رو حل کنید ممنون میشم. در ضمن ویندوز من سون هست و کامپایلر بسکام ورژن 2.0.7.3

اگر با لپ تاپ و ویندوز 7 64 بیت هستین طبیعیه یکم اذیت کنه
شما مکان اتصال به یو اس بی رو این شکلی بستین ؟ (منظورم دیود های زنرش هست {اینو از مدار دیگه برداشتم})
You can see links before reply
You can see links before reply

برای لپ تاپ باید این شکلی باشه وگرنه این ارور رو میده
You can see links before reply
You can see links before reply

mehdi29665
08-10-2012, 23:38
با تشکر فراوان از آقای رحیمی عزیز.
در اتصال این سخت افزار به سیستم به نظر من نوع سیم خیلی مهمه
چون من با یک سیم 20 سانتی که از نظر طولی مناسب بود نتونستم جواب بگیرم ولی موقعی که از سیم پرینترم که به حساب کیفیتش مرغوبتر بوددر عوض طولش یک و نیم متر بوذ استفاده کردم بدون مشکل ارتباط برقرار شد.
الانم 2 تا برد درست کردم و خیلی راحت دارم استفاده میکنم.
در ضمن ناگفته نماند از لپ تاپ و ویندوز سون دارم استفاده میکنم که اوایل اذیت میکرد ولی الان مشکلی ندارم.

morteza_rk
09-10-2012, 01:57
تشکر میکنم بابت آموزش اتصال avr به پورت usb ولی من که کلا از این مقاله ناامید شدم
نا امید نشو مهندس جان ، حتما یه جای کارت می لنگه. من هر 4 تا مثال رو روی بردبرد بستم و جواب گرفتم. دوستان دیگه هم که جواب گرفتن ، پس مشکل از یه جای کار شماست.

esmaeil57
09-10-2012, 15:56
سلام مهندس جان
من اون مداری که با آی سی 3.3 ولت هستش رو بستم اگه اشکال داره با دیود هم امتحان میکنم ولی چون دیود با این ولتاژ رو نداشتم و توی مقاله هم گفته بود آی سی اولویت داره واسه همین این مدار رو استفاده کردم

morteza_rk
09-10-2012, 21:44
باید به محل قرار گیری اون مقاومت 1.5 کیلو دقت کنی. اون خیلی مهمه. با 3.3 ولت که راحت باید جواب بگیری. تنظیم فیوزبیت هات درسته؟

mehdiravanbod
02-11-2012, 23:47
کسی می دونه چطور می شه چند مبدل adc را با هم راه اندازی کرد و مقدار هر همشون رو از طریق پورت usb به کامپیوتر ارسال کرد؟

این برنامه میکرو هستش



$hwstack = 40
$swstack = 40
$framesize = 50
$regfile = "m8def.dat"
$crystal = 12000000
$lib "swusb.lbx"
$external _swusb
$external Crcusb
Declare Sub Usb_reset()
Declare Sub Usb_processsetup(txstate As Byte)
Declare Sub Usb_send(txstate As Byte , Byval Count As Byte)
Declare Sub Usb_senddescriptor(txstate As Byte , Maxlen As Byte)
Declare Function Crcusb(buffer() As Byte , Count As Byte) As Word

'*************************** Begin USB Configuration ***************************
$include "USB-Configurations.bas"
$include "swusb-includes.bas"

'**************************** USB Interrupt And Init ***************************
'Set all the variables, flags, and sync bits to their initial states
Call Usb_reset()
Const _usb_intf = Intf0
Config Int0 = Rising
On Int0 Usb_isr Nosave
Enable Int0
'******************************** Configurations *******************************
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Enable Interrupts
'*********************************** Variables *********************************
Dim Resetcounter As Word
Dim Idlemode As Byte
Dim Device_configured As Byte


Dim I As Word

Dim All_adc As Byte
'********************************
Dim Sum5 As Word
Dim Sum4 As Word
Dim Sum3 As Word
Dim Sum2 As Word
'********************************
Dim Adc5 As Word
Dim H5 As Byte
Dim L5 As Byte
'********************************
Dim Adc4 As Word
Dim H4 As Word
Dim L4 As Byte
'********************************
Dim Adc3 As Word
Dim H3 As Byte
Dim L3 As Byte
'********************************
Dim Adc2 As Word
Dim H2 As Byte
Dim L2 As Byte




'********************************** Main Program *******************************
Do

Resetcounter = 0

'Check for reset here
While _usb_pin._usb_dminus = 0
Incr Resetcounter
If Resetcounter = 1000 Then
Call Usb_reset()
End If
Wend
'Check for received data
If _usb_status._usb_rxc = 1 Then
If _usb_status._usb_setup = 1 Then
'Process a setup packet/Control message
Call Usb_processsetup(_usb_tx_status)
Elseif _usb_status._usb_endp1 = 1 Then

End If
'Reset the RXC bit and set the RTR bit (ready to receive a new packet)
_usb_status._usb_rtr = 1
_usb_status._usb_rxc = 0
End If


Sum5 = 0
Sum4 = 0
Sum3 = 0
Sum2 = 0


If Device_configured = 1 Then

For I = 1 To 10
'*********************
Adc5 = Getadc(5)
Sum5 = Sum5 + Adc5
'*********************
Adc4 = Getadc(4)
Sum4 = Sum4 + Adc4
'*********************
Adc3 = Getadc(3)
Sum3 = Sum3 + Adc3
'*********************
Adc2 = Getadc(2)
Sum2 = Sum2 + Adc2



Waitms 50
Next
End If

'*********************
Adc5 = Sum5 / 10
L5 = Low(adc5)
H5 = High(adc5)
'*********************
Adc4 = Sum4 / 10
L4 = Low(adc4)
H4 = High(adc4)
'*********************
Adc3 = Sum3 / 10
L3 = Low(adc3)
H3 = High(adc3)
'*********************
Adc2 = Sum2 / 10
L2 = Low(adc2)
H2 = High(adc2)


' Send data (2 bytes) to PC


If _usb_tx_status._usb_txc = 1 Then
_usb_tx_buffer4(2) = H4
_usb_tx_buffer4(3) = L4
Call Usb_send(_usb_tx_status4 , 2)
End If

If _usb_tx_status._usb_txc = 1 Then
_usb_tx_buffer3(2) = H3
_usb_tx_buffer3(3) = L3
Call Usb_send(_usb_tx_status3 , 2)
End If

If _usb_tx_status._usb_txc = 1 Then
_usb_tx_buffer2(2) = H2
_usb_tx_buffer2(3) = L2
Call Usb_send(_usb_tx_status2 , 2)
End If



Loop
End

'******************** Descriptors stored in EEPROM or FLASH ********************
$include "USB-Descriptors.bas"

'******************************** Subroutines **********************************
$include "USB-Functions.bas"

mehdiravanbod
02-11-2012, 23:50
من هر کاری کردم فقط یک دونه رو می شد راه اندازی کرد و همه رو نتونستم

mehdiravanbod
03-11-2012, 00:43
برنامه ویژال بیسیک



Public Class Form1
Private Const VendorID = &HAAAA 'Replace with your device's
Private Const ProductID = &HEF02 'product and vendor IDs

' read and write buffers
Private Const BufferInSize As Short = 8 'Size of the data buffer coming IN to the PC
Private Const BufferOutSize As Short = 8 'Size of the data buffer going OUT from the PC
Dim BufferIn(BufferInSize) As Byte 'Received data will be stored here - the first byte in the array is unused
Dim BufferOut(BufferOutSize) As Byte 'Transmitted data is stored here - the first item in the array must be 0

'************************************************* ****************
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ConnectToHID(Me)
End Sub

'************************************************* ****************
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs)
DisconnectFromHID()
End Sub
Public Sub OnPlugged(ByVal pHandle As Integer)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
ToolStripStatusLabel1.Text = "PSC CONNECTED"

End If
End Sub
Public Sub OnUnplugged(ByVal pHandle As Integer)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
hidSetReadNotify(hidGetHandle(VendorID, ProductID), False)
' ** YOUR CODE HERE **
ToolStripStatusLabel1.Text = "PSC DISCONNECTED"

End If
End Sub
Public Sub OnRead(ByVal pHandle As Integer)
Dim H5 As Byte
Dim L5 As Byte
Dim ADC5 As Integer
Dim volt5 As Single

Dim H4 As Byte
Dim L4 As Byte
Dim ADC4 As Integer
Dim volt4 As Single

Dim H3 As Byte
Dim L3 As Byte
Dim ADC3 As Integer
Dim volt3 As Single

Dim H2 As Byte
Dim L2 As Byte
Dim ADC2 As Integer
Dim volt2 As Single





If hidRead(pHandle, BufferIn(0)) Then
H5 = BufferIn(7)
L5 = BufferIn(8)
H4 = BufferIn(5)
L4 = BufferIn(6)
H3 = BufferIn(3)
L3 = BufferIn(4)
H2 = BufferIn(1)
L2 = BufferIn(2)

End If


ADC5 = H5
ADC5 = ADC5 << 8 'Shift ADC_Value to Left 8 Time
ADC5 = ADC5 Or L5
volt5 = (ADC5 * 5) / 1024 + 0.004883 'Calculate Analog Voltage Value
TextBox1.Text = volt5
TextBox2.Text = ADC5
V_progressbar4.Increment(1)
V_progressbar4.Value = TextBox1.Text * 20



ADC4 = H4
ADC4 = ADC4 << 8 'Shift ADC_Value to Left 8 Time
ADC4 = ADC4 Or L4
volt4 = (ADC4 * 5) / 1024 + 0.004883 'Calculate Analog Voltage Value
TextBox3.Text = volt4
TextBox4.Text = ADC4
V_progressbar3.Increment(1)
V_progressbar3.Value = TextBox3.Text * 20



ADC3 = H3
ADC3 = ADC3 << 8 'Shift ADC_Value to Left 8 Time
ADC3 = ADC5 Or L3
volt3 = (ADC3 * 5) / 1024 + 0.004883 'Calculate Analog Voltage Value
TextBox7.Text = volt3
TextBox8.Text = ADC3
V_progressbar2.Increment(1)
V_progressbar2.Value = TextBox7.Text * 20



ADC2 = H2
ADC2 = ADC2 << 8 'Shift ADC_Value to Left 8 Time
ADC2 = ADC2 Or L2
volt2 = (ADC2 * 5) / 1024 + 0.004883 'Calculate Analog Voltage Value
Label33.Text = volt2
Label35.Text = ADC2
V_progressbar1.Increment(1)
V_progressbar1.Value = Label33.Text * 20
LAB3.Text = V_progressbar1.Value


End Sub


'************************************************* ****************
Public Sub OnChanged()
Dim pHandle As Integer
pHandle = hidGetHandle(VendorID, ProductID)
hidSetReadNotify(hidGetHandle(VendorID, ProductID), True)
End Sub




End Class

filip31
06-11-2012, 01:45
ممنون بابت ای آموزش ارزشمند.

mehdiravanbod
06-11-2012, 21:51
سلام به همگی -با دستکاری کردن کتاب خانه و دو هفته تلاش بی وقفه و برنامه نویسی زیاد توانستم تمام کانال های انالوگ رو راه اندازی کنم و در کامپیوتر نمایش دعم

morteza_rk
07-11-2012, 23:55
سلام به همگی -با دستکاری کردن کتاب خانه و دو هفته تلاش بی وقفه و برنامه نویسی زیاد توانستم تمام کانال های انالوگ رو راه اندازی کنم و در کامپیوتر نمایش دعم

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

black_iron
30-11-2012, 01:45
آقا فایل ضمیمه برنامه بیسک رو هم باید بریزیم تو میکرو

morteza_rk
30-11-2012, 02:59
منظورتون از فایل ضمیمه کدومه؟ برای برنامه ریزی میکرو 4تا فایل هست به نام های زیر :

1. ADC Test
2. LED Test
3. Send and Receive
4. Send Number

شما تنها کاری که می کنی اینه که فایل هگز یکی از این 4تا فایل رو میریزی تو میکرو. (بسته به پروژه ای که می خوای تست کنی)

اگرم می خوای چیزی از این مثال ها کم یا زیاد کنی باید توی همین 4تا فایل تغییر ایجاد کنی.

به نظرم توضیحات خیلی کامل و جامع هست. باید دقیقتر خونده بشه.

black_iron
30-11-2012, 21:56
خیلی ممنون .
من برنامه سمت کامپیوتر رو با C# می نویسم .
چه جوری میتونم از توابع و رویداد کلاس mcHIDInterface.cs استفاده کنم ؟ ( چه جوری تعریف کنم ؟ )
هنگام مقدار دهی به متغیر های VendorID و ProductID با مشکل مواجه میشم
یعنی نمی دونم چه نوع متغیری واسشون انتخاب و چه جوری مقدار دهی کنم
بازم تشکر ! :mrgreen:

morteza_rk
01-12-2012, 01:49
من برنامه سمت کامپیوتر رو با C# می نویسم .
چه جوری میتونم از توابع و رویداد کلاس mcHIDInterface.cs استفاده کنم ؟ ( چه جوری تعریف کنم ؟ )
هنگام مقدار دهی به متغیر های VendorID و ProductID با مشکل مواجه میشم
یعنی نمی دونم چه نوع متغیری واسشون انتخاب و چه جوری مقدار دهی کنم

من خودم برنامه با #C برای این پروژه ننوشتم. ولی کاری نداره. طرز استفاده از توابع دقیقا مثل VB.NET هست. با همون اسم ها فراخوانی میشن. VendorID و ProductID که متغیر نیستن! ثابت عددی هستن. برای #C هم دقیقا مثل VB.NET باید ثابت عددی تعریف کنید.

شما اگه تسلط به #C نداری بحثش جداست. وگرنه برنامه واضح و راحته. متاسفانه من وقت نمی کنم که یکی از مثال هارو واسه #C برگردونم. ولی کار ساده ایه.

REZA.PDG
25-12-2012, 00:50
با سلام خدمت همه دوستان ب خصوص آقای رحیمی

آقای رحیمی من مجددا هر کاری کردم نشد؛باز همون پیغام خطا رو موقع کامپایل شدن میده(شبیه همون مشکلی که واسه یکی از تاپیکا رخ داده بود؛عکسا شو پاین گذاشتم)

چکار کنم،راه حلش چیه؛
باتوجه ب اینکه قبلا خدمتتون عرض کردم؛بنده با ویژوال بیسیک دارم کار میکنم(ن نت)برنامه رو به ویژوال تبدیل کردم و فکر کنم برنامه طرف pc درست باشه ولی هی هی اون اوروره تو بسکام میره رو اعصاب....


ببخشید پر حرفی کردم،ممنون میشم راهنمایی کنید

morteza_rk
25-12-2012, 02:11
آقای رحیمی من مجددا هر کاری کردم نشد؛باز همون پیغام خطا رو موقع کامپایل شدن میده(شبیه همون مشکلی که واسه یکی از تاپیکا رخ داده بود؛عکسا شو پاین گذاشتم

سلام

الان که دقیق به عکس نگاه کردم متوجه شدم که ورژن کامپایلر شما خیلی قدیمی هست. حتما نسخه ی جدیدتر نصب کنید ، مشکل حل میشه. من خودم با نسخه ی 2.0.7.3 تست کردم. تابع چک کردن crc در ورژن های قدیمی متفاوته.

REZA.PDG
26-12-2012, 02:01
درسته مشکل از ورژن نرم افزار بود!

خیلی خیلی ممنون از راهنمایی تون

amin1139
12-01-2013, 19:55
سلام ممنون از کار بزرگی که کردین ولی چرا فایل باز نمیشه
یک عکس دانلود کردم که باز نمیشه؟

gorhmar
26-01-2013, 15:44
دو خازن که استفاده شده در مدار به کدوم پورت های میکرو متصل میشه؟
من برنامه رو میخواستم به این صورت تغییر بدم که دما ی محیط به وسیله سنسور گرفته شه بعد اگر کمتر از 25 درجه سانتی گراد بود ال ای دی 1 واگر بیشتر بود ال ای دی 2 روشن بشه؟
برنامه ها رو تغغیر دادم وعکس قسمت های تغییر داده رو گذاشتم به نظرتون درسته یا نه ؟

morteza_rk
27-01-2013, 15:32
شما گفتید شماتیک من درسته فقط نیاز داره که دتیتا منفی به وی سی سی وصل بشه با مقاومت 1.5 کیلو اما خود شما در آموزش سخت افزار وقتی از دیود زنر استفاده کردید به هیچ وجه این کار رو نکردید.

الان که شما گفتی دوباره به شماتیک نگاه کردم. درسته ٰ فقط نقطه ای که نشان دهندی گره هست توی قسمت اتصال دیود زنر به مقاومت 1.5 کیلو نیفتاده. بخاطر همین شما فکر کردی که به هم وصل نیستن.


دو خازن که استفاده شده در مدار به کدوم پورت های میکرو متصل میشه؟
کدوم دوتا خازن؟ همه ی خازن ها که مشخصه به کجا وصلن!


من برنامه رو میخواستم به این صورت تغییر بدم که دما ی محیط به وسیله سنسور گرفته شه بعد اگر کمتر از 25 درجه سانتی گراد بود ال ای دی 1 واگر بیشتر بود ال ای دی 2 روشن بشه؟

برای اعمال این تغییر باید برنامه ی میکرو رو تغییر بدید. اینجوری خیلی راحت تره.

hamidalirezaei
05-02-2013, 16:13
با سلام و ممنون به خاطر آموزش کاملتون

یه چنتا سوال برام پیش اومده بود ممنون میشم که جواب بدید...
مداری که قرار داده بودید رو بر روی برد بورد بستم و یکی از مثال هایی که قرار داده بودید رو پروگرام کردم ولی متاسفانه با پیغام usb not recognized بر روی لپ تاپ ویندوز 7 ، 64 بیتی مواجه شدم ...

مقدار ولتاژ ورودی رو یکبار 3.3 و بار دیگر 3.6 تنظیم کردم و همون پیغام رو گرفتم مقدار جریان هم 340 میلی آمپر بود ...
حالا سوالی که برام بوجود اومده ... مقدار ولتاژ ورودی هست ... آیا الزامی هست که از دیود های 3.6 استفاده کرد یا اینکه به هر طریقی میشه سطح ولاژ ورودی تامین بشه و دیگری هم تنظیم جریان هست؟ آیا لازمه که برنامه رو دستکاری کنم ... منظورم همون مقدار 300 و 150 که در فایل آموزشی ذکر شده بود...
و دیگر اینکه تنظیمات فیوز بیت ها به چه صورت باید باشه ...؟

ممنون

samina
11-02-2013, 19:15
سلام وقت بخير. ببخشيد بعد از اينكه برنامه قسمت ميكرو رو با بسكام ران كردم ، بعد براي اجراي برنامه كامپيوتر بايد چيكار كنم؟؟

samina
12-02-2013, 19:48
سلام تشكر بابت اين آموزش

morteza_rk
13-02-2013, 02:56
مقدار ولتاژ ورودی رو یکبار 3.3 و بار دیگر 3.6 تنظیم کردم و همون پیغام رو گرفتم مقدار جریان هم 340 میلی آمپر بود ...

با هر دو نوع دیود باید کار کنه. ضمن اینکه جریان زیادی داره از مدار کشیده میشه. حداکثر جریان باید بین 80 تا 100 میلی آمپر باشه.


آیا لازمه که برنامه رو دستکاری کنم ... منظورم همون مقدار 300 و 150 که در فایل آموزشی ذکر شده بود...
هر 4 برنامه سالمن و نیازی به دستکاری ندارن.


و دیگر اینکه تنظیمات فیوز بیت ها به چه صورت باید باشه ...؟
فیوزبیت ها باید برروی کریستال خارجی تنظیم بشن. به شکل زیر :

CKSEL0 = 1
CKSEL1 = 1
CKSEL2 = 1
CKSEL3 = 1

SUT0 = 1
SUT1 = 1


بعد از اينكه برنامه قسمت ميكرو رو با بسكام ران كردم ، بعد براي اجراي برنامه كامپيوتر بايد چيكار كنم؟؟

باید اول کامپیوتر سخت افزار شمارو بشناسه (توی آموزش توضیح دادم که چطور سخت افزارو توی Device Manager پیدا کنید). بعدش توی پوشه های برنامه کامپیوتر میرید به پوشه ی bin\Debug و فایل اجرایی برنامه رو اجرا می کنید.

samina
13-02-2013, 18:36
1-من آموزش ها رو كه شامل سه بخش AVR و كامپيوتر و سخت افزارو مطالعه كردم (من ميخوام مثال شماره 4 رو اجرا كنم) اما چيزي در مورد Divice Manager نديدم مي شه دقيق تر بگين كه كجا رو بايد در اين مورد مطالعه كنم؟؟؟
2-راستي من از ميكرو ATmega32 دارم استفاده مي كنم اشكالي نداره؟؟

morteza_rk
13-02-2013, 19:31
چيزي در مورد Divice Manager نديدم مي شه دقيق تر بگين كه كجا رو بايد در اين مورد مطالعه كنم؟؟؟
ببخشید توی اموزش ها نبود مثل اینکه. روی My Computer راست کلیک کنید و گزینه ی Device Manager رو انتخاب کنید در صفحه ای که در سمت راست مشاهده می کنید اسم تمام سخت افزارهای موجد روی سیتم شما نوشته شده. در گروه Human Interface Device باید اسم سخت افزار شما هم باشه!


2-راستي من از ميكرو ATmega32 دارم استفاده مي كنم اشكالي نداره؟؟

نه ، هیچ مشکلی پیش نمیاد.

samina
14-02-2013, 14:13
در قسمت Human Interface Device چهار عنوان زير نوشته شده:
HID-compliant consumer control device
HID-compliant device
USB Human Interface Device
USB Human Interface Device
1-خب حالا بايد چيكار كنم؟؟؟بذارم اين پنجره باز باشه بعد USB رو وصل كنم؟
2-براي تغذيه مدار از منبع جداگانه استفاده كردم،بعد پايه هاي تغذيه USB رها باشن يا به منبع تغذيه وصلشون كنم؟؟؟
3-در آموزش گفتين كه نياز به نصب درايور نيس ،درسته؟؟

morteza_rk
18-02-2013, 01:35
در قسمت human interface device چهار عنوان زير نوشته شده:
Hid-compliant consumer control device
hid-compliant device
usb human interface device
usb human interface device

من الان سخت افزارو ندارم. شما بعداز اینکه سخت افزارتو از پورت usb جدا می کنی کدوم یک از موارد بالا حذف میشه؟ همون سخت افزار شماست دیگه.

تازه وقتیکه سخت افزارو وصل می کنید گوشه ی سمت راست پائین ویندوز (کنار ساعت) باید اسم سخت افزار برای چند ثانیه بیاد دیگه. توی آموزش برنامه avr گفتم.


2-براي تغذيه مدار از منبع جداگانه استفاده كردم،بعد پايه هاي تغذيه usb رها باشن يا به منبع تغذيه وصلشون كنم؟؟؟
شماتیکو بذارید ببینم.


3-در آموزش گفتين كه نياز به نصب درايور نيس ،درسته؟؟
بله لازم نیست. چون سخت افزار ما به عنوان یه hid شناخته میشه.

samina
19-02-2013, 00:34
خب وقتي دستگاه رو قطع كردم هيچ كدوم از مواردي كه گفتم حذف نشد!!! وقتي هم كه USB رو وصل يا قطع مي كنم هيچ پيغامي كامپيوتر بهم نميده!:sa:
قطعا مشكل بايد در سخت افزارم باشه ديگه؟؟؟درسته؟؟؟
لزومي نداره كه در برنامه ها شك كنم.چون شما دقيقا از همين برنامه ها جواب گرفتيد ديگه...

morteza_rk
19-02-2013, 01:04
قطعا مشكل بايد در سخت افزارم باشه ديگه؟؟؟درسته؟؟؟
لزومي نداره كه در برنامه ها شك كنم.چون شما دقيقا از همين برنامه ها جواب گرفتيد ديگه...
بله ، مشکل از سخت افزارتونه.

samina
20-02-2013, 13:46
بخشيد در شماتيك مدار، تغذيه ميكرو همون مقدار تقريبيه 3.6 ولت هست، مگر ولتا‍‍‍‍ژ كاري Atmega8 بين 4.5 تا 5.5 ولت نيس؟؟؟

morteza_rk
23-02-2013, 22:45
مگر ولتا‍‍‍‍ژ كاري atmega8 بين 4.5 تا 5.5 ولت نيس؟؟؟

خیر ، ولتاژ کاری سری avr بین 2.7 ولت تا 5.5 هست.

Kaoosy
06-04-2013, 14:35
سلام
من فایل test led رو توی بسکام ، وقتی کامپایل می کنم خطای 242 می ده .
وقتی روی خطا دوبار کلیک می کنم فایل usb-functions.bas رو باز می کنه و به این خط از کد برنامه اشاره می کنه
_usb_crc = Crc16uni(txstate(3) , Count , &HFFFF , &H8005 , 1 , 1) l
و شرح فارسی خطا به این معنیه که متغیر منبع با متغیر مقصد هماهنگ نیست .

لطفا راهنمایی کنید که چطور این فایل رو کامایل کنم .
من می خاستم نوع میکرو رو به atmega16 تغییر بدم .

morteza_rk
06-04-2013, 16:47
سلام

ورژن بسکام شما چنده؟ از ورژن های 2.0.7.3 یا بالاتر استفاده کنید.

e_rafigh
02-06-2013, 08:02
سلام اقا این لینک دانلودش خرابه میشه ادرس جدید یا یه جایی دیگه اپلودش کنید؟
ممنون

e_rafigh
09-06-2013, 21:50
سلام فایل پیوست خرابه تو صفحه اول میشه درستش کنین؟ممنون

vahidasm
10-06-2013, 02:03
لینک درسته

e_rafigh
10-06-2013, 16:49
سلام اما من وقتی میزنم که دانلود شه پیغام میده که فایل پاک شده از روی سرور

e_rafigh
11-06-2013, 23:15
سلام همچنان نتونستم دانلود کنم ومنتظر دریافت فایل هستم
ممنون

morteza_rk
12-06-2013, 16:03
سلام

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

متاسفانه یه هاست رایگان خوب توی ایران داشتیم که اونم به ملکوت اعلا پیوست.

بگذریم...

فایل هارو روی دوتا سرور محبوب MediaFire و 4Shared آپلود کردم. توی پست اول در دسترس هستند.

revolt
29-06-2013, 16:06
سلام

من مدار مثال ۴ رو با همه روش ها بستم.اما فقط این پیغام رو میده
USB NOT RECOGNIZED
نمیدونم مشکلش از کجاس.۳تا میکرو هم عوض کردم.

از lf33استفاده کردم.از زنر ۳.۶ولت و دیود 1n4007 هم استفاده کردم.بازم نشد.

سمت کامپیوترم یه سیستم رومیزی معمولیه با سیستم عامل ویندوز ۷ سی و دو بیتی.
از کابل تقریبا ۵۰ سانتی استفاده میکنم برای اتصال USB به کامپیوتر- روی برد بَرد بستم مدار رو.

اگر لازم باشه بگین یه عکس بگیرم ازش بذارم.

منتظر راهنمایی شما هستم.

morteza_rk
30-06-2013, 14:34
سلام

قبلا هم از طریق ایمیل گفتم که این مشکل USB Device Not Recognize از 5 قسمت می تونه باشه :

1. درست بودن مقاومت های 47 اهمی (محدوده این مقاومت بین 22 اهم تا 68 اهم می تونه باشه)

2. درست بودن مقدار مقاومت 1.5 کیلو و نحوه ی اتصال صحیحش از Vusb به خط دیتا منفی usb .

3. استفاده از کریستال خارجی با فرکانس 12 مگا هرتز

4. تنظیم فیوزبیت های میکروکنترلر برروی کریستال خارجی

5. صحیح بودن خود برنامه ای که کامپایل می کنید.

revolt
01-07-2013, 10:24
سلام

قبلا هم از طریق ایمیل گفتم که این مشکل usb device not recognize از 5 قسمت می تونه باشه :

1. درست بودن مقاومت های 47 اهمی (محدوده این مقاومت بین 22 اهم تا 68 اهم می تونه باشه)

2. درست بودن مقدار مقاومت 1.5 کیلو و نحوه ی اتصال صحیحش از vusb به خط دیتا منفی usb .

3. استفاده از کریستال خارجی با فرکانس 12 مگا هرتز

4. تنظیم فیوزبیت های میکروکنترلر برروی کریستال خارجی

5. صحیح بودن خود برنامه ای که کامپایل می کنید.

سلام مهندس شما لطف دارین.

مورد ۱ درسته هم ۴۷ گذاشتم هم ۶۸ و هم ۳۳ اهم.

مورد ۲ هم دقیقا ۱.۵ کیلو یک در صد هست.

کریستالم هم ۱۲ مگ هست.

فیوز بیت ها هم روی خارجی هست.به این ترتیب
ckles0 1
ckles1 1
ckles2 1
ckles3 1
sut0 1
sut1 1

برنامه هم دقیقا همان برنامه ای که خودتون گذاشتین.من هیچ تغییری ندادم.

میکرو هایی که استفاده میکنم از نو ع l هستند.نوع a هم دارم ولی اونم جواب نمیده.

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

morteza_rk
01-07-2013, 17:36
مورد ۱ درسته هم ۴۷ گذاشتم هم ۶۸ و هم ۳۳ اهم.

مورد ۲ هم دقیقا ۱.۵ کیلو یک در صد هست.

کریستالم هم ۱۲ مگ هست.

فیوز بیت ها هم روی خارجی هست.به این ترتیب
ckles0 1
ckles1 1
ckles2 1
ckles3 1
sut0 1
sut1 1


خب پس تا اینجا همه چی درسته.


میکرو هایی که استفاده میکنم از نو ع l هستند.نوع a هم دارم ولی اونم جواب نمیده.
1. نوع L که برای فرکانس های ماکزیمم 8 مگ هست ، پس جائی توی این پروژه نداره. ولی نوع A باید جواب بده.

2. اگه دقیقا همون مثالو تست می کنید پس میکروکنترلرتون اتمگا8 هست دیگه ، درسته؟

3. بقیه مثال هارو هم تست کردید؟

4. مطمئن هستید که جای دیتا + و دیتا - رو اشتباه نزدید؟ اون سیم سفید کنار قرمز دیتا منفی هست. یعنی دیتا منفی کنار Vusb هست.

5. عکس از مداری که بستید بذارید. حتما واضح باشه. برد برد خلوت باشه و معلوم باشه هر سیمی از کجا به کجا وصل شده.

revolt
02-07-2013, 10:13
خب پس تا اینجا همه چی درسته.


1. نوع L که برای فرکانس های ماکزیمم 8 مگ هست ، پس جائی توی این پروژه نداره. ولی نوع A باید جواب بده.

2. اگه دقیقا همون مثالو تست می کنید پس میکروکنترلرتون اتمگا8 هست دیگه ، درسته؟

3. بقیه مثال هارو هم تست کردید؟

4. مطمئن هستید که جای دیتا + و دیتا - رو اشتباه نزدید؟ اون سیم سفید کنار قرمز دیتا منفی هست. یعنی دیتا منفی کنار Vusb هست.

5. عکس از مداری که بستید بذارید. حتما واضح باشه. برد برد خلوت باشه و معلوم باشه هر سیمی از کجا به کجا وصل شده.

سلام مهندس عزیز

بله میکرو اتمگا ۸ هست.

دقیقا مثال‌های شماست و من هیچ تغییری ندادم.

بقیه مثال ها رو هم بستم بازم نشد.

من مطمئن هستم سخت افزارم مورد داره.

مثال یک رو بستم ال ای دی ها بیخودی روشن خاموش میشدن.با اینکه باز همون پیغام عدم شناسایی

رو میداد.

مدار مثال شماره ۱

You can see links before reply (You can see links before reply)

You can see links before reply (You can see links before reply)

morteza_rk
02-07-2013, 17:36
عکس ها مشخص نیست. توی همین سایت آپلود کنید. توی سایتی که آپلود کردید میگه در دسترس نیست.

revolt
02-07-2013, 23:19
عکس ها مشخص نیست. توی همین سایت آپلود کنید. توی سایتی که آپلود کردید میگه در دسترس نیست.

چشم مهندس بفرمایین

morteza_rk
03-07-2013, 13:07
مهندس عکس ها که واضح نیست دادا! خیلی مه آلوده!!!:mrgreen:

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

revolt
03-07-2013, 13:45
مهندس عکس ها که واضح نیست دادا! خیلی مه آلوده!!!:mrgreen:

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

سلام :D
دیگه تنها دوربینی بود که دم دستم بود.

منبع رو باید بچسبونم به میکرو؟

اون ۲ تا سیم سفید رفتن به خازن ۱۰۰ نانو MKT :mrgreen:

revolt
03-07-2013, 14:49
سلام دوباره

بالاخره بعد از کلی تلاش و مزاحمت برای دوستان و مهندس رحیمی عزیزم

تونستم مدار رو راه بندازم.کامپیوتر خیلی راحت دیوایس رو میشناسه و کار میکنه.

فک میکنم تو پروگرم کردن میکرو مشکل داشتم که با تغییر یه فیوز بیت WTDOM به یک درست شد.

البته نمیدونم دلیلش همین بوده اما درست شد.

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

دوستان از همگی ممنونم.

مهندس رحیمی عزیز و جناب esisafa که مزاجم ایشون هم شدم.

ممنون:gop:

morteza_rk
03-07-2013, 22:34
فک میکنم تو پروگرم کردن میکرو مشکل داشتم که با تغییر یه فیوز بیت wtdom به یک درست شد.

100٪ مشکل از همین فیوزبیت بود. چون این فیوزبیت تایمر نگهبانو بصورت سخت افزاری فعال می کنه واین تایمر میکرو رو دائما ریست می کنه. ولی اتمگا 8 که از بازار می خرید این فیوزبیتش پروگرم نشده هست. چرا مال شما پروگرم شده بود؟

revolt
04-07-2013, 09:27
100٪ مشکل از همین فیوزبیت بود. چون این فیوزبیت تایمر نگهبانو بصورت سخت افزاری فعال می کنه واین تایمر میکرو رو دائما ریست می کنه. ولی اتمگا 8 که از بازار می خرید این فیوزبیتش پروگرم نشده هست. چرا مال شما پروگرم شده بود؟

راستش میکرو من هم این فیوز بیتش صفر بود.

تو یه قسمت از برنامه پروگرمر که فیوز بیت ها رو میخونه دکمه read رو زدم.بعد دیدم این فیوز بیت

تغییر کرد.واسه همین تغییرش دادم.

فقط به چیزی مهندس

الان هم برنامه هم سخت افزار به خوبی کار میکنن.

اما ۲ تا مشکل جزئی دارم:

۱.اینکه وقتی دستگاه رو متصل میکنم چیزی نشون نمیده.که وصل شده.مثلا بنویسه:

MRK Device v1.0

۲.وقتی که هنوز چیزی به ADC متصل نکردم تا ولتاژش رو اندازه بگیره .برنامه خودش دائما یه بازه

۲.۴ ولتی تا ۲.۶ ولتی رو نشون میده.

چظور میتونم کاری کنم که این مقدار صفر باشه.و فقط وقتی که ولتاژ اعمال میشه نشون بده؟

ممنونم

morteza_rk
04-07-2013, 14:24
۱.اینکه وقتی دستگاه رو متصل میکنم چیزی نشون نمیده.که وصل شده.مثلا بنویسه:
نمی دونم. توی ویندوز 7 تست نکردم. ولی باید نشون بده. البته فقط اولین بار که به پورت usb وصل میشه نشون میده. چون hid هست و نیازی به درایور نداره بطور اتوماتیک شناخته میشه و در نتیجه پیامی هم نمیاد.


۲.وقتی که هنوز چیزی به adc متصل نکردم تا ولتاژش رو اندازه بگیره .برنامه خودش دائما یه بازه

این نویز هست مهندس. برای رفع این حالت می تونی پایه های adc رو با مقاومت 10 کیلو یا 4.7 کیلو وصل کنی به زمین. اونوقت همیشه صفر نشون میده.

revolt
04-07-2013, 23:06
نمی دونم. توی ویندوز 7 تست نکردم. ولی باید نشون بده. البته فقط اولین بار که به پورت usb وصل میشه نشون میده. چون hid هست و نیازی به درایور نداره بطور اتوماتیک شناخته میشه و در نتیجه پیامی هم نمیاد.



این نویز هست مهندس. برای رفع این حالت می تونی پایه های adc رو با مقاومت 10 کیلو یا 4.7 کیلو وصل کنی به زمین. اونوقت همیشه صفر نشون میده.

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

واسه حذف نویز بقیه پای های adc رو با مقاومت به زمین وصل کنم و فقط اون یکی که کانفیگ کردیم

خالی بمونه؟

یا همون پایه ای که کانفیگ شده؟

ممنونم مهندس رحیمی گل:0013:

morteza_rk
05-07-2013, 02:52
واسه حذف نویز بقیه پای های adc رو با مقاومت به زمین وصل کنم و فقط اون یکی که کانفیگ کردیم

همه رو میشه وصل کنی به زمین برای محکم کاری. ولی اصلیه اونیه که کانفیگ کردی.

pooyapoorjama
19-08-2013, 15:05
سلام دوست عزیز..واقعا دستت درد نکنه..خیلی زحمت کشیدی

haddadi_mahdi
03-09-2013, 14:34
با سلام
میشه با این کتابخانه غیر از اعداد., حروف به usb ارسال کرد مثلا یک رشته....
به جای byte یک string ارسال کرد...
با تشکر

morteza_rk
03-09-2013, 15:21
به جای byte یک string ارسال کرد...

سلام ، بله. ولی باید هر کاراکتر رو جداگانه بفرستید. یا اینکه کد اسکی اونو بفرستید و در برنامه ی سمت کامپیوتر اونهارو به هم بچسبونید.

haddadi_mahdi
03-09-2013, 18:15
با تشکر
میشه یه مثال از این مورد در این پست بذارید...
مثلا ارسال چند ورودی به usb

morteza_rk
04-09-2013, 02:30
میشه یه مثال از این مورد در این پست بذارید...
مثلا ارسال چند ورودی به usb

وقت نمی کنم مهندس. شما تلاش کن و نتیجه رو اینجا بذار. ممنون

haddadi_mahdi
07-09-2013, 16:48
از دوستان کسی این کارو انجام نداده.....

haddadi_mahdi
14-09-2013, 15:59
از دوستان کسی این پروژه ارسال چند ورودی به usb رو انجام داده خواهش میکنم داخل این پست بذاره تا همه استفاده کنند
با تشکر

esi_52000
23-09-2013, 00:56
سلام به همه دوستان.من هر کاری کردم نشد این برنامه رو با c# بنویسم و تماما error پیدا نکردن method رو اعلام میکنه .کسی هست کمک کنه.ممنون میشم دوستان
Method 'WindowsFormsApplication1.Form1.OnPlugged' not found.
داره ارور بالا رو میگیره.جالبه که من DLL مورد نظر رو علاوه بر پوشه SYSTEM32 کنار فایل اجرایی برنامه هم کپی کردم

esi_52000
24-09-2013, 21:07
دوستان کسی با سی شارپ برنامه ننوشته بود.؟

morteza_rk
24-09-2013, 21:12
سلام

مهندس خودم نوشته بودم. کار می کرده که. نباید مشکلی باشه دادا.

esi_52000
25-09-2013, 00:13
سلام مهندس جان.عزیز من با c#2008 هر کاری کردم قبول نکرد و ارور داد.میشه لطف کنین و یه نمونه با سی شارپ بزارین.ممنون میشم دادا

sadra
30-09-2013, 21:56
سلام
مهندس با این دو لینک نمیشه فایلو دانلود کرد کمکم میکنید
سپاسگزارم

r_rezaei
03-10-2013, 11:59
با سلام
من هر کاری کردم نتونستم فایل "دانلود فایل های آموزش AVR و پورت USB (You can see links before reply)" را دانلود کنم .
مشکل از چیه ؟

با تشکر

sadra
06-10-2013, 22:28
سلام
امروزیها میگن ای ول
این سایت و دست اندرکاران یکی از یکی بهترند و بقولی محشرند
این فایلو نتونستم دانلود کنم. بعد دیدم ای میل زدند و لینک کردند به این پست و فایل دانلود شد
بسیار سپاسگزارم
خداوکیلی تو هیچ سایتی چنین برخوردی ندیدم
مدیونتون هستم و به خدا واگذار میکنم و او ازهمه بهتر پاسخ نیکان را خواهد داد
یکی از شعارهای شبکه یک رو حتما دیدید و شنیدید که ... نیکان در نعمتند
یا علی

rof
10-11-2013, 03:12
دمت گرم داداش

soran kurd
10-12-2013, 19:34
عالی بود دستتون درد نکنه.:018:

omid_544
01-01-2014, 16:43
سلام من این مدارو درست کردم اما خیلی اذیت میکنه.بعضی وقتا ویندوز میشناسش بعضی وقتا هم :unh:
ویندوزم سون 64بیتی لپ تاب دارم از زنر3.6 استفاده کردم.بنظرشما مشکل کجاست؟

omid_544
02-01-2014, 22:57
کسی نیست کمک کنه ؟
ویندوز 32 بیتیم نصب کردم بازم درست نشد.

morteza_rk
02-01-2014, 23:15
سلام من این مدارو درست کردم اما خیلی اذیت میکنه.بعضی وقتا ویندوز میشناسش بعضی وقتا هم
ویندوزم سون 64بیتی لپ تاب دارم از زنر3.6 استفاده کردم.بنظرشما مشکل کجاست؟

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

سخت افزار شما ایراد داره احتمالا. طول کابل usb ، جنسش ، مقدار مقاومت های موجود مدار ، کریستال ، خازن هاش و ...

omid_544
03-01-2014, 21:17
ممنون مهندس که جواب دادی اما بنظرخودم مدار خوبه حالا می خوام رو یه برد درستش کنم که مستقیم به یو اس بی وصل بشه ببینم جواب میده یا نه.نتیجه رو همین جا میگم.

avr.mohsen
07-01-2014, 19:13
سلام مهندس خسته نباشی یه سوال
از فایل dll میشه توی labview هم استفاده کرد.

Diamond242
31-01-2014, 15:46
سلام. من مدار ارسال عدد رو با کلی دردسر بستم. فقط یه بار عدد رو فرستاد. دیگه نفرستاد. هر کاری می کنم نمی شه. اینم بگم که من الکترونیکی نیستم، برنامه نویسم. سمت کامپیوتر هم تریس کردم. دستگاه وصل می شه و سیگنال رو می فرسته. اما وقتی پایه C5 رو 1 می کنم، عدد رو نمی فرسته. مگا 32 استفاده کردم. اون یه باری هم که فرستاد نفهمیدم چی شد که فرستاد. یه خط کد به میکرو اضافه کردم: اینجوری شد:

If Pinc.5 = 1 Then
'Queue data to be sent on endpoint 2 (HID report)
If _usb_tx_status2._usb_txc = 1 Then
Portc.6 = 1
_usb_tx_buffer2(2) = 123 'Put our Byte in the TX buffer
Call Usb_send(_usb_tx_status2 , 1) 'Send data to PC


End If


End If




یه ال ای دی به پایه C6 وصل کردم. اونم روشن نمی شه. یکی کمک کنه. ممنون

morteza_rk
31-01-2014, 20:24
سلام



از فایل dll میشه توی labview هم استفاده کرد.
در Labviwe نمیشه مهندس.



سلام. من مدار ارسال عدد رو با کلی دردسر بستم. فقط یه بار عدد رو فرستاد. دیگه نفرستاد. هر کاری می کنم نمی شه. اینم بگم که من الکترونیکی نیستم، برنامه نویسم. سمت کامپیوتر هم تریس کردم. دستگاه وصل می شه و سیگنال رو می فرسته. اما وقتی پایه C5 رو 1 می کنم، عدد رو نمی فرسته. مگا 32 استفاده کردم. اون یه باری هم که فرستاد نفهمیدم چی شد که فرستاد. یه خط کد به میکرو اضافه کردم: اینجوری شد:
در اتمگا32 چورت C5 بطور پیشفرض قابل استفاده نیست. چون برای پروتکا jtag رزرو شده. یا از یه پین دیگه استفاده کنید یا فیزبیت jtag رو غیرفعال کنید

Diamond242
02-02-2014, 13:47
خیلی ممنون از پاسختون.
2 تا مسئاله هست. اگر کمکم کنید خیلی ممنون می شم.
من 4 تا atmega8 دارم که هر کدومشون 6 تا خروجی دارن یعنی 6 تا پایه رو 1 می کنن.
1- چطور می تونم خروجی های این 4 تا mega8 رو بدم به mega32 ؟ آخه مگا32 توی ورودی اگه پایه زمین باشه، 1 منطقی هست. اما خروجی های مگا8 رو که 1 می کنم، 5 ولت می شه.
2- در مجموع 24 تا ورودی می خوام به مگا32 بدم. ار کدوم پایه ها می تونم استفاده کنم؟
ممنون می شم توی این دو مورد کمکم کنید.

omid_544
02-08-2014, 21:10
من به یه مشکل بر خوردم میخوام بیشتر از 8 بایت ارسال کنم اما نمیشه چرا؟

_usb_tx_buffer2(2) = Accx
_usb_tx_buffer2(3) = Accy
_usb_tx_buffer2(4) = Accz

_usb_tx_buffer2(5) = Gyrox
_usb_tx_buffer2(6) = Gyroy
_usb_tx_buffer2(7) = Gyroz

_usb_tx_buffer2(8) = Magx
_usb_tx_buffer2(9) = Magy
_usb_tx_buffer2(10) = Magz
درسمت کامپیوتر هیچی نشون نمیده اما وقتی 8 میکنم جواب میده؟

omid_544
03-08-2014, 18:54
من به یه مشکل بر خوردم میخوام بیشتر از 8 بایت ارسال کنم اما نمیشه چرا؟

_usb_tx_buffer2(2) = Accx
_usb_tx_buffer2(3) = Accy
_usb_tx_buffer2(4) = Accz

_usb_tx_buffer2(5) = Gyrox
_usb_tx_buffer2(6) = Gyroy
_usb_tx_buffer2(7) = Gyroz

_usb_tx_buffer2(8) = Magx
_usb_tx_buffer2(9) = Magy
_usb_tx_buffer2(10) = Magz
درسمت کامپیوتر هیچی نشون نمیده اما وقتی 8 میکنم جواب میده؟

دوستان کسی نیست راهنمایی کنه ؟
یه چیزایی خودم پیدا کردم مثل
usb_tx_buffer3,
usb_tx_buffer4

اما زمانی که مقدار بهشون میدم توی کامپیوتر نشونشون نمیده چرا ؟

REZA.PDG
23-09-2014, 14:00
با سلام خدمت دوستان اللخصوص اساتید بزرگ


من مجددا برگشتم رو کار کردن تو این پروژه،بعد از جواب گرفتن از مثال اول چند نمونه ارسال داده از سمت کامپیوتر رو چک کردم عالی بود اما وقتی رفتم رو ارسال داده از سمت میکرو ؛یعنی مثال شماره دو رو انجام بدم و چک کنم ب مشکل بر خوردم یعنی اصلا جواب نمیده!

فک کنم اصلا اون رویداد OnRead اجرا نمیشه چون ی دو سه باری ارور خم داد ؛آخریا وقتی پین رو یک میکردم تا عدد ارسال ش تو Vb باز ارور میداد!!!!



در ضمن من از VB6 استفاده میکنم؛اگه نیاز ب تغییراتی در کد برنامه VB هست ممنون میشم کمک کنید.




ی چیز جالبم اینکه برای شروع ارتباط به جای استفاده از
Private Sub Form_Load()

ConnectToHID (Me)

End Sub

من از کد زیر استفاده کردم!(نمیددوئنم چرا،البته وقتی که از ConnectToHID(Me) استفاه میکنم ارور میده!!!!!!!!!

sinavd
04-03-2015, 17:35
درود بر همگی ، دوستان راهنمایی می کنید با این کتابخونه چجوری می تونم موس یا کیبرد بسازم؟یه موس می خوام با ۴ تا کلید که حرکت در چهار جهت رو کنترل کنه

sinavd
07-03-2015, 10:14
دوستان لطفا یکی راهنمایی کنه.با پیاده سازی hid به صورت نرم افزاری فک نکنم چیزی که من می خوام خیلی پیچیده باشه

CINAPA
29-08-2015, 18:38
سلام
دوستان كسي برنامه طرف vb6 را داره ممنون ميشم قرار بده
يا لااقل لينك محيط برنامه vb.net را بزار تا دانلود كنيم. من نتونستم تو نت پيداش كنم .:x

6759
25-09-2015, 16:12
سلام خسته نباشید:wink:
من مدار رو درست کردم قسمت هایی که دیتا از سمت کامپیوتر میاد به میکرو خوب عمل میکنه(مثلا کنترل 2 led کار میکنه) ولی قسمت هایی که دیتا از میکرو به pc باید بره اصلا کار نمیکنه؟؟؟؟؟(مثلا قسمت adc و یا ارسال اعداد به pc کار نمیکنه؟؟؟؟؟؟؟
در ضمن هیچ تغییری تو سورس کد ها ندادم همون کد آقای رحیمی هست.؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ فکر میکنید اشکال از کجاست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
ویندوز هم 7 و نسخه هم 64 بیتی
با تشکر

sim_900
01-01-2016, 01:21
سلام و خسته نباشید خدمت مهندسین و اساتید گرامی این برنامه رو سمپلهاشو که کامپایل میکنم این خطارو میده بهم array<> non array mismatch bascom
مهندس فرمودن که ورژن قدیمیه ولی من ورژن 2015 یعنی 2.0.7.8 رو نصب کردم رو 6 و 5 هم همین خطا رو داشت راهنماییم کنید ممنونم

9tin
13-08-2016, 16:52
سلام با اینکه چند ماه از این سوالتون گذشته اما برای استفاده ی دیگران بگم که برای من هم همین مشکل پیش اومد.. گویا این کتابخانه با ورژن 2.0.7.8 سازگار نیست.. از ورژن پایینتر استفاده کنید.. 2.0.7.3 یا 2.0.7.5 من از 2.0.7.5 استفاده کردم.

asalasadi
13-07-2017, 16:51
سلام
اززحماتی که بابت سایت میکشیدکه دوستان استفاده کنندکمال تشکررادارم
من یک مداری دارم اتمگا۱۶هست ویک سری اطلاعات رودرال سی دی کوچک خودمدارنشان میدهدوخروجی دیتاهم داره اطلاعات روتوی کامپیوترببینم ولی من سی دیشو گم کردم
میشه برنامه ای بدیدکه بتونم اطلاعات ال سی دی رو روی کامپیوترببینم برنامه اتمگابانرم افزاربیسیک نوشته شده
کمک کنید ممنون میشم

- - - Updated - - -

اقای مهندس فایلی که کامپایلرشده وپروگرام شده داخل ای سی ومن باپروگرام خواندم وبصورت hdmlوهگز ذخیرش کردم میتوانم دوباره دکامپایلرکنم یعنی بصورت نوشته های قبل از کامپایلردربیارم ممنون میشم جواب بدید

morteza_rk
15-07-2017, 12:53
سلام

کاری که شما می خواید انجام بدید ، شدنی نیست.

asalasadi
24-07-2017, 02:17
سلام

کاری که شما می خواید انجام بدید ، شدنی نیست.

سلام اقای مهندس درباره سوال اولیم که برنامه ای که خواستم جهت دیدن داده ها که همان ارقام ونوشته های روی ال سیدی هست که ای سی اتمگا۱۶استفاده شده بایدبگم من سی دی خودشوداشتم که برنامه نویس خودش رایت کرده بودوهرچیزی که روی ال سیدی نشون میدادروی کامپیودرهم نشون میداد مثل برنامه تابلوروان نشون میداد

morteza_rk
24-07-2017, 11:54
سلام اقای مهندس درباره سوال اولیم که برنامه ای که خواستم جهت دیدن داده ها که همان ارقام ونوشته های روی ال سیدی هست که ای سی اتمگا۱۶استفاده شده بایدبگم من سی دی خودشوداشتم که برنامه نویس خودش رایت کرده بودوهرچیزی که روی ال سیدی نشون میدادروی کامپیودرهم نشون میداد مثل برنامه تابلوروان نشون میداد

برای ارتباط میکرو با پورت سریال کامپیوتر می تونید از برنامه هایپر ترمینال استفاده کنید. البته توی ویندوز 7 و بعداز اون این برنامه دیگه حذف شده ولی شما می تونید برنامه TeraTerm رو از اینترنت دانلود و نصب کنید و اطلاعات رسیده به پورت سریال کامپیوترو ببینید.

asalasadi
02-08-2017, 03:41
سلام

کاری که شما می خواید انجام بدید ، شدنی نیست.

سلام اقای مهندس توی سوال اولم نوشتم که سی دی به من داده بود داده های ایسی اتمگا۱۶راتوی کامپیوترمیدیدم مثل ال سی دی گرافیکی که دستگاه داره ونشان میده روتوی کامپیوترمیدیدم ولی سی دی را گم کرده ام

morteza_rk
03-08-2017, 00:32
منم گفتم دیگه. داده های اتمگا16 به احتمال زیاد با پورت com می رفت توی کامپیوتر. یا اگه کامپیوتر پورت com نداره با تبدیل com به usb . اسم نرم افزارهاشم گفتم.

fafam123
26-10-2020, 20:22
علاوه بر تنظیمات زیر :
ckles0 1
ckles1 1
ckles2 1
ckles3 1
sut0 1
sut1 1
باید تو فیوز بیت های بالا مقدار
CKOPT = 1
باشه تا مطابق دیتا شیت atmega8a میکرو قادر باشه با فرکانس 12 مگا هرتز کار کنه