قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 10-11-2014, 10:34 AM المشاركة 9   
افتراضي تكملة الخطوة الثانية.....



السلام عليكم...
الخطوة الثانية .............
الان نأتي الى برنامج الميكروسي بالنسبة الى الاعدادات هي كالأتي

ثم نقوم بتفعيل هذه الخصائص
كود:
PLLDIV_5_1L
CPUDIV_OSC1_PLL2_1L
USBDIV_2_1L
FOSC_HSPLL_HS_1H
FCMEM_OFF_1H
IESO_OFF_1H
PWRT_ON_2L
BOR_ON_2L
BORV_43_2L
VREGEN_ON_2L
WDT_OFF_2H
WDTPS_256_2H
MCLRE_ON_3H
LPT1OSC_OFF_3H
PBADEN_OFF_3H
CCP2MX_ON_3H
STVREN_ON_4L
LVP_OFF_4L
ICPRT_OFF_4L
XINST_OFF_4L
DEBUG_OFF_4L
ان شاء الله للحديث بقية يتبع.............

اعلانات

hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 11-11-2014, 10:06 AM المشاركة 10   
افتراضي تكملة الخطوة الثانية...........


السلام عليكم
معلومة مهمة جدا فى خصائص الميكروسي سيكون التردد 48MHZ اما فى الدائرة (سواء فى البروتس ام فى الواقع) ستكون 8MHZ....وتفسير هذا الكلام علميا هو بان الخصائص التي تم اختيارها فى الصور هي التي سوف ترتب السرعة ما بينها وبين الميكروكونترولار ...
فكرة البرنامج ان له نمط معين يجب اتباعه عند ما ترسل اليه داتا وهو : -
P=nt
P : حرف البداية
= : تابع لحرف البداية
N : قيمة البايت المراد ارسالة الي البيك
T : حرف النهاية
مثال : لو أردنا ارسال قيمة 35 الي البيك سيكون نص الرسالة كالتالي
P= 23t
اما بالنسبة الى شرح كود الميكروسي كل كود بجانبه الشرح ببساطه وظيفة الكود هو انه يعمل فى لوب مستمر الى ان يتم ارسال له الصيغه المطلوبة وهي P=NT وعند استلام الرسالة يقوم بأخذ القيمه N وإخراجها على البورت B

ان شاء الله للحديث بقية يتبع.............

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 11-11-2014, 10:10 AM المشاركة 11   
x6 تكملة الخطوة الثانية...........


السلام عليكم........
كود البيك بالميكروسي 8.2 ....
كود:
/******************************************************************
                  USB BASED MICROCONTROLLER OUTPUT PORT
                  =====================================

In this project a PIC18F4550 type microcontroller is connected
to a PC through the USB link.

A Visual Basic program runs on the PC where the user enters the
bits to be set or cleared on PORT B of the microcontroller. The
PC sends a command to the microcontroller requesting it to set
or reset the required bits of the microcontroller PORT B.

A 8MHz crystal is used to operate the microcontroller. The actual
CPU clock is raised to 48MHz by setting configuration bits. Also,
the USB module is operated with 48MHz.

The command sent by the PC to the microcontroller is in the
following format:

          P=nT

where n is the byte the microcontroller is requested to send to
PORT B of the microcontroller.

This program includes the USB code.

Author:   Dogan Ibrahim
Date:     September 2007
File:     USB1.C
*****************************************************************/

#include "C:\Program Files\Mikroelektronika\mikroC\Examples\EasyPic4\extra_examples\HID-library\USBdsc.c"

unsigned char Read_buffer[64];
unsigned char Write_buffer[64];
unsigned char num;
//
// Timer interrupt service routine
//
void interrupt()
{
  HID_InterruptProc();                  // Keep alive
  TMR0L = 100;                          // Re-load TMR0L
  INTCON.TMR0IF = 0;                    // Re-enable TMR0 interrupts
}


