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

  • 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


          • Nguyên văn bởi croket_2512 Xem bài viế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?
            Nhanh ở đây cốt lõi so về bài toán .... lấy ví dụ bài toán đồng hồ ... mỗi lần nhảy có 1 giây ....thì tốc độ 16mhz cũng là rất nhanh.
            72Mhz ... nếu mỗi chu kỳ máy/lệnh .... thì cũng chỉ tổng cộng 72 lệnh / 1us .... hay nói cách khác 1 lệnh sẽ tiêu tốn mất 1/72us ( Đây là giá trị trung bình, tương đối ) chứ thực tế khi thực hiện 1 lệnh ... nó còn kéo theo vài ba cái lệnh khác tiêu tốn thời gian ( chẳng hạn muốn thực hiện một phép tính thì nó phải load vào thanh ghi, rồi cộng rồi mới ra kết quả phép tính ... bla , bla ...

            Nếu bạn ngắt timer liên tục 1us ... trong timer đó nếu có xử lý ( VD : mất tổng cộng 12 lệnh ) thì hàm main của bạn chỉ dùng được có 60 lệnh ... là lại bị ngắt một lần . ( thực tế sẽ được ít hơn ... do phát sinh các lệnh khác ) ... muốn biết chính xác thì lập trình ASM hoặc view ASM lên xem nó tiêu tốn bao nhiêu. Cứ 1 dòng lệnh ASM thì nó sẽ tốn mất 1/72us ... cứ vậy mà đếm thôi.
            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


            • Nó mà dùng vòng lặp thì khó đếm lắm bác Dương

              Comment


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

                Nhanh ở đây cốt lõi so về bài toán .... lấy ví dụ bài toán đồng hồ ... mỗi lần nhảy có 1 giây ....thì tốc độ 16mhz cũng là rất nhanh.
                72Mhz ... nếu mỗi chu kỳ máy/lệnh .... thì cũng chỉ tổng cộng 72 lệnh / 1us .... hay nói cách khác 1 lệnh sẽ tiêu tốn mất 1/72us ( Đây là giá trị trung bình, tương đối ) chứ thực tế khi thực hiện 1 lệnh ... nó còn kéo theo vài ba cái lệnh khác tiêu tốn thời gian ( chẳng hạn muốn thực hiện một phép tính thì nó phải load vào thanh ghi, rồi cộng rồi mới ra kết quả phép tính ... bla , bla ...

                Nếu bạn ngắt timer liên tục 1us ... trong timer đó nếu có xử lý ( VD : mất tổng cộng 12 lệnh ) thì hàm main của bạn chỉ dùng được có 60 lệnh ... là lại bị ngắt một lần . ( thực tế sẽ được ít hơn ... do phát sinh các lệnh khác ) ... muốn biết chính xác thì lập trình ASM hoặc view ASM lên xem nó tiêu tốn bao nhiêu. Cứ 1 dòng lệnh ASM thì nó sẽ tốn mất 1/72us ... cứ vậy mà đếm thôi.
                Cám ơn anh Dương nhé! Đã thông tuệ được phần nào! Có điều em thắc mắc, hồi xưa học 8051, PIC, đều có bảng mô tả 1 lệnh ASM được thực hiện trong bao nhiêu us, bao nhiêu chu kỳ máy. Còn ARM thì em tìm hoài không ra tài liệu nào nói về nó. Vậy 1 lệnh ASM của STM8 và ARM thực hiện trong bao nhiêu chu kỳ máy? Bao nhiêu us đây?

                Comment


                • Nguyên văn bởi duong_act Xem bài viết
                  Nó mà dùng vòng lặp thì khó đếm lắm bác Dương
                  Vẫn đếm được hết nếu bạn quen đếm, nếu không dùng debug đếm, còn không biết cách đếm khi làm cần thời gian thực thì code inline hay cả block ASM vào cho dễ kiểm soá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 croket_2512 Xem bài viết

                    Cám ơn anh Dương nhé! Đã thông tuệ được phần nào! Có điều em thắc mắc, hồi xưa học 8051, PIC, đều có bảng mô tả 1 lệnh ASM được thực hiện trong bao nhiêu us, bao nhiêu chu kỳ máy. Còn ARM thì em tìm hoài không ra tài liệu nào nói về nó. Vậy 1 lệnh ASM của STM8 và ARM thực hiện trong bao nhiêu chu kỳ máy? Bao nhiêu us đây?
                    1/main clock (MHz) nếu đó là lệnh NOP ... còn 1 lệnh asm hết bao nhiêu .... thì đếm, cộng các chu trình = kết quả.

                    Để ý là cái clock kia là giá trị master clock . Lấy ví dụ pic 8 bit : lắp thạch anh 4Mhz nhưng thực tế chỉ chạy có 1Mhz ... và 1 lệnh NOP sẽ tốn 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


                    • Hi mọi người,

                      Mình đang code cho STM8S003, bộ nhớ 8k. Mình test thử hàm sprintf của IAR để convert float sang string, thì thấy nó chiếm tới hơn 6kb bộ nhớ, cộng với chương trình chính 3kb thì vượt cả 8k flash của chip nên trình dịch báo lỗi. Vậy lý do vì sao chỉ có sử dụng sprintf 2 lần thôi mà bộ nhớ code chiếm quá thể? Hay do chính bản thân hàm sprintf nó đã vậy? Mình đã cho tối ưu code ở mức cao nhất rồi.

                      Thanks mọi người.

                      Comment


                      • Nguyên văn bởi croket_2512 Xem bài viết
                        Hi mọi người,

                        Mình đang code cho STM8S003, bộ nhớ 8k. Mình test thử hàm sprintf của IAR để convert float sang string, thì thấy nó chiếm tới hơn 6kb bộ nhớ, cộng với chương trình chính 3kb thì vượt cả 8k flash của chip nên trình dịch báo lỗi. Vậy lý do vì sao chỉ có sử dụng sprintf 2 lần thôi mà bộ nhớ code chiếm quá thể? Hay do chính bản thân hàm sprintf nó đã vậy? Mình đã cho tối ưu code ở mức cao nhất rồi.

                        Thanks mọi người.

                        Viết như thế thì chiếm dung lượng lớn là phải rồi. Nhưng phải kiểm tra lại phần thông báo lỗi và kiểm tra lại option project nữa.

                        Comment


                        • Cũng có thể do trình dịch hoặc tập lệnh, ví như AVR 8K thì viết bét nhè ... nhưng STM8 thì cứ như ăn cướp bộ nhớ.
                          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 sugus Xem bài viết
                            Mình viết bài này mong muốn kêu gọi được các bạn đã nghiên cứu STM8 cùng nhau trao đổi những kinh nghiện và kiến thức! Ai có tài liệu j thì gửi lên nhé! Tiếng Việt thì càng tốt! ^_^
                            Em có lập ra 1 group! moi người vào cung nhau trao đổi!
                            https://web.facebook.com/groups/1059092380768771/

                            Comment


                            • cho em hỏi là STM8S có giao tiếp được với module thẻ nhớ theo chuẩn SPI không mọi người!
                              nếu có thì có thể cho em xin code được không ạ!

                              Comment


                              • Nguyên văn bởi queduong Xem bài viết
                                Cũng có thể do trình dịch hoặc tập lệnh, ví như AVR 8K thì viết bét nhè ... nhưng STM8 thì cứ như ăn cướp bộ nhớ.
                                Em bị giống anh, chỗ library options chỉnh xuống tiny cho hàm printf, bộ nhớ từ 10kb giảm xuống còn 4kb, chạy ngon lành! May mà đọc lại mấy trang trước của thread này chứ không là không biết làm sao!

                                Còn kỹ năng nào nữa để tinh chỉnh mấy cái Options của IAR không anh nhỉ? Công nhận trình dịch này nhiều tùy chỉnh quá!

                                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