Thông báo

Collapse
No announcement yet.

Gặp vấn đề vs MPlab C18

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

  • Gặp vấn đề vs MPlab C18

    Em chuyển cái thư viện từ PIC16 sang PIC18, sử dụng C18 và MPLab. Để cho tiện em edit chân cẳng chip cái thư viện lcd16x2 từ con pic16 sang pic18. Tuy nhiên khi test thì khi put_char 1 ký tự lên lcd thì hiển thị bình thường còn put_string thì nó luôn lỗi, Debug thì khi chạy đến hàm put_string thì chuỗi ở trong luôn là NULL thành ra nó nhảy qua luôn mà em ko biết nguyên nhân tại sao, thư viện này vẫn chạy tốt khi em viết trên HTPIC cho PIC16. Tạo 1 mảng char ss[] rồi truyền put_s(ss) vào thì mới được còn gọi thẳng put_s("string") thì xịt ngóm
    Em có add file đính kèm ở dưới cả nhà xem hộ
    Tiện đây mọi người cho em hỏi về chân RA4 của pic18, cụ thể là em đang xài 18f4520, khi em khai báo LATA =0x00; cho các chân là Digital Output nhưng các chân thì đều out 0/1 bình thường còn riêng RA4 thì nó chỉ out đc mức 0 mà ko out được mức 1. Mọi người cho em biết phải config thêm cái gì vì trong datasheet có nói mặc định RA4 là Schimit Triger thay vì Digital TTL như các chân khác
    Attached Files
    Website chính thức đổi địa chỉ website thành
    Mời các bạn ghé thăm !!!

  • #2
    hjc, vụ này lại khó rồi
    vụ chân RA4 thì em giải quyết đc rồi, phải treo trở pull up, còn vụ chuỗi string kia vẫn chưa biết tại sao
    Website chính thức đổi địa chỉ website thành
    Mời các bạn ghé thăm !!!

    Comment


    • #3
      Bạn cần chọn chế độ của LCD, liên tiếp hay xóa tại chỗ, cùng với nó là xung kích, lên xuống, delay phải phù hợp. Do bạn chuyển từ chip này sang chip khác, phần mềm khác nên cần xem lại code ở những chỗ này cho phù hợp.

      Comment


      • #4
        việc nó chỉ hiện lên từng ký tự 1 chỉ là 1 chuyện bác à, nhưng vấn đề ở đây em đã check nó bằng debug
        chuỗi nhận được trong hàm put_s luôn là NULL, vào vòng while nó nhảy ra luôn chứ ko thực thi bất cứ lệnh nào chứ ko nói j đến việc lcd hiển thị ra sao, việc tốc độ xử lý, delay các kiểu tạm gác qua 1 bên. Trong khi đó vẫn cái thư viện này em debug ở HTPIC và KeilC thì nó vẫn nhảy vào while và chuỗi nhận được tương tự chuỗi truyền vào
        Website chính thức đổi địa chỉ website thành
        Mời các bạn ghé thăm !!!

        Comment


        • #5
          Bạn thử chuyển sang dùng XC8 & MplabX. C18 và Hi-PICC cổ quá rồi.
          Phần mềm tự do hoặc không dùng máy tính nữa !.

          Comment


          • #6
            Cái cũ: HTPIC cho PIC16
            Cái mới: PIC18, sử dụng C18 và MPLab

            Nên có sự khác nhau: Pic16-pic18 và phần mềm.
            Vậy bạn thử kiểm tra:
            -Tập lệnh 2 con này, 2 phần mềm này.
            -Thử làm vài cái sample có while thật đơn giản rồi trao đổi qua lại ( 2 chiều) để debug xem nó có thông báo gì không. Có khi phần mềm cài không đầy đủ cũng bị lỗi hoặc không tương thích về phiên bản hỗ trợ.

            Comment


            • #7
              HT PICC cũ biên dịch cho cả PIC10, PIC12, PIC16 lẫn PIC18. Nó là 2 chương trình nhưng đều của 1 hãng và giống nhau 99,99%. XC8 mới là 1 chương trình duy nhất biên dịch cho toàn bộ dòng PIC 8 bit. XC8 giống HTPIC đến 98%
              Phần mềm tự do hoặc không dùng máy tính nữa !.

              Comment


              • #8
                Nguyên văn bởi mast090 Xem bài viết
                Em chuyển cái thư viện từ PIC16 sang PIC18, sử dụng C18 và MPLab. Để cho tiện em edit chân cẳng chip cái thư viện lcd16x2 từ con pic16 sang pic18. Tuy nhiên khi test thì khi put_char 1 ký tự lên lcd thì hiển thị bình thường còn put_string thì nó luôn lỗi, Debug thì khi chạy đến hàm put_string thì chuỗi ở trong luôn là NULL thành ra nó nhảy qua luôn mà em ko biết nguyên nhân tại sao, thư viện này vẫn chạy tốt khi em viết trên HTPIC cho PIC16. Tạo 1 mảng char ss[] rồi truyền put_s(ss) vào thì mới được còn gọi thẳng put_s("string") thì xịt ngóm
                Em có add file đính kèm ở dưới cả nhà xem hộ
                Tiện đây mọi người cho em hỏi về chân RA4 của pic18, cụ thể là em đang xài 18f4520, khi em khai báo LATA =0x00; cho các chân là Digital Output nhưng các chân thì đều out 0/1 bình thường còn riêng RA4 thì nó chỉ out đc mức 0 mà ko out được mức 1. Mọi người cho em biết phải config thêm cái gì vì trong datasheet có nói mặc định RA4 là Schimit Triger thay vì Digital TTL như các chân khác
                với C18 thì LCD bạn cần khai báo như này nè:

                void lcd_putc(unsigned char character) // dùng cho ký tự.
                void lcd_puts(rom char *p) // dùng cho mảng ( chuỗi). nhớ là phải có (rom char*).vd: lcd_puts(rom char*"dientuvietnam.net");
                {
                while(*p)
                {
                lcd_putc(*p++);
                }
                }

                còn vì sao lại thế bạn lên seach goole

                Comment


                • #9
                  Nguyên văn bởi bqviet Xem bài viết
                  HT PICC cũ biên dịch cho cả PIC10, PIC12, PIC16 lẫn PIC18. Nó là 2 chương trình nhưng đều của 1 hãng và giống nhau 99,99%. XC8 mới là 1 chương trình duy nhất biên dịch cho toàn bộ dòng PIC 8 bit. XC8 giống HTPIC đến 98%
                  bác bqviet cho mình hỏi thế X8 do microchip mua của hitech và phát triển thành.
                  còn C18,C32 là 1 hãng khác hay như nào? mình chưa phân biệt được X8,x32. và c18,c32
                  cám ơn bác!

                  Comment


                  • #10
                    C16 và C32 trước đây, XC16 và XC32 hiện nay Microchip phát triển từ GCC - trình dịch tiêu chuẩn của Linux. Thực ra GCC gần như là công cụ vạn năng, chạy trên nhiều hệ điều hành : BSD Unix, Linux, MacOS, Solaris và Windows; dịch được nhiều loại vi xử lý / vi điều khiển từ 8 bit tới 128 bit. Ngay bây giờ người có kinh nghiệm có thể build XC16 và XC32 từ mã nguồn để chạy trên máy tính của mình.
                    Phần mềm tự do hoặc không dùng máy tính nữa !.

                    Comment


                    • #11
                      Nguyên văn bởi bqviet Xem bài viết
                      C16 và C32 trước đây, XC16 và XC32 hiện nay Microchip phát triển từ GCC - trình dịch tiêu chuẩn của Linux. Thực ra GCC gần như là công cụ vạn năng, chạy trên nhiều hệ điều hành : BSD Unix, Linux, MacOS, Solaris và Windows; dịch được nhiều loại vi xử lý / vi điều khiển từ 8 bit tới 128 bit. Ngay bây giờ người có kinh nghiệm có thể build XC16 và XC32 từ mã nguồn để chạy trên máy tính của mình.
                      vậy ngày nay thì C18 và C32 có phát triển tiếp nữa ko ( tức là có bản nâng cấp lên các vesion khi có các pic mới ra lò)? hay nó cũng dừng lại rùi và chỉ phát triển XC16 và XC32 thui?

                      Comment


                      • #12
                        Nếu nêu lại phần cứng LCD chắc không cần, có khi lại làm nhiều bác thấy tự ái nữa . Nhưng kiểu của tôi thì cái gì cũng là phần cứng trước rồi theo đó mà code phần mềm, từng tí một. Khi nào nhều rồi thì tự nhóm lại thành module, cần thì gắp thả, kiểu của Mast090 thì cũng tương tự nhưng nó ở dạng thư viện, (tick chọn), đồng ý các phần mềm sau này đa số đều tích hợp sẵn dùng, nhanh chóng, nhẹ nhàng. Nhưng nếu cần thì mình cứ xem lại phần cứng rồi làm, vì chẳng ai nhớ hết mọi thứ được, vd ở đây là: xung kích, write, read, rom, delay, chế độ LCD, định dạng lệnh, data....rồi kiểm chứng lại code. Như admin đã chỉ rõ phần mềm đó cổ hay vẫn tương thích nhau thì có thể là do code, giờ có thêm ý kiến cần khai báo rom, *p..của kiemkhach10 thì nó cũng nằm trong những cái cần làm từ phần cứng.
                        Khi nào chạy ok rồi thì bác có thể nêu lên để người khác rút kinh nghiệm.

                        Comment


                        • #13
                          Học hành vất vả , khổ thật đấy ! ... Đi theo đồ của microchip thì xem thằng XC8 . Lúc nào có con mới nó sẽ tự update vào đó ... Nhà nó trồng ra mà !!! Tha hồ thử nghiệm chip
                          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


                          • #14
                            Nguyên văn bởi avr Xem bài viết
                            Nhưng kiểu của tôi thì cái gì cũng là phần cứng trước rồi theo đó mà code phần mềm, từng tí một. Khi nào nhều rồi thì tự nhóm lại thành module, cần thì gắp thả, kiểu của Mast090 thì cũng tương tự nhưng nó ở dạng thư viện, (tick chọn), đồng ý các phần mềm sau này đa số đều tích hợp sẵn dùng, nhanh chóng, nhẹ nhàng. Nhưng nếu cần thì mình cứ xem lại phần cứng rồi làm, vì chẳng ai nhớ hết mọi thứ được, vd ở đây là: xung kích, write, read, rom, delay, chế độ LCD, định dạng lệnh, data....rồi kiểm chứng lại code. Như admin đã chỉ rõ phần mềm đó cổ hay vẫn tương thích nhau thì có thể là do code, giờ có thêm ý kiến cần khai báo rom, *p..của kiemkhach10 thì nó cũng nằm trong những cái cần làm từ phần cứng.
                            Khi nào chạy ok rồi thì bác có thể nêu lên để người khác rút kinh nghiệm.
                            Đầu tiên em cảm ơn vì bác khá nhiệt tình vì đã giúp em nhưng em cũng có câu này hi vọng ko động tới lòng tự trọng của bác, không biết bác ko đọc đc câu em viết hay cố tình ko đọc. Em đã nói rõ là em có test là
                            Code:
                            lcd_puts("string"); // lỗi
                            còn nếu em viết như sau
                            Code:
                            char ss[] = "string";
                            lcd_puts(ss);// thì oke
                            vậy mà bác cứ bảo rằng nào là ko cho phép ghi ký tự liên tiếp thì cái kia ghi kiểu j, thứ 2 nữa là do phần cứng thì có mà 1 ký tự cũng chả show lên đc. em đã test và debug cẩn thận chứ ko phải nói mồm và có nói hiện tượng cho bác xem mà bác cứ nói các vấn đề ở đâu ko biết
                            Nguyên văn bởi kiemkhach10 Xem bài viết
                            với C18 thì LCD bạn cần khai báo như này nè:
                            void lcd_puts(rom char *p) // dùng cho mảng ( chuỗi). nhớ là phải có (rom char*).vd: lcd_puts("dientuvietnam.net");
                            thank bác, bỏ khai báo const char và thay bằng rom char nó chạy oke luôn rồi, cái này đúng như các bác khác có nói là do trình dịch...
                            Website chính thức đổi địa chỉ website thành
                            Mời các bạn ghé thăm !!!

                            Comment


                            • #15
                              Nguyên văn bởi queduong Xem bài viết
                              Học hành vất vả , khổ thật đấy ! ... Đi theo đồ của microchip thì xem thằng XC8 . Lúc nào có con mới nó sẽ tự update vào đó ... Nhà nó trồng ra mà !!! Tha hồ thử nghiệm chip
                              Thế còn mikroC thì sao anh Duơng. Theo em khi đã chơi PIC hay AVR hay... thì nên chọn một phần mềm khá phổ biến và có tính phát triển sau này. Để đỡ phải vất vả code đi code lại, và đỡ phải nhọc học lại từ đầu
                              Tư vấn thiết kế hệ thống điện-điện tử theo yêu cầu.
                              Tel: 0903 702 417. Email: web:

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X