//
// Start of MAIN program
//
void main()
{

     ADCON1 = 0xFF;                      // Set PORT B to digital I/O
     TRISB = 0;                          // Set PORT B to outputs
     PORTB = 0;                          // Clear all outputs
//
// Set interrupt registers to power-on defaults
// Disable all interrupts
//
     INTCON=0;
     INTCON2=0xF5;
     INTCON3=0xC0;
     RCON.IPEN=0;
     PIE1=0;
     PIE2=0;
     PIR1=0;
     PIR2=0;
//
// Configure TIMER 0 for 3.3ms interrupts. Set prescaler to 256
// and load TMR0L to 100 so that the time interval for timer
// interrupts at 48MHz is 256*(256-100)*0.083 = 3.3ms
//
// The timer is in 8-bit mode by default
//
  T0CON  = 0x47;                         // Prescaler = 256
  TMR0L  = 100;                          // Timer count is 256-156 = 100
  INTCON.TMR0IE = 1;                     // Enable T0IE
  T0CON.TMR0ON = 1;                      // Turn Timer 0 ON
  INTCON = 0xE0;                         // Enable interrupts

//
// Enable USB port
//
   Hid_Enable(&Read_buffer, &Write_buffer);
   Delay_ms(1000);
   Delay_ms(1000);
//
// Read from the USB port. Number of bytes read is in num
//

   for(;;)                               // do forever
{
      num=0;
      while(num != 4)                    // Get 4 characters
      {num = Hid_Read();
      }
      if(Read_buffer[0] == 'P' && Read_buffer[1] == '=' && Read_buffer[3] == 'T')
      {
       if ( Read_buffer[2] =='Q' )
       {PORTB.f0=1;}
        if ( Read_buffer[2] =='R' )
       {PORTB.f1=1;}
       if ( Read_buffer[2] =='S' )
       {PORTB.f2=1;}
       if ( Read_buffer[2] =='T' )
       {PORTB.f3=1;}
       if ( Read_buffer[2] =='U' )
       {PORTB.f4=1;}
       if ( Read_buffer[2] =='V' )
       {PORTB.f5=1;}
       if ( Read_buffer[2] =='W' )
       {PORTB.f6=1;}
       if ( Read_buffer[2] =='X' )
       {PORTB.f7=1;}
        ///////////////////////////////////
        if ( Read_buffer[2] =='A' )
       {PORTB.f0=0;}
        if ( Read_buffer[2] =='B' )
       {PORTB.f1=0;}
       if ( Read_buffer[2] =='C' )
       {PORTB.f2=0;}
       if ( Read_buffer[2] =='D' )
       {PORTB.f3=0;}
       if ( Read_buffer[2] =='E' )
       {PORTB.f4=0;}
       if ( Read_buffer[2] =='F' )
       {PORTB.f5=0;}
      //  if ( Read_buffer[2] =='E' )         /// demo limit
   //  {PORTB.f4=0;}
     //  if ( Read_buffer[2] =='F' )
     //  {PORTB.f5=0;}

      }
 }
   Hid_Disable();

}


الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:
قديم 11-11-2014, 11:34 AM المشاركة 12   
افتراضي


ممتاز اخي

هل ممكن شرح مثال للبرنامج يعمل غلى يوسبي


hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 11-11-2014, 12:27 PM المشاركة 13   
x6 USB


ممتاز اخي

هل ممكن شرح مثال للبرنامج يعمل غلى يوسبي
مرحبا اخي
موضوعنا هو شرح كيفية ربط PIC18F4550 مع الحاسب الشخصي عن طريق منفذ USB بواسطة واجهة رسومية يتم تنفيذها علي برنامج #C

ارجو ان اكون اوصلت الفكرة


hamzazayyad
:: مهندس متميز ::
تاريخ التسجيل: Aug 2005
الدولة: موزنبيق
المشاركات: 696
نشاط [ hamzazayyad ]
قوة السمعة:
قديم 11-11-2014, 03:05 PM المشاركة 14   
افتراضي


موضوع وشرح اكت من رائع اخي حمدالله


hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 11-11-2014, 07:00 PM المشاركة 15   
x6 هذه شهادة اعتز بها من استاذي الكريم


موضوع وشرح اكت من رائع اخي حمدالله
هذه شهادة اعتز بها من استاذي الكريم



hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 12-11-2014, 09:19 AM المشاركة 16   
x6 تتمة المرحلة الثانية.......


السلام عليكم...........
تتمة المرحلة الثانية.... قبل تشغيل proteus لابد لنا من تحميل
البرنامج الأول هو Virtual USB Driver وهذا سنحتاجه لكي يتعرف الجهاز علي الدائرة كما لو كانت متصلة فعلا به ( ان شاء اله اشرح تنصبه في المشاركة التالية )
البرنامج الثاني : Jungo Windriver وهو برنامج يستخدم لعمل دريفر

LibUsbDotNet : package جاهز للاستخدام في برنامج #C

ملحوظة ... اضغط علي الروابط لتحميل البرامج
ان شاء الله للحديث بقية يتبع.............



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 04:59 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)