Thông báo

Collapse
No announcement yet.

arduino due sam3x

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • arduino due sam3x

    Thấy thiên hạ đua nhau vọc họ hàng nhà hắn, nên cũng bắt chước thủ sẵn 1 board, được cái em nó có library đầy đủ, ide và trình debug qua com, trình nạp code đều tích hợp chung 3 in 1 nên cũng thuận tay,....

    Cao thủ nào đó đã và đang vọc vọc cùng vào chém cho zui.

    Em nó đây
    Arduino - ArduinoBoardDue
    các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
    trên các dòng chip: stm32, lpc of nxp
    please cell phone: 01649895559

  • #2
    Bắt đầu: Mình nói về cấu trúc trình biên dịch trước đi

    Nếu bạn nào đã làm quen với trình dịch code của arduino thì có lẽ sẽ ko lạ gì với 2 hàm quen thuộc mà arduino luôn muốn bạn dùng

    void setup() {
    // put your setup code here, to run once:

    }

    void loop() {
    // put your main code here, to run repeatedly:

    }

    Và các bạn có thể khởi tạo 1 project bất kỳ từ 2 hàm cơ bản này
    Ví dụ như
    int led = 13;

    // the setup routine runs once when you press reset:
    void setup() {
    // initialize the digital pin as an output.
    pinMode(led, OUTPUT);
    }

    // the loop routine runs over and over again forever:
    void loop() {
    digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
    delay(1000); // wait for a second
    digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
    delay(1000); // wait for a second
    }

    Vậy bạn có tự hỏi hàm main() ở đâu ko?
    các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
    trên các dòng chip: stm32, lpc of nxp
    please cell phone: 01649895559

    Comment


    • #3
      Nguyên văn bởi nguyenvanvui Xem bài viết
      Bắt đầu: Mình nói về cấu trúc trình biên dịch trước đi

      Nếu bạn nào đã làm quen với trình dịch code của arduino thì có lẽ sẽ ko lạ gì với 2 hàm quen thuộc mà arduino luôn muốn bạn dùng

      void setup() {
      // put your setup code here, to run once:

      }

      void loop() {
      // put your main code here, to run repeatedly:

      }

      Và các bạn có thể khởi tạo 1 project bất kỳ từ 2 hàm cơ bản này
      Ví dụ như
      int led = 13;

      // the setup routine runs once when you press reset:
      void setup() {
      // initialize the digital pin as an output.
      pinMode(led, OUTPUT);
      }

      // the loop routine runs over and over again forever:
      void loop() {
      digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
      delay(1000); // wait for a second
      digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
      delay(1000); // wait for a second
      }

      Vậy bạn có tự hỏi hàm main() ở đâu ko?
      Đã chơi cái món arduino thì phần cứng có là ARM, AVR, PIC, MIPS thì code lập trình cũng chẳng khác nhau, người sử dụng thậm chí còn chẳng cần biết con chip của mình xài là loại nào (ARM, AVR, PIC, MIPS).

      Hơn nữa arduino language cũng chẳng phải là C hay C++ mà giống processing hơn ( IDE arduino xuất thân từ IDE processing).

      * hàm main() nằm trong file code thật mà nó sinh ra và dùng để biên soạn hex file thường nằm tại
      C:\Documents and Settings\[tên bạn]\Local Settings\Temp\[thư mục ngẫu nhiên]

      Bên trong thư mục này là code thật, lib thật, và cả hex file.

      Và tất nhiên người dùng arduino cũng chẳng cần quan tâm "hàm main() ở đâu" hay "code thật" nằm ở đâu.
      Từ chối trách nhiệm:
      Mọi thông tin từ ITX cung cấp với hi vọng nó có ích và không đi kèm với bất kì sự bảo đảm nào.
      Blog: http://mritx.blogspot.com

      Comment


      • #4
        Mod itx quả ko hổ danh cao thủ, đúng là cái mà arduino tạo ra là sự tiện dụng và đơn giản bóa mọi vấn đề coding cho dân lập trình, nhất là các bạn sv tập tành nhúng, vì nó đơn giản như việc visual stdio mà dùng library của c# vậy cứ việc lôi các hàm ra build, nạp là chạy, sự tiện dụng này cũng sẽ giúp rất nhiều cho các bạn ko fai là chuyên ngành điện tử, chẳng cần hiểu về kiến trúc arm hay avr mô tê cho nhiều hết.

        Nhưng nếu các bạn nào dân điện tử muốn hiểu sâu xa về vấn đề (phần cứng, thanh ghi,...) và vẫn muốn sử dụng ide và board này,thì vẫn có thể viết thành các hàm init, main mà ko cần 2 hàm setup hay loóp, chẳng hạn
        Thay vì
        void setup() {
        // put your setup code here, to run once:

        }

        void loop() {
        // put your main code here, to run repeatedly:

        }

        Bạn sẽ viết thành
        int main (void){
        init();
        while(1){

        }
        }

        Cách viết này sẽ giống như các trình biên dịch khác
        Đối với dân điện tử thì việc người ta quy định sẵn phần cứng cho các bạn thì quả là khó chịu thật,chẳng hạn như đk led mà chỉ cho port B nếu như dùng library của hắn.

        Ở đây mình muốn nói, với arduino ngoài việc dùng library các bạn vẫn có thể tự tạo 1 project như các ide khác.
        các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
        trên các dòng chip: stm32, lpc of nxp
        please cell phone: 01649895559

        Comment


        • #5
          Bài 2: led blinky
          /*----------------------*/

          #include <sam.h>

          const unsigned long led_mask[] = { PIO_PB12, PIO_PB13 };

          void LED_Init (void) {
          PMC->PMC_WPMR = 0x504D4300; /* Disable write protect */

          PMC->PMC_PCER0 = (1UL << ID_PIOB) ; /* enable PIOB clock */

          PIOB->PIO_PER =
          PIOB->PIO_OER =
          PIOB->PIO_PUDR =
          PIOB->PIO_OWER = (PIO_PB12 | PIO_PB13); /* Setup PIO_PB12..13 for LEDs */


          PMC->PMC_WPMR = 0x504D4301; /* Enable write protect */

          }

          void LED_On (unsigned int num) {
          PIOB->PIO_CODR = led_mask[num];
          }

          void LED_Off (unsigned int num) {
          PIOB->PIO_SODR = led_mask[num];

          }

          int main(void){

          LED_Init();


          while(1){
          LED_On(1);
          delay(1000);//ham delay co san trong thu vien cua ardiuno
          LED_Off(1);
          delay(1000);

          };

          }
          các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
          trên các dòng chip: stm32, lpc of nxp
          please cell phone: 01649895559

          Comment


          • #6
            Bài 3: giao tiếp cổng com

            #include <sam.h>
            #include <stdio.h>

            /* Clock Definitions */
            #define BAUD(b) ((SystemCoreClock + 8*b)/(16*b))

            /*----------------------------------*/
            void SER_Init (unsigned long baudrate) {

            PMC->PMC_WPMR = 0x504D4300; /* Disable write protect */

            PMC->PMC_PCER0 = ((1UL << ID_PIOA ) | /* enable PIOA clock */
            (1UL << ID_PIOE ) | /* enable PIOE clock */
            (1UL << ID_USART0) );/* enable USART0 clock */

            /* Configure USART0 for 115200 baud. */
            PIOE->PIO_PER =
            PIOE->PIO_OER =
            PIOE->PIO_PUDR = (PIO_PE14); /* Setup PA14 for USART0 enable */
            PIOE->PIO_CODR = (PIO_PE14); /* set Pin LOW to enable driver */
            for (i = 0; i < 0x500; i++) __NOP(); /* delay to power up driver */

            PIOA->PIO_IDR =
            PIOA->PIO_PUDR =
            PIOA->PIO_PDR = (PIO_PA10A_RXD0 | PIO_PA11A_TXD0);
            PIOA->PIO_ABSR &= ~(PIO_PA10A_RXD0 | PIO_PA11A_TXD0);

            USART0->US_CR = US_CR_RSTRX | US_CR_RSTTX;
            USART0->US_IDR = 0xFFFFFFFF;
            USART0->US_BRGR = BAUD(baudrate);
            USART0->US_MR = (0x0 << 0) | /* (USART) Normal */
            (0x0 << 4) | /* (USART) Clock */
            (0x3 << 6) | /* (USART) Character Length: 8 bits */
            (0x4 << 9) | /* (USART) No Parity */
            (0x0 << 12) | /* (USART) 1 stop bit */
            (0x0 << 14) ; /* (USART) Normal Mode */
            USART0->US_PTCR = US_PTCR_RXTDIS | US_PTCR_TXTDIS;
            USART0->US_CR = US_CR_RXEN | US_CR_TXEN;

            PMC->PMC_WPMR = 0x504D4301; /* Enable write protect */
            }

            int SER_PutChar (int c) {

            while (!(USART0->US_CSR & US_CSR_TXRDY));
            USART0->US_THR = c;

            return c;
            }

            int SER_GetChar (void) {

            while (!(USART0->US_CSR & US_CSR_RXRDY));
            return (USART0->US_RHR);
            }

            //retarget to using printf function in stdio lib
            struct __FILE { int handle; /* Add whatever you need here */ };
            FILE __stdout;
            FILE __stdin;

            int fputc(int c, FILE *f) {
            return (SER_PutChar(c));
            }

            int fgetc(FILE *f) {
            return (SER_GetChar());
            }

            int main(void){

            SER_Init(115200);

            while(1){
            printf("testing.\r\n");
            };

            }

            Dùng code này các bạn sẽ dùng được cổng com ảo có từ board due-sam3x của ardiuno

            Gl!
            các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
            trên các dòng chip: stm32, lpc of nxp
            please cell phone: 01649895559

            Comment

            Về tác giả

            Collapse

            nguyenvanvui Tìm hiểu thêm về nguyenvanvui

            Bài viết mới nhất

            Collapse

            Đang tải...
            X