اطلاعیه

Collapse
No announcement yet.

آموزش میکروکنترولر PIC با MPLAB C

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

    نوشته اصلی توسط eshgh_namordeh
    سلام در زبان سی
    برای ارسال و دریافت سریال فقط از پایه های خاصی میشه استفاده کرد ؟
    یا میتونیم از تمام پایه های میکرو دستور ارسال و دریافت داشته باشیم ؟
    سلام.
    اگه از روش های نرم افزاری استفاده بشه، خیر نیازی نیست حتما پایه خاصی به کار گرفته بشه. ولی در این صورت CPU دائم مشغول خواهد بود، بر خلاف حالتی که از ماژول مخصوص اون روش ارتباطی استفاده میشه.

    دیدگاه


      پاسخ : آموزش میکروکنترولر PIC با MPLAB C

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

      من عرض پالس را با باد ریت 300 اندازه گرفتم یک زیر بذرنامه نوشتم که سه بایت را سریال ارسال کنه ، اینطوری دیکه سی پی یو فقط هنگام ارسال اطلاعات مشغول میشه دیگه درسته ؟

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

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

      دیدگاه


        پاسخ : آموزش میکروکنترولر PIC با MPLAB C

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

        من عرض پالس را با باد ریت 300 اندازه گرفتم یک زیر بذرنامه نوشتم که سه بایت را سریال ارسال کنه ، اینطوری دیکه سی پی یو فقط هنگام ارسال اطلاعات مشغول میشه دیگه درسته ؟

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

        دیدگاه


          پاسخ : آموزش میکروکنترولر PIC با MPLAB C

          با سلام به همه عزیزان
          می شه به برنامه نمونه برای USb با C18 بزارید. با فرستادن اطلاعات مشکل دارم
          اگه می شه هم اطلاعات بگیره و هم بفرسته :smile: :smile: :smile: :smile: :smile:

          دیدگاه


            پاسخ : آموزش میکروکنترولر PIC با MPLAB C

            سلام اقایون تورو خدا بگین مشکل این برنامم چیه که جواب نمیده. :angry:
            #include<p18f4550.h>
            #include<delays.h>
            #pragma config FOSC=HS,WDT=OFF,LVP=OFF,CPUDIV=OSC1_PLL2
            ///////////////////////
            void isr1(void);
            void p(void);
            void my_HIPERIO(void);
            #pragma code my_HIPERIO=0x08
            void my_HIPERIO(void)
            {
            _asm
            goto isr1
            _endasm
            }
            #pragma code
            #pragma interrupt isr1
            void isr1(void)
            {
            if(INTCONbits.INT0IF==1)p();
            }

            ///////////////////////
            void main (void)
            {
            TRISBbits.TRISB0=1;
            TRISC=255;
            TRISD=0;
            INTCONbits.INT0IF=0;
            INTCONbits.INT0IE=1;
            INTCONbits.PEIE=1;
            INTCONbits.GIE=1;
            while(1)
            {
            LATD=PORTC;
            }
            }
            void p(void)
            {
            LATD=255;
            Delay10KTCYx(100);
            INTCONbits.INT0IF=0;
            }

            دیدگاه


              پاسخ : آموزش میکروکنترولر PIC با MPLAB C

              با سلام احتراما در مورد منوی project mplab برای قسمتهای header files , important files , linker , library, loadable توضیح دهید که کار آنها برای چه و به چه صورت است . با تشکر

              دیدگاه


                پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                سلام خدمت دوستان و اساتید
                من تازه دارم pic را یاد میگیرم اما همین ابتدا به مشکل برخوردم.با mplabx هستش
                دستورات زیر ارور میده چرا؟؟؟
                TRISBbits.RB0=0;
                #include <p16f84a.h>

                دیدگاه


                  پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                  منظور از دستورات زیر چیست و چه کاری انجام میده:
                  typedef union {
                  struct {
                  unsigned TRISB0 :1;
                  unsigned TRISB1 :1;
                  unsigned TRISB2 :1;
                  unsigned TRISB3 :1;
                  unsigned TRISB4 :1;
                  unsigned TRISB5 :1;
                  unsigned TRISB6 :1;
                  unsigned TRISB7 :1;
                  };

                  دیدگاه


                    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                    سلام
                    من تو پروژه ای میخوام تاخیر مثلا میلی ثانیه تعریف کنم
                    اما فایل هدر زیر را هم اضافه میکنم.ارور میده میشه لطفا راهنماییم کنید
                    #include <delays.h>

                    دیدگاه


                      پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                      سلام یه سوال دارم تازه MPLAB را شروع کردم.با کامپایلر XC8
                      .اما برنامه ای که نوشتم چطور میشه دیباگر رافعال کرد و برنامه را اشکال زدایی نمود.چون اکثر گزینه های مربوط به دیباگ غیر فعال هستش

                      دیدگاه


                        پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                        سلام
                        برای نوشتن و خوندن eeprom dspic در mplab xc16 باید از چه توابعی استفاده کنیم ؟
                        کسی میدونه ؟
                        جدیدترین ویرایش توسط gh-m; ۲۲:۴۷ ۱۳۹۷/۰۹/۱۵.
                        * *

                        دیدگاه


                          پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                          من یه مداری بستم که بتونم چهار تا سون سگمنت را رفرش کنم و یه سوئیچی هم برای INT0 گذاشتم تا به ازای فشار دادن یکی به متغییر اضافه کنه و روی سگمنت نشان بده .اما چند تا مشکل برخوردم
                          1- نور سون سگمنت ها کم هستش (از ترانزیستور درایور هم استفاده کردم اما باز مشکلم حل نشد ) گفتم شاید مقدار تاخیر بین هر ررفرش کم هستش و نمیتونه ترانزیستور را روشن کنه واسه همین مقدار تاخیر را اضافه کردم اما در این حالت سون سگمنت ها نورش بهتر شد اما حالت رفرش به خوبی انجام نمیشه و شروع به چشمک زدن میکنه وقتی هم زمانو کم میکنم عیب چشمک زدن رفع میشه اما نور سون سگمنت ها کم هستش چه راه حلی پیشنهاد میکنید
                          2- زمانیکه سوئیچی که گفتم فشار میدم ومیخوام به مقدار متغییر اضافه بشه تا زمانیکه دستم روسوئیچ هست هیچ عکس العملی ندارم اما به محض برداشتن دستم یکی به متغییر اضافه میشه (در حالیکه در برنامه امدم و از وقفه استفاده کردم و نباید این گونه عمل کنه)
                          برنامه را میذارم
                          #include <stdio.h>
                          #include <stdlib.h>
                          #include <string.h>
                          #include <xc.h>
                          #define _XTAL_FREQ 4000000
                          #define Delay 10
                          void display(void);
                          const unsigned char segment[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6 F};
                          volatile unsigned int num=1234;


                          int main(int argc, char** argv) {
                          INTCONbits.GIE=1;
                          INTCONbits.T0IE=1;
                          INTCONbits.INT0E=1;
                          TRISC=0x00;
                          TRISD=0x00;
                          LATD=0x0F;
                          TRISB=0xF3;
                          T0CON=0x00;
                          T0CON=0x43;
                          TMR0L=0xF1; // evrey 1ms overfow
                          T0CONbits.TMR0ON=1;

                          while(1){
                          // CLRWDT();

                          }


                          return (EXIT_SUCCESS);
                          }


                          void interrupt T0(void){
                          if(INTCONbits.INT0E && INTCONbits.INT0F){
                          INTCONbits.INT0IF=0;
                          num++;
                          display();
                          }
                          if(INTCONbits.T0IE && INTCONbits.T0IF){
                          INTCONbits.T0IF=0;
                          display();

                          }

                          }

                          void display(void){
                          unsigned char a=0;
                          unsigned char i;
                          unsigned int num1=num;
                          for(i=0;i<4;++i){
                          LATD=0x00;// OFF ALL 7SEG
                          a=num1%10;
                          num1/=10;
                          LATC=segment[a];
                          switch (i){
                          case (0):
                          LATD=0xF1;
                          __delay_ms(Delay);
                          break;
                          case (1):
                          LATD=0x02;
                          __delay_ms(Delay);
                          break;
                          case(2):
                          LATD=0xF4;
                          __delay_ms(Delay);
                          break;
                          case(3):
                          LATD=0x08;
                          __delay_ms(Delay);
                          break;
                          }

                          }
                          }

                          دیدگاه


                            پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                            #include <p18f458.h>
                            #include <xlcd.h>
                            #include <delays.h>

                            void DelayFor18TCY(void)
                            {
                            Nop();Nop();Nop();Nop();Nop();Nop();Nop();Nop();No p();
                            Nop();Nop();Nop();Nop();Nop();Nop();Nop();Nop();No p();
                            }
                            void DelayPORXLCD(void)
                            {
                            Delay1KTCYx(15);
                            return;
                            }
                            void DelayXLCD(void)
                            {
                            Delay1KTCYx(5);
                            return;
                            }
                            void main()
                            {
                            unsigned char data="mahsa";
                            OpenXLCD(FOUR_BIT&LINES_5X7);
                            while(BusyXLCD());
                            WriteCmdXLCD(BLINK_ON&CURSOR_ON);
                            while(1)
                            {
                            WriteCmdXLCD(1);
                            while(BusyXLCD());
                            putrsXLCD("mahsa");
                            putsXLCD(data);
                            Delay10KTCYx(100);
                            }
                            }سلام میشه جواب بنده رو بده این کد من روی lcdکلمه مهسا چاب نمیشه!!!

                            دیدگاه


                              پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                              نوشته اصلی توسط mahsa.jamili نمایش پست ها
                              #include <p18f458.h>
                              #include <xlcd.h>
                              #include <delays.h>

                              void DelayFor18TCY(void)
                              {
                              Nop();Nop();Nop();Nop();Nop();Nop();Nop();Nop();No p();
                              Nop();Nop();Nop();Nop();Nop();Nop();Nop();Nop();No p();
                              }
                              void DelayPORXLCD(void)
                              {
                              Delay1KTCYx(15);
                              return;
                              }
                              void DelayXLCD(void)
                              {
                              Delay1KTCYx(5);
                              return;
                              }
                              void main()
                              {
                              unsigned char data="mahsa";
                              OpenXLCD(FOUR_BIT&LINES_5X7);
                              while(BusyXLCD());
                              WriteCmdXLCD(BLINK_ON&CURSOR_ON);
                              while(1)
                              {
                              WriteCmdXLCD(1);
                              while(BusyXLCD());
                              putrsXLCD("mahsa");
                              putsXLCD(data);
                              Delay10KTCYx(100);
                              }
                              }سلام میشه جواب بنده رو بده این کد من روی lcdکلمه مهسا چاب نمیشه!!!
                              با picاشنایی ندارم ولی در زبان سی بایدکتابخانه هایی که استفاده می شوند را دراول برنامه اینکلود بشه.
                              شما دراول برنامه تابع کار با رشته هایا همون #include <string.h> رافراخوانی نکردید.
                              eshop-hodhod.ir

                              دیدگاه


                                پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                                ببخشید سلام اگه میشه در مورد تولید خروجی انالوگ (PWM)در pic18f توضیح بدین با تشکر

                                دیدگاه

                                لطفا صبر کنید...
                                X