اطلاعیه

Collapse
No announcement yet.

اگه دو جفتusart لازم باشه چیکار کنم؟

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

    #16
    پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

    با سلام
    من از usart با اینتراپت استفاده میکنم اما تازمانی که تو فرستنده از دستور get char استفاده نکردم میکروهام درست کار می کنند اما زمانی که این دستور مینویسم کلا ارتباطم قطع میشه
    از طرفی دوستان میگن باید تو اینتراپت اطلاعات رسیده شده رو بخونم چه طوری میتونم این کار بکنم ؟(یعنی خودن اطلاعات از سرویس وقفه )
    اما داخل کتاب اقای مهندس دالوندی بخش سریال نوشته نباید داخل این سرویس وقفه چیزی بنویسید
    خواهشمند کمک کنید بدجور گیر کردم
    با تشکر فراوان
    دست همتون درد نکنه .
    داناترین مردم کسی است که دانش مردم را با دانش خود جمع کند
    پیامبر اکرم (ص)
    علی ابن ابیطالب : همانا پاداش دانشمند از شخص روزه دار و شب زنده دارکه در راه خدا جهاد می کند بیشتر است
    اگر میخواهید دشمنان خود را تنبیه کنید به دوستان خود محبت کنید.(کورش کبیر)

    دیدگاه


      #17
      پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

      نوشته اصلی توسط eh.sedaghat
      با سلام
      من از usart با اینتراپت استفاده میکنم اما تازمانی که تو فرستنده از دستور get char استفاده نکردم میکروهام درست کار می کنند اما زمانی که این دستور مینویسم کلا ارتباطم قطع میشه
      از طرفی دوستان میگن باید تو اینتراپت اطلاعات رسیده شده رو بخونم چه طوری میتونم این کار بکنم ؟(یعنی خودن اطلاعات از سرویس وقفه )
      اما داخل کتاب اقای مهندس دالوندی بخش سریال نوشته نباید داخل این سرویس وقفه چیزی بنویسید
      خواهشمند کمک کنید بدجور گیر کردم
      با تشکر فراوان
      دست همتون درد نکنه .
      سلام
      - در فرستنده زمانی که میخوای از دستور getchar استفاده کنی، ایا تنظیم کردی که usart در وضعیت گیرندگی هم قرار داشته باشه؟ برای اینکه بتونی هم داده ارسال کنی و هم دریافت کنی، یوزارت رو هم باید به عنوان فرستنده و هم به عنوان گیرنده، بایست تنظیم کنی

      - وقفه اینترابپ گیرنده یوزارت، بعد از اینکه برای میکرو حالت گیرندگی رو تعریف کردی، اینطور عمل میکنه: هر موقع یک داده ی جدید برسه، یک وقفه ایجاد میشه و با توجه به اولویت بندی وقفه ها، اگر وقفه ی دیگه ای همزمان صادر نشده باشه، به وقفه رسیدگی میکنه!

      - فرض کن میخوای داده ی دریافتی با usart رو درون متغیری با نام received_data از نوع unsigned char (در صورتی که ارسال اطلاعات 8 بیتی باشد) بریزی. کافیه در زیر برنامه ی وقفه بنویسی:
      کد:
      received_data=UDR;
      1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
      2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
      3: دلا معاش چنان کن که گر بلغزد پای *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

      دیدگاه


        #18
        پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

        با سلام
        نوشته اصلی توسط محمدصادق رستمی
        سلام
        - در فرستنده زمانی که میخوای از دستور getchar استفاده کنی، ایا تنظیم کردی که usart در وضعیت گیرندگی هم قرار داشته باشه؟ برای اینکه بتونی هم داده ارسال کنی و هم دریافت کنی، یوزارت رو هم باید به عنوان فرستنده و هم به عنوان گیرنده، بایست تنظیم کنی

        - وقفه اینترابپ گیرنده یوزارت، بعد از اینکه برای میکرو حالت گیرندگی رو تعریف کردی، اینطور عمل میکنه: هر موقع یک داده ی جدید برسه، یک وقفه ایجاد میشه و با توجه به اولویت بندی وقفه ها، اگر وقفه ی دیگه ای همزمان صادر نشده باشه، به وقفه رسیدگی میکنه!

        - فرض کن میخوای داده ی دریافتی با usart رو درون متغیری با نام received_data از نوع unsigned char (در صورتی که ارسال اطلاعات 8 بیتی باشد) بریزی. کافیه در زیر برنامه ی وقفه بنویسی:
        کد:
        received_data=UDR;
        نوشته اصلی توسط محمدصادق رستمی
        سلام
        - در فرستنده زمانی که میخوای از دستور getchar استفاده کنی، ایا تنظیم کردی که usart در وضعیت گیرندگی هم قرار داشته باشه؟ برای اینکه بتونی هم داده ارسال کنی و هم دریافت کنی، یوزارت رو هم باید به عنوان فرستنده و هم به عنوان گیرنده، بایست تنظیم کنی

        - وقفه اینترابپ گیرنده یوزارت، بعد از اینکه برای میکرو حالت گیرندگی رو تعریف کردی، اینطور عمل میکنه: هر موقع یک داده ی جدید برسه، یک وقفه ایجاد میشه و با توجه به اولویت بندی وقفه ها، اگر وقفه ی دیگه ای همزمان صادر نشده باشه، به وقفه رسیدگی میکنه!

        - فرض کن میخوای داده ی دریافتی با usart رو درون متغیری با نام received_data از نوع unsigned char (در صورتی که ارسال اطلاعات 8 بیتی باشد) بریزی. کافیه در زیر برنامه ی وقفه بنویسی:
        کد:
        received_data=UDR;
        من هم همین کار مردم اما مقدار متغیرم همیشه صفر هست حالا من کدهام قرار میدم ممنون میشم کمکم کنید
        بازم ممنون
        داناترین مردم کسی است که دانش مردم را با دانش خود جمع کند
        پیامبر اکرم (ص)
        علی ابن ابیطالب : همانا پاداش دانشمند از شخص روزه دار و شب زنده دارکه در راه خدا جهاد می کند بیشتر است
        اگر میخواهید دشمنان خود را تنبیه کنید به دوستان خود محبت کنید.(کورش کبیر)

        دیدگاه


          #19
          پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

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

          #include <mega128a.h>
          #include <alcd.h>
          #include <delay.h>
          #include <stdlib.h>
          #include <delay.h>
          #include <stdio.h>
          unsigned char header=0x8, adr=0x2,data=0x5 ;
          int data_rec;
          int data8;
          char lcd[15];
          // START USART CONFIGGRATION //*********************************----------------------------------------
          #ifndef RXB8
          #define RXB8 1
          #endif
          #ifndef TXB8
          #define TXB8 0
          #endif
          #ifndef UPE
          #define UPE 2
          #endif
          #ifndef DOR
          #define DOR 3
          #endif
          #ifndef FE
          #define FE 4
          #endif
          #ifndef UDRE
          #define UDRE 5
          #endif
          #ifndef RXC
          #define RXC 7
          #endif

          #define FRAMING_ERROR (1<<FE)
          #define PARITY_ERROR (1<<UPE)
          #define DATA_OVERRUN (1<<DOR)
          #define DATA_REGISTER_EMPTY (1<<UDRE)
          #define RX_COMPLETE (1<<RXC)

          #define RX_BUFFER_SIZE1 16
          char rx_buffer1[RX_BUFFER_SIZE1];
          #if RX_BUFFER_SIZE1 <= 256
          unsigned char rx_wr_index1,rx_rd_index1,rx_counter1;
          #else
          unsigned int rx_wr_index1,rx_rd_index1,rx_counter1;
          #endif
          bit rx_buffer_overflow1;
          interrupt [USART1_RXC] void usart1_rx_isr(void)
          {
          char status,data;
          status=UCSR1A;
          data=UDR1;
          if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
          {
          rx_buffer1[rx_wr_index1++]=data;
          #if RX_BUFFER_SIZE1 == 256
          if (++rx_counter1 == 0) rx_buffer_overflow1=1;
          #else
          if (rx_wr_index1 == RX_BUFFER_SIZE1) rx_wr_index1=0;
          if (++rx_counter1 == RX_BUFFER_SIZE1)
          {
          rx_counter1=0;
          rx_buffer_overflow1=1;
          }
          #endif
          }
          }

          // Get a character from the USART1 Receiver buffer
          #pragma used+
          char getchar1(void)
          {
          char data;
          while (rx_counter1==0);
          data=rx_buffer1[rx_rd_index1++];
          #if RX_BUFFER_SIZE1 != 256
          if (rx_rd_index1 == RX_BUFFER_SIZE1) rx_rd_index1=0;
          #endif
          #asm("cli&quot
          --rx_counter1;
          #asm("sei&quot
          return data;
          }
          #pragma used-
          // USART1 Transmitter buffer
          #define TX_BUFFER_SIZE1 16
          char tx_buffer1[TX_BUFFER_SIZE1];

          #if TX_BUFFER_SIZE1 <= 256
          unsigned char tx_wr_index1,tx_rd_index1,tx_counter1;
          #else
          unsigned int tx_wr_index1,tx_rd_index1,tx_counter1;
          #endif

          // USART1 Transmitter interrupt service routine
          interrupt [USART1_TXC] void usart1_tx_isr(void)
          {
          if (tx_counter1)
          {
          --tx_counter1;
          UDR1=tx_buffer1[tx_rd_index1++];
          #if TX_BUFFER_SIZE1 != 256
          if (tx_rd_index1 == TX_BUFFER_SIZE1) tx_rd_index1=0;
          #endif
          }
          }

          // Write a character to the USART1 Transmitter buffer
          #pragma used+
          void putchar1(char c)
          {
          while (tx_counter1 == TX_BUFFER_SIZE1);
          #asm("cli&quot
          if (tx_counter1 || ((UCSR1A & DATA_REGISTER_EMPTY)==0))
          {
          tx_buffer1[tx_wr_index1++]=c;
          #if TX_BUFFER_SIZE1 != 256
          if (tx_wr_index1 == TX_BUFFER_SIZE1) tx_wr_index1=0;
          #endif
          ++tx_counter1;
          }
          else
          UDR1=c;
          #asm("sei&quot
          }
          #pragma used-

          // FINISH USART CONFIGRATION //*************************************************//-----------------------------
          void recived_data(void){
          UCSR1B=(1<<RXEN1)|(1<<TXEN1)|(1<&lt ;UCSZ12); // 9th bit = 0
          //data_rec=getchar1();
          }

          // START TIMERO FOR RECIVED DATA //*********************************************-----------------------
          int sec, min2 , h1, h2;
          char s1[15];
          interrupt [TIM0_OVF] void timer0_ovf_isr(void)
          {
          h2++;
          if(h2==2500){
          recived_data();
          h2=0;
          }
          }



          // FINISH TIMERO FOR RECIVED DATA //*****************--------------------------------------------------------

          void main(void)
          {
          PORTA=0x00;
          DDRA=0x00;
          PORTB=0x00;
          DDRB=0x00;
          PORTC=0x00;
          DDRC=0x00;
          PORTD=0x00;
          DDRD=0x00;
          PORTE=0x00;
          DDRE=0x00;
          PORTF=0x00;
          DDRF=0x00;
          PORTG=0x00;
          DDRG=0x00;
          UCSR1A=0x00;
          UCSR1B=0xD8;
          UCSR1C=0x8E;
          UBRR1H=0x00;
          UBRR1L=0x44;
          ASSR=0x00;
          TCCR0=0x01;
          TCNT0=0x00;
          OCR0=0xFF;
          TIMSK=0x01;
          #asm("sei&quot
          lcd_init(20);
          while (1)
          {
          // UCSR1B=(0<<RXEN1)|(1<<TXEN1)|(1<&lt ;UCSZ12); // 9th bit = 0

          // lcd_gotoxy(0,1);
          // lcd_puts("hadi"
          // delay_ms(1);
          *********************************** ********************
          ***************************** // data8= getchar(); *******************
          ************************************************** ******** *********************** *
          lcd_gotoxy(0,0);
          itoa(data8,lcd);
          lcd_puts(lcd);
          delay_ms(100);
          putchar1 (adr);
          putchar1 (data);
          delay_ms(1);
          putchar1 (header);
          delay_ms(1);
          delay_ms(1);
          }
          }
          داناترین مردم کسی است که دانش مردم را با دانش خود جمع کند
          پیامبر اکرم (ص)
          علی ابن ابیطالب : همانا پاداش دانشمند از شخص روزه دار و شب زنده دارکه در راه خدا جهاد می کند بیشتر است
          اگر میخواهید دشمنان خود را تنبیه کنید به دوستان خود محبت کنید.(کورش کبیر)

          دیدگاه


            #20
            پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

            اینم کد SLAVE
            /************************************************** ***
            This program was produced by the
            CodeWizardAVR V2.05.3 Standard
            Automatic Program Generator
            © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
            http://www.hpinfotech.com

            Project :
            Version :
            Date : 8/19/2013
            Author : Lenovo
            Company :
            Comments:


            Chip type : ATmega8
            Program type : Application
            AVR Core Clock frequency: 16.000000 MHz
            Memory model : Small
            External RAM size : 0
            Data Stack size : 256
            ************************************************** ***/

            #include <mega8.h>
            #include <alcd.h>
            #include <stdio.h>
            #include <stdlib.h>
            #include <delay.h>
            unsigned char data8;
            char data;
            char lcd[15];



            // START USART CONFIGRATION //******************************************//---------------------------------
            #ifndef RXB8
            #define RXB8 1
            #endif
            #ifndef TXB8
            #define TXB8 0
            #endif
            #ifndef UPE
            #define UPE 2
            #endif
            #ifndef DOR
            #define DOR 3
            #endif
            #ifndef FE
            #define FE 4
            #endif
            #ifndef UDRE
            #define UDRE 5
            #endif
            #ifndef RXC
            #define RXC 7
            #endif
            #define FRAMING_ERROR (1<<FE)
            #define PARITY_ERROR (1<<UPE)
            #define DATA_OVERRUN (1<<DOR)
            #define DATA_REGISTER_EMPTY (1<<UDRE)
            #define RX_COMPLETE (1<<RXC)
            #define RX_BUFFER_SIZE 16
            char rx_buffer[RX_BUFFER_SIZE];
            #if RX_BUFFER_SIZE <= 256
            unsigned char rx_wr_index,rx_rd_index,rx_counter;
            #else
            unsigned int rx_wr_index,rx_rd_index,rx_counter;
            #endif

            bit rx_buffer_overflow;

            interrupt [USART_RXC] void usart_rx_isr(void)
            {
            char status,data;
            status=UCSRA;
            data=UDR;
            if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
            {
            rx_buffer[rx_wr_index++]=data;
            #if RX_BUFFER_SIZE == 256
            // special case for receiver buffer size=256
            if (++rx_counter == 0) rx_buffer_overflow=1;
            #else
            if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
            if (++rx_counter == RX_BUFFER_SIZE)
            {
            rx_counter=0;
            rx_buffer_overflow=1;
            }
            #endif
            }
            }
            #ifndef _DEBUG_TERMINAL_IO_
            #define _ALTERNATE_GETCHAR_
            #pragma used+
            char getchar(void)
            {
            char data;
            while (rx_counter==0);
            data=rx_buffer[rx_rd_index++];
            #if RX_BUFFER_SIZE != 256
            if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
            #endif
            #asm("cli&quot
            --rx_counter;
            #asm("sei&quot
            return data;
            }
            #pragma used-
            #endif
            #define TX_BUFFER_SIZE 16
            char tx_buffer[TX_BUFFER_SIZE];
            #if TX_BUFFER_SIZE <= 256
            unsigned char tx_wr_index,tx_rd_index,tx_counter;
            #else
            unsigned int tx_wr_index,tx_rd_index,tx_counter;
            #endif
            interrupt [USART_TXC] void usart_tx_isr(void)
            {
            if (tx_counter)
            {
            --tx_counter;
            UDR=tx_buffer[tx_rd_index++];
            #if TX_BUFFER_SIZE != 256
            if (tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
            #endif
            }
            }

            #ifndef _DEBUG_TERMINAL_IO_
            #define _ALTERNATE_PUTCHAR_
            #pragma used+
            void putchar(char c)
            {
            while (tx_counter == TX_BUFFER_SIZE);
            #asm("cli&quot
            if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
            {
            tx_buffer[tx_wr_index++]=c;
            #if TX_BUFFER_SIZE != 256
            if (tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
            #endif
            ++tx_counter;
            }
            else
            UDR=c;
            #asm("sei&quot
            }
            #pragma used-
            #endif

            // FINISH USART CONFIGRATION //**************************************//-------------------------------------

            void main(void)
            {
            // Declare your local variables here

            // Input/Output Ports initialization
            // Port B initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
            PORTB=0x00;
            DDRB=0x00;

            // Port C initialization
            // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
            // State6=T State5=T State4=T State3=T State2=T State1=T State0=T
            PORTC=0x00;
            DDRC=0x00;

            // Port D initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
            PORTD=0x00;
            DDRD=0x00;

            // USART initialization
            // Communication Parameters: 8 Data, 2 Stop, No Parity
            // USART Receiver: On
            // USART Transmitter: On
            // USART Mode: Asynchronous
            // USART Baud Rate: 14400
            UCSRA=0x00;
            UCSRB=0xD8;
            UCSRC=0x8E;
            UBRRH=0x00;
            UBRRL=0x44;

            // Alphanumeric LCD initialization
            // Connections are specified in the
            // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
            // RS - PORTB Bit 0
            // RD - PORTB Bit 1
            // EN - PORTB Bit 2
            // D4 - PORTB Bit 4
            // D5 - PORTB Bit 5
            // D6 - PORTB Bit 6
            // D7 - PORTB Bit 7
            // Characters/line: 20
            lcd_init(20);

            // Global enable interrupts
            #asm("sei&quot

            while (1)
            {
            // putchar (32);
            // delay_ms(1);
            // putchar (5);
            // delay_ms(1);
            /// putchar (7);
            // delay_ms(1);
            lcd_gotoxy(0,1);
            lcd_puts("hadi"
            data8= getchar();
            lcd_gotoxy(0,0);
            itoa(data8,lcd);
            lcd_puts(lcd);
            delay_ms(100);
            }
            }
            داناترین مردم کسی است که دانش مردم را با دانش خود جمع کند
            پیامبر اکرم (ص)
            علی ابن ابیطالب : همانا پاداش دانشمند از شخص روزه دار و شب زنده دارکه در راه خدا جهاد می کند بیشتر است
            اگر میخواهید دشمنان خود را تنبیه کنید به دوستان خود محبت کنید.(کورش کبیر)

            دیدگاه


              #21
              پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

              سلام
              یه کار دیگه بکنیم
              شما بگید میخواید چه کاری انجام بدید [glow=red,2,300]دقیقا[/glow]؟
              من یک برنامه بنویسم بذارم اینجا.
              1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
              2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
              3: دلا معاش چنان کن که گر بلغزد پای *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

              دیدگاه


                #22
                پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

                سلام
                من میخوام چند تا میکرو رو باهم شبکه کنم با 485 یک ارتباط دو طرفه باشه
                ب این صورت که مستمر اطلاعات بفرسته و اسلیو با دریافت اطلاعات برنامه مورد نظر اجرا کنه و سپس به یکی از پایه های اسلیو یک شاسی وصل کنم حالا زمانی که شاسی خورد اسلیو به مستر اطلاعات بفرسته با دریافت اطلاعات از طریق مستر متناظر با ادرس اسلیو یکی از خورجی هارو فعال کنه (به ازای هر اسلیو در مستر یک خروجی مستقل داشته باشم )
                برنامه ای که خودم نوشتم اپلود میکنم شما هم نگاهش نکنید مشکلش بگین خوشحال میشم
                بازم ممنون
                داناترین مردم کسی است که دانش مردم را با دانش خود جمع کند
                پیامبر اکرم (ص)
                علی ابن ابیطالب : همانا پاداش دانشمند از شخص روزه دار و شب زنده دارکه در راه خدا جهاد می کند بیشتر است
                اگر میخواهید دشمنان خود را تنبیه کنید به دوستان خود محبت کنید.(کورش کبیر)

                دیدگاه


                  #23
                  پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

                  دوباره سلام اینم لینک فایلم


                  http://ehsedaghat.persiangig.com/document/usart%20_modbus.rar/download
                  داناترین مردم کسی است که دانش مردم را با دانش خود جمع کند
                  پیامبر اکرم (ص)
                  علی ابن ابیطالب : همانا پاداش دانشمند از شخص روزه دار و شب زنده دارکه در راه خدا جهاد می کند بیشتر است
                  اگر میخواهید دشمنان خود را تنبیه کنید به دوستان خود محبت کنید.(کورش کبیر)

                  دیدگاه


                    #24
                    پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

                    با سلام
                    دوستان گرامی جواب ندادی تا .....................خودم درستش کردم . :nice:
                    حالا یک مشکل دیگه دارم اونم اینکه من میخوام از توابع puts استفاده کنم اما این توابع محدود شدن و فقط قلبلیت استفاده در usart0 رو دارن
                    اما من دارم از usart 1(mega128) استفاده میکنم
                    اگر کسی ره حلی داره کمکم کنه
                    با تشکر
                    داناترین مردم کسی است که دانش مردم را با دانش خود جمع کند
                    پیامبر اکرم (ص)
                    علی ابن ابیطالب : همانا پاداش دانشمند از شخص روزه دار و شب زنده دارکه در راه خدا جهاد می کند بیشتر است
                    اگر میخواهید دشمنان خود را تنبیه کنید به دوستان خود محبت کنید.(کورش کبیر)

                    دیدگاه


                      #25
                      پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

                      سلام.یه سوال فنی.من از سریال uart نرم فزاری چند کاناله استفاده می کنم با کریستال های مخصوص بخودش.اما هنوزم مقداری خطا در انتقال دیتا دارم. شما چطور؟انتقال دیتاتون کاملا بدون خطاست؟؟

                      دیدگاه


                        #26
                        پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

                        با سلام
                        من برای اینکه شبکه ای با ضریب امنیت بالا داشته باشم دارام روی پروتکل مدباس کار میکنم
                        به این صورت که دیتا رو طبق قوانین این پروتکل ارسال میکنم تا خطا به صفر برسه
                        داناترین مردم کسی است که دانش مردم را با دانش خود جمع کند
                        پیامبر اکرم (ص)
                        علی ابن ابیطالب : همانا پاداش دانشمند از شخص روزه دار و شب زنده دارکه در راه خدا جهاد می کند بیشتر است
                        اگر میخواهید دشمنان خود را تنبیه کنید به دوستان خود محبت کنید.(کورش کبیر)

                        دیدگاه


                          #27
                          پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

                          نوشته اصلی توسط eh.sedaghat
                          دوستان گرامی جواب ندادی تا .....................خودم درستش کردم . :nice:
                          حالا یک مشکل دیگه دارم اونم اینکه من میخوام از توابع puts استفاده کنم اما این توابع محدود شدن و فقط قلبلیت استفاده در usart0 رو دارن
                          اما من دارم از usart 1(mega128) استفاده میکنم
                          اگر کسی ره حلی داره کمکم کنه
                          با تشکر
                          سلام
                          قرار بود برنامه بذارم
                          اما شرمنده، یه مسافرت پیش اومد
                          دسترسی به کامپیوتر و اینترنت نداشتم :cry2:
                          عاقبت جوینده یابنده بود
                          حالا روشی هم که استفاده کردی
                          و یا اگه مشکلی رو برطرف کردی
                          بگو تا دیگر دوستان هم بهره برداری کنن :applause:
                          اما در مورد مشکلی که گفتی!
                          قاعدتا نباید چنین مشکلی باشه
                          و اگه باشه بخاطر اینه که از نرم افزارهای کرک شده استفاده میکنیم!
                          اما خب! راه حل داره :read:
                          اگه روش کلی دریافت داده از طریق usart رو بلد باشی
                          و اسم رجیسترهای مورد نظرش رو بدونی
                          میتونی بدون اینکه از دستورات آماده ی کتابخونه ها استفاده کنی
                          خودت داده ها رو دریافت کنی
                          یعنی کاری که کتابخونه انجام میده
                          خودت با چندین خط برنامه مینویسی!
                          برای اینکار از دیتاشیت خود شرکت اتمل استفاده کن!
                          1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
                          2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
                          3: دلا معاش چنان کن که گر بلغزد پای *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                          دیدگاه


                            #28
                            پاسخ : اگه دو جفتusart لازم باشه چیکار کنم؟

                            نوشته اصلی توسط محمدصادق رستمی
                            سلام
                            قرار بود برنامه بذارم
                            اما شرمنده، یه مسافرت پیش اومد
                            دسترسی به کامپیوتر و اینترنت نداشتم :cry2:
                            عاقبت جوینده یابنده بود
                            حالا روشی هم که استفاده کردی
                            و یا اگه مشکلی رو برطرف کردی
                            بگو تا دیگر دوستان هم بهره برداری کنن :applause:
                            اما در مورد مشکلی که گفتی!
                            قاعدتا نباید چنین مشکلی باشه
                            و اگه باشه بخاطر اینه که از نرم افزارهای کرک شده استفاده میکنیم!
                            اما خب! راه حل داره :read:
                            اگه روش کلی دریافت داده از طریق usart رو بلد باشی
                            و اسم رجیسترهای مورد نظرش رو بدونی
                            میتونی بدون اینکه از دستورات آماده ی کتابخونه ها استفاده کنی
                            خودت داده ها رو دریافت کنی
                            یعنی کاری که کتابخونه انجام میده
                            خودت با چندین خط برنامه مینویسی!
                            برای اینکار از دیتاشیت خود شرکت اتمل استفاده کن!
                            با سلام
                            برای حل مشکل کار خاصی نکردم فقط همان طور که دوستان گفتند به جای استفاده از دستور get char داخل وقفه دریافت اطلاعات گرفتم ریختم داخل متغییر و بعد ازش استفاده کردم
                            اما راجب مشکل دوم
                            یک راه امروز به ذهنم رسید هنوز نمی دونم جواب میده یانه اما اگه جواب گرفتم لینجا توضیح میدم چیکار کردم .

                            داناترین مردم کسی است که دانش مردم را با دانش خود جمع کند
                            پیامبر اکرم (ص)
                            علی ابن ابیطالب : همانا پاداش دانشمند از شخص روزه دار و شب زنده دارکه در راه خدا جهاد می کند بیشتر است
                            اگر میخواهید دشمنان خود را تنبیه کنید به دوستان خود محبت کنید.(کورش کبیر)

                            دیدگاه

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