Thông báo

Collapse
No announcement yet.

Lập trình đa nhiệm cho vi điều khiển

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

  • #31
    còn ai giữ mấy cái ví dụ về lập trình rtos trong Keil C ở post 1 và 2 ko nhỉ?Mình đã pm cho chủ thread hỏi chẳng biết có được ko?
    ai có ví dụ nào cho mình xin code coi thử,đang làm bài tập rtos đo điện áp ADC trên Keil C mà....tks all....

    Comment


    • #32
      có bác nào có quyển "Real time system and programming languages" bản mềm không cho em xin với ạ. Em thấy bài viết về RT system hay quá nên định nghiên cứu thử xem sao.
      cho em link hoặc gửi trực tiếp vào email: cation_h_k51da@yahoo.com

      Comment


      • #33
        Nguyên văn bởi ungdungtutai Xem bài viết
        Chào vutricongbka, cho mình hỏi tí
        Mình cũng rất thường xuyên phải lập trình đa nhiệm cho VĐK, nhằm giải quyết bài toán thời gian thực. Tuy nhiên, khi gặp các bài toán mà tốc độ xử lý của VĐK có giới hạn, số lượng công việc lại quá nhiều, đòi hỏi thời gian thực... buộc mình phải tính tới huớng đa xử lý (cụ thể xử lý song song nhằm chia tải, không phải là master-slave), giống như lập trình hệ thống bên mạng máy tính. Bác có kinh nghiệm gì hay tài liệu về cách giải quyết này không
        Vấn đề của bạn đang đề cập là hệ đa vi xử lý (Multi - uC). Thông tin được nối với nhau qua một dây để đảm bảo đồng bộ về mặt thời gian, với việc kết nối các vi điều khiển này với nhau thì có nhiều ưu điểm(tất nhiên với các bài toán lớn) đó là tăng các chức năng phần cứng, thiết kế các bài toán module và vẫn thực hiện được multi-stask...
        Để thực hiện được vấn đề này thì phải đồng bộ được đồng hồ, thực hiện được việc truyền số liệu giữa các uC, uC này có thể nhận biết được lỗi từ uC khác.

        P/S: Lập trình đa nhiệm là vấn đề hay trong lập trình trong hệ nhúng, nó giúp chúng ta chia các bài toán lớn, phức tạp thành các bài toán nhỏ và đơn giản hơn, sao ko thấy mọi người tiếp tục vấn đề này nhỉ?

        Comment


        • #34
          [rtos]

          Vấn đề quan trọng nhất là có board và environment để phát triển. Còn lập trình đa nhiệm tui nghỉ không khó. Giống như uITRON, nếu có environment các bạn chỉ cần đọc khoảng vài ngày là làm được. Làm thề nào để tạo task. Control các task. Sử dụng event flag, message, semaphore... Tui cũng không biết ở việt Nam mua board và environment ở đâu? Nếu ai biết có thể chỉ cho tôi với.

          Comment


          • #35
            RTOS Demo in Proteus: hOS is comming soon

            hOS: RTOS cho 8051 sắp sửa ra mắt!

            - Đa nhiệm
            - Cấu hình dễ dàng, nhanh chóng
            - Trễ ngắt rất ngắn và chuyển ngữ cảnh cực nhanh
            - Sử dụng Kỹ thuật lập lịch:Round Robin, Cooperative+ Priority
            - Free to try
            - Xuất xứ: Việt Nam

            Các bạn chạy Proteus để xem demo nhé!
            Attached Files

            Comment


            • #36
              Anh xem lại hộ em với ,sao em dùng Proteus ma không đọc được thế
              toanbk3i

              Comment


              • #37
                Proteus của mình dùng bản 7.4. Chắc bạn dùng bản 6.9 phải không?
                Hoặc có thể là bạn chưa unzip

                Comment


                • #38
                  Tại sao lại báo lỗi nhỉ?

                  em thấy cái này tác giả viết có sai đâu mà sao C codevison báo lỗi.
                  #define MAX_RAM_ADDRESS 0x045F
                  volatile unsigned char* _mem_ptr;
                  _mem_ptr = MAX_RAM_ADDRESS - 16; // lỗi ở câu lệnh này.
                  Các anh giúp e với. Thanks các anh nhiều

                  Comment


                  • #39
                    Nguyên văn bởi mnhut Xem bài viết
                    em thấy cái này tác giả viết có sai đâu mà sao C codevison báo lỗi.
                    #define MAX_RAM_ADDRESS 0x045F
                    volatile unsigned char* _mem_ptr;
                    _mem_ptr = MAX_RAM_ADDRESS - 16; // lỗi ở câu lệnh này.
                    Các anh giúp e với. Thanks các anh nhiều
                    sửa lại thành: _mem_ptr = (unsigned char*) ( MAX_RAM_ADDRESS - 16) ;

                    Comment


                    • #40
                      như vậy phải ép đúng kiểu ah. em viết thế này có đc không. Nó không có lỗi nữa
                      _mem_ptr &=0x0x0000;
                      _mem_ptr |=(MAX_RAM_ADDRESS - 16);

                      Comment


                      • #41
                        em thấy phần RTOS này rất hay !
                        em hiện tại đang làm một đồ án nhỏ
                        Liên quan đến việc thiết kế bộ điều khiển PID dung RTOS
                        bác nào có thể post cho em code và tài liệu liên quan không?
                        em xin cam ơn trướcv!

                        Comment


                        • #42
                          vì có rất nhiều rtos và phần cứng tương ứng, nếu muốn làm về nó phải xác định phần cứng và hệ điều hành tương ứng. nếu học cái gì rồi thì nên tìm rtos cho họ vxl đó rồi tìm vxl được rtos hỗ trợ

                          Comment


                          • #43
                            task-89

                            đây là một đoạn code viết bằng task em đã viết cho mấy biển quảng cáo điện tử chạy ngoài đường hi... .hy vọng có anh em nào rành về rtos cho pic chỉ giáo cho em với:
                            #include <AT89X52.H>
                            #include <rtx51tny.h>

                            ..................
                            ...................
                            ...................
                            void delay(unsigned int n)
                            {
                            int i;
                            for(i=0;i<n;i++)
                            {
                            TMOD = 0x01;
                            //ET0 = 0; //no interrupt
                            TH0 = 65535/256;
                            TL0 = 65535%256;
                            TR0 = 1;
                            while(!TF0);
                            TF0 = 0;
                            TR0 = 0;

                            }
                            }
                            */
                            //================================================== ===
                            void delay(unsigned int time)
                            { unsigned int j;

                            for(j=0;j<=time;j++);
                            }
                            //================================================== ===

                            //================================================== ===
                            void nhay1(void) _task_ 1
                            {
                            int trigger_count;
                            while(1)
                            {
                            .........thuc hien mot cong viec
                            }
                            }
                            //===========================================
                            void nhay2(void) _task_ 2
                            {

                            while (1)
                            {
                            .....thuc hien mot công viê?c tu`y y´

                            }

                            }
                            //=====================================
                            void LeTrongTan(void) _task_ 3
                            { char count;
                            bit flag;

                            while (1)
                            {
                            .......thu?c hiê?n mô?t công viê?c tu`y y´....

                            }

                            }
                            //=====================================
                            void vien(void) _task_ 4
                            { char count;
                            bit flag;
                            while (1)
                            {
                            ..........thu?c hiê?n mô?t công viê?c tu`y y´......

                            }
                            }
                            //=====================================
                            void nhay(void) _task_ 0
                            {
                            ST=0;
                            os_create_task (1);
                            os_create_task (2);
                            os_create_task (3);
                            os_create_task (4);
                            os_delete_task (0);
                            }
                            Xếp hàng tự động - Gsm/Gsm/Ethernet - ATM/Backup
                            phone: 0989.18.13.15
                            web:

                            Comment


                            • #44
                              mình dịch thấy báo lỗi không tìm thấy file rtx51.lib bác nào có gửi cho mình với, hoặc gửi cho mình bản keilC full nha, thanks!
                              Lỗi cụ thể như sau:
                              *** FATAL ERROR L210: I/O ERROR ON INPUT FILE:
                              EXCEPTION 0021H: PATH OR FILE NOT FOUND
                              FILE: C:\KEIL\C51\LIB\RTX51.LIB
                              Target not created
                              Vũ xuân Lợi
                              YM!:

                              Comment


                              • #45
                                Mình mô phỏng bằng led thì thấy các task này sẽ quét nội dung của nó 3 lần(dù có vòng lặp vô hạn) cũng sẽ thoát ra để làm việc với task tiếp theo, có phải vậy không nhỉ?
                                Vũ xuân Lợi
                                YM!:

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X