Thông báo

Collapse
No announcement yet.

Vấn đề với hàm LOG() trong CCS

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

  • Vấn đề với hàm LOG() trong CCS

    Các bác cho em hỏi CCS có bị lỗi gì không mà khi em dùng hàm log() tính ra kết quả trật lất
    Log(8788) ==> - 24.55 (sai)

    Trong khi đó nếu em dùng mikroC hoặc tính bằng Excel đều ra kết quả là: 9.081255175 (đúng)

    Version của CCS em đang xài là 4.023 và code viết con PIC18f2550.

    Tính dùng CCS để tận dụng cái thư viện giao tiếp USB bằng CDC của nó mà tính toán kiểu này oải quá. mikroC viết sao chạy vậy chỉ tội chưa có thư viện CDC.

    Thank you.
    “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds

  • #2
    Cài thêm "errno.h" vào để xem lỗi là ở đâu. Cách sử dụng log( )
    , errno.h rất chi tiết trong help của ccs

    Function:
    Computes the natural logarithm of the float x. If the argument is less than or equal to zero or too large, the behavior is undefined.



    Note on error handling:

    "errno.h" is included then the domain and range errors are stored in the errno variable. The user can check the errno to see if an error has occurred and print the error using the perror function.



    Domain error occurs in the following cases:

    · log: when the argument is negative
    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


    • #3
      Thanks bác itx. Đêm qua em đã thêm errno.h để kiểm tra và errno luôn bằng 0, có lúc kết quả Log(8788) ra số âm, có lúc ra khoảng 80 (sai bét)
      “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds

      Comment


      • #4
        Nguyên văn bởi bxngoc Xem bài viết
        Thanks bác itx. Đêm qua em đã thêm errno.h để kiểm tra và errno luôn bằng 0, có lúc kết quả Log(8788) ra số âm, có lúc ra khoảng 80 (sai bét)
        =========>
        if the argument is less than or equal to zero or too large, the behavior is undefined.
        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


        • #5
          Google một hồi cũng ra: log(A*B) = log(A) + log(B). Trời ơi sao mình dốt toán thế nhỉ
          ==> Log(8788) = Log(87.88) + Log(100)

          Để tối về thử lại coi thằng CCS mần ăn làm răng.

          Thanks bác itx
          “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds

          Comment


          • #6
            Tình hình vẫn không khả quan hơn. Dù chia nhỏ giá trị cho 100, 10 để tính log nhưng vẫn ra giá trị âm. Chạy mô phỏng trên Proteus và trên board thực đều giống nhau.
            Trong khi đó nếu biên dịch bằng HT-PIC, MikroC hoặc tính bằng Excel đều ra kết quả đúng.
            Không biết bác nào có dùng CCS version khác 4.023 biên dịch thử và chạy thử giùm em xem hàm Log(8788) hoặc Log(87.88) + Log(100) có ra 9.081255175 không?
            “If you create your own electricity, heating and water systems, you create your own politics. Maybe that’s what they’re afraid of.” –– Michael Reynolds

            Comment


            • #7
              Up lên cái code ccs lỗi xem sao? thường thì ccs không bị lỗi này, chủ yếu là do thuật giải người dùng thế nào.
              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


              • #8
                Bạn up code lên đi.trước làm với hàm log() suốt mà có thấy lỗi gì đâu.

                Comment

                Về tác giả

                Collapse

                bxngoc Nothing to reveal Tìm hiểu thêm về bxngoc

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

                Collapse

                • bqviet
                  Trả lời cho Đấu tắt điện cho máy tính bảng
                  bởi bqviet
                  Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                  06-12-2025, 17:17
                • nguyendinhvan
                  Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                  bởi nguyendinhvan
                  Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                  05-12-2025, 19:59
                • afrendly
                  Trả lời cho Đấu tắt điện cho máy tính bảng
                  bởi afrendly
                  Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                  04-12-2025, 01:27
                • nick22
                  Trả lời cho Máy điện châm ?
                  bởi nick22
                  Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
                  01-12-2025, 13:23
                Đang tải...
                X