Thông báo

Collapse
No announcement yet.

Cùng nhau trao đổi về STM8

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

  • Chào mọi người, có ai biết lý do sao mà khi dùng FLASH_ProgramByte(0x4000, data) của stm8s trong void main là bị lỗi không.
    Với IAR 2.10.
    Mình mới đụng tới thằng này thấy hơi quái, cứ trong main mà gọi hàm này trong thư viện của st ra là chương trình lại chạy sai.
    Hay nó không được dùng trong main nhỉ, tìm ví dụ trên mạng toàn thấy dùng các hàm trong Flash.c trước main thôi. có ai biết lý do vì sao không.

    Comment


    • Nguyên văn bởi thientanvt Xem bài viết
      Chào mọi người, có ai biết lý do sao mà khi dùng FLASH_ProgramByte(0x4000, data) của stm8s trong void main là bị lỗi không.
      Với IAR 2.10.
      Mình mới đụng tới thằng này thấy hơi quái, cứ trong main mà gọi hàm này trong thư viện của st ra là chương trình lại chạy sai.
      Hay nó không được dùng trong main nhỉ, tìm ví dụ trên mạng toàn thấy dùng các hàm trong Flash.c trước main thôi. có ai biết lý do vì sao không.
      Mình dùng thấy BT nhé bạn. Bạn có thể dùng từ 0x4001 trở đi cho an tâm .


      Add: 97 Quán Nam - Lê Chân - Hải Phòng.
      Tel: 031 518648 Phone: 0904 283 505

      Comment


      • Chào hoangdai, cái địa chỉ 0x4000 đó chỉ là một trong các địa chỉ mình ghi lên thôi sài ô nhớ khác cũng vậy.
        Lỗi xãy ra là khi dùng lệnh ghi FLASH_ProgramByte thì chương trình bị gián đoạn một chút, và 1 lỗi khác nữa nhưng rất khó chịu.
        Trường hợp là mình dùng timer để quét phím, khi ấn phím có tác động lệnh FLASH_ProgramByte thì vẫn thực hiện, nhưng làm xong thì ấn các phím khác không còn tác dụng ngay nữa. Phải ấn giữ lâu mới thấy nhận, cứ như là timer bị chậm lại rất chậm luôn. Khó hiểu thật.

        Comment


        • Mọi người cho mình hỏi cách nào cấu hình timer1 hoặc timer2 của stm8 chạy với thạch anh ngoài vậy. Cám ơn.

          Comment


          • Mình đang gặp rắc rối việc tạo delay 1us với timer4. Mình tạo được với 10us, 100us, 1ms nhưng tạo với 1us thì chương trình không chạy, debug bị treo. Có ace nào đã làm được xin cho mình ý kiến! Tần số là 16MHz. Thanks!

            Comment


            • Mấy lệnh đọc chui ra chui vào cũng hết cả us rồi nói chi là cập nhật. Trễ cỡ us thì dùng lệnh asm mà chèn vào rồi xem chu kỳ lệnh, 1/16 us thì có nghĩa 16 chu kỳ sẽ mất 1us.
              Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

              Comment


              • Nguyên văn bởi queduong Xem bài viết
                Mấy lệnh đọc chui ra chui vào cũng hết cả us rồi nói chi là cập nhật. Trễ cỡ us thì dùng lệnh asm mà chèn vào rồi xem chu kỳ lệnh, 1/16 us thì có nghĩa 16 chu kỳ sẽ mất 1us.

                Bác queduong, cho em hỏi là có cách nào cấu hình timer1 hoặc timer2 của stm8s003 chạy với thạch anh ngoài không ah.

                Comment


                • Nguyên văn bởi queduong Xem bài viết
                  Mấy lệnh đọc chui ra chui vào cũng hết cả us rồi nói chi là cập nhật. Trễ cỡ us thì dùng lệnh asm mà chèn vào rồi xem chu kỳ lệnh, 1/16 us thì có nghĩa 16 chu kỳ sẽ mất 1us.
                  A gặp cao nhân! Em tính làm thử để kiểm tra theo lý thuyết có đúng không! Vì e đọc thấy nó có bộ prescaler, tính tới tính lui thì nó có thể tạo được delay 1us. Mà em tham khảo thêm mấy anh khác thì cũng được khuyên là hiếm khi dùng các ứng dụng ngắt đến cỡ 1us. Thường làm ngắt timer tầm 1ms là ổn thỏa. Anh có kinh nghiệm nhiều, có khi nào anh cần những ngắt đến 1us không anh?

                  Comment


                  • Nguyên văn bởi croket_2512 Xem bài viết

                    A gặp cao nhân! Em tính làm thử để kiểm tra theo lý thuyết có đúng không! Vì e đọc thấy nó có bộ prescaler, tính tới tính lui thì nó có thể tạo được delay 1us. Mà em tham khảo thêm mấy anh khác thì cũng được khuyên là hiếm khi dùng các ứng dụng ngắt đến cỡ 1us. Thường làm ngắt timer tầm 1ms là ổn thỏa. Anh có kinh nghiệm nhiều, có khi nào anh cần những ngắt đến 1us không anh?
                    Mình không bao giờ dùng ngắt timer với thời gian rất nhỏ, nếu có sử dụng ngắt như ngắt ngoài hay timer ... cũng đều sử dụng các chương trình tối giản hay chỉ là các cờ nhớ trong ngắt ( để đảm bảo xử lý nhanh ) ... vì đơn thuần ngắt cũng là chương trình ... việc mình đang thực hiện hàm main mà nó cứ nhè nhè chui vào ngắt liên tục " cà giật " như vậy thì lấy thời gian đâu cho xử lý cái hàm main ? ( trừ trường hợp những MCU có tốc độ cực nhanh ... thì 1us cũng chẳng vấn đề gì ) chứ MCU cỡ 16Mhz thì cứ loanh quanh lo chui vào ngắt rồi lấy chi mà làm việc khác ===> giậm chân tại chỗ.
                    Với thời gian rất nhỏ mình khuyên nên tìm những MCU có tốc độ thì hơn. Việc ngắt với thời gian bao nhiêu là ổn thỏa thì bạn cần kiểm tra mọi thứ thực thi trong ngắt tiêu tốn hết bao nhiêu thời gian ... thời gian ngắt phải lớn hơn thời gian này ... nếu không ? điều gì xảy ra ?
                    Lấy ví dụ : chu kỳ ngắt timer là 1ms nhưng trong hàm ngắt có một đống lằng nhằng tiêu tốn tới 2ms ... đang làm việc trong ngắt ... lại xảy ra ngắt ===> lồng ngắt ===> đệ qui ===> lăn quay ! Do đó mấy cái chương trình trong ngắt cần tối giản, nếu xử lý tuần tự ... khi chui vào ngắt rồi thì phải tắt ngắt ===> làm hết việc trong ngắt ===> bật lại ngắt.
                    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                    Comment


                    • Nguyên văn bởi thientanvt Xem bài viết


                      Bác queduong, cho em hỏi là có cách nào cấu hình timer1 hoặc timer2 của stm8s003 chạy với thạch anh ngoài không ah.
                      Bạn đã bật ( enable ) mấy cái timer đó lên chưa ?
                      CLK_PCKENR1 = 0xff;
                      Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                      Comment


                      • Nguyên văn bởi queduong Xem bài viết
                        Bạn đã bật ( enable ) mấy cái timer đó lên chưa ?
                        CLK_PCKENR1 = 0xff;

                        Dạ sorry bác, có lẽ em nói không rõ. Ý em là cho nó chạy với thạch anh rời, cpu thì chạy với internal clock đấy bác. Cám ơn.

                        Comment


                        • Nguyên văn bởi thientanvt Xem bài viết


                          Dạ sorry bác, có lẽ em nói không rõ. Ý em là cho nó chạy với thạch anh rời, cpu thì chạy với internal clock đấy bác. Cám ơn.
                          Chắc là bạn muốn đếm xung từ ngoài vào ? ( chứ không phải dùng thạch anh làm dao động cho toàn bộ MCU - mà vẫn dùng internal cho toàn bộ MCU ).
                          Bạn có thể xem bố trí timer của STM8 và có ví dụ ( chú ý ví dụ này có một số lỗi - đã sửa ( bởi clive1 )).
                          STe2ecommunities about TIMER EXTERNAL CLOCK
                          Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                          Comment


                          • Nguyên văn bởi queduong Xem bài viết

                            Chắc là bạn muốn đếm xung từ ngoài vào ? ( chứ không phải dùng thạch anh làm dao động cho toàn bộ MCU - mà vẫn dùng internal cho toàn bộ MCU ).
                            Bạn có thể xem bố trí timer của STM8 và có ví dụ ( chú ý ví dụ này có một số lỗi - đã sửa ( bởi clive1 )).

                            Cám ơn bác. Thanks.

                            Comment


                            • Nguyên văn bởi queduong Xem bài viết

                              Mình không bao giờ dùng ngắt timer với thời gian rất nhỏ, nếu có sử dụng ngắt như ngắt ngoài hay timer ... cũng đều sử dụng các chương trình tối giản hay chỉ là các cờ nhớ trong ngắt ( để đảm bảo xử lý nhanh ) ... vì đơn thuần ngắt cũng là chương trình ... việc mình đang thực hiện hàm main mà nó cứ nhè nhè chui vào ngắt liên tục " cà giật " như vậy thì lấy thời gian đâu cho xử lý cái hàm main ? ( trừ trường hợp những MCU có tốc độ cực nhanh ... thì 1us cũng chẳng vấn đề gì ) chứ MCU cỡ 16Mhz thì cứ loanh quanh lo chui vào ngắt rồi lấy chi mà làm việc khác ===> giậm chân tại chỗ.
                              Với thời gian rất nhỏ mình khuyên nên tìm những MCU có tốc độ thì hơn. Việc ngắt với thời gian bao nhiêu là ổn thỏa thì bạn cần kiểm tra mọi thứ thực thi trong ngắt tiêu tốn hết bao nhiêu thời gian ... thời gian ngắt phải lớn hơn thời gian này ... nếu không ? điều gì xảy ra ?
                              Lấy ví dụ : chu kỳ ngắt timer là 1ms nhưng trong hàm ngắt có một đống lằng nhằng tiêu tốn tới 2ms ... đang làm việc trong ngắt ... lại xảy ra ngắt ===> lồng ngắt ===> đệ qui ===> lăn quay ! Do đó mấy cái chương trình trong ngắt cần tối giản, nếu xử lý tuần tự ... khi chui vào ngắt rồi thì phải tắt ngắt ===> làm hết việc trong ngắt ===> bật lại ngắt.
                              Wow! Hay! Hèn chi em dùng ngắt 1us thử, trong hàm ngắt cho giảm biến toàn cục đếm thời gian, thế mà chip nó không chạy, debug treo luôn! Em hỏi thêm nữa: với MCU tốc độ bao nhiêu thì anh cho là nhanh? Em thấy STM32F103 là 72MHz, như vậy đã được cho là nhanh?

                              Comment


                              • Phải có mốc để so chứ nói thế khó lắm

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X