Thông báo

Collapse
No announcement yet.

Giúp đỡ Về Eeprom 28c256

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

  • Giúp đỡ Về Eeprom 28c256

    Mình làm 1 mạch kết nối EEprom rất cơ bản kết nối với 89C52 thông qua giải mã 74HC373. Nói chung phần cứng thì không vấn đề gì khi kết nối. Còn phần chương trình thì tôi viết đơn giản thực hiện ghi giá trị vào EEprom sau đó đọc giá trị đó ra PORT1 để quan sát thông qua LED. nhưng tôi thấy kết quả quan sát không đúng và nó cứ hiển thị linh tinh. Bác nào đã làm việc hay có kinh nghiệm giúp tôi chữa lỗi này với. Cảm ơn trước nhé. Sau đây là đoạn code của tôi :

    #include<at89x52.h>
    xdata unsigned char Rom[32767] _at_ 0;
    // Tao thoi gian tre
    void Delay(unsigned long k)
    { for( ;k>0;k--); }
    unsigned char i;
    void main()
    { // GHI DU LIEU VAO ROM
    for(i=0;i<255;i++)
    { Rom[i] = i; Delay(10); }
    // DOC CHUONG TRINH RA TU ROM
    while(1)
    { for(i=0;i<255;i++)
    { P1 = Rom[i]; // DOC GIA TRI TRONG ROM RA P1
    Delay(100000); // TRE THOI GIAN DE XEM LED TREN PORT 1 HOAT DONG
    }
    }
    }
    Last edited by nguyen.geo; 19-09-2007, 11:15. Lý do: Đánh Nhầm

    Kích từ, điều tốc, nhiệt độ , mức dầu, bảo vệ, đo mực nước, thông báo lũ...cho nhà máy Thủy Điện

  • #2
    Bác nói rõ hơn xem. Hiển thị linh tinh là mỗi lúc một khác hay là không hiển thị như ý nhưng lúc nào cũng vẫn là giá trị đó.
    Tôi thì không khai báo như bác. Tôi khai báo thế này:
    unsigned char xdata rom[100];
    Chắc là 2 kiểu khai báo của tôi và bác đều ok.

    Comment


    • #3
      Chào Bác Sun_rise !
      Tôi đã thử cả cách của bác có nghĩa là : unsigned char ....;
      nhưng nó vẫn không chạy bác ah. Còn lỗi của nó là nó lúc nào khi đọc ra thì đều giống nhau tôi gọi dữ liệu này là "Data1". Sau khi tôi đã lưu dữ liệu vào EEprom rồi. Tồi viết 1 đoạn chương trình khác để đọc lại giá trị trong EEprom mà không ghi đè lên giá trị cũ thì thấy giá trị đọc được lần này lại khác so với Data1 thế mới dở hơi bác ah. Nếu bác đã làm với nó thì bác có thể cho tôi xin đoạn code để tham khảo được không ? Có gì bác giúp tôi nhé.

      Kích từ, điều tốc, nhiệt độ , mức dầu, bảo vệ, đo mực nước, thông báo lũ...cho nhà máy Thủy Điện

      Comment


      • #4
        Thư mãi mới Upload lên được
        Attached Files
        Last edited by nguyen.geo; 20-09-2007, 11:39.

        Kích từ, điều tốc, nhiệt độ , mức dầu, bảo vệ, đo mực nước, thông báo lũ...cho nhà máy Thủy Điện

        Comment


        • #5
          Có bác nào biết ở đâu trong tp.HCN có bán eeprom 28c01,28c02 hay ko? Mình đã ra chợ Nhật Tảo hỏi vài chỗ rồi mà ko có bán.

          Comment


          • #6
            Tôi thì tôi không biết. vì tôi ở HN mà. Chán quá các cao thủ chỉ làm những cái cao siêu còn cái con 28C256 của tôi thì chắc là không ai làm nên chẳng có ai hồi âm cả chán chán quá. bác nào biết bảo dùm đi.

            Kích từ, điều tốc, nhiệt độ , mức dầu, bảo vệ, đo mực nước, thông báo lũ...cho nhà máy Thủy Điện

            Comment


            • #7
              Nguyên văn bởi nguyen.geo Xem bài viết
              Mình làm 1 mạch kết nối EEprom rất cơ bản kết nối với 89C52 thông qua giải mã 74HC373. Nói chung phần cứng thì không vấn đề gì khi kết nối. Còn phần chương trình thì tôi viết đơn giản thực hiện ghi giá trị vào EEprom sau đó đọc giá trị đó ra PORT1 để quan sát thông qua LED. nhưng tôi thấy kết quả quan sát không đúng và nó cứ hiển thị linh tinh. Bác nào đã làm việc hay có kinh nghiệm giúp tôi chữa lỗi này với. Cảm ơn trước nhé. Sau đây là đoạn code của tôi :

              #include<at89x52.h>
              xdata unsigned char Rom[32767] _at_ 0;
              // Tao thoi gian tre
              void Delay(unsigned long k)
              { for( ;k>0;k--); }
              unsigned char i;
              void main()
              { // GHI DU LIEU VAO ROM
              for(i=0;i<255;i++)
              { Rom[i] = i; Delay(10); }
              // DOC CHUONG TRINH RA TU ROM
              while(1)
              { for(i=0;i<255;i++)
              { P1 = Rom[i]; // DOC GIA TRI TRONG ROM RA P1
              Delay(100000); // TRE THOI GIAN DE XEM LED TREN PORT 1 HOAT DONG
              }
              }
              }
              Hãy tăng thời gian Delay lên 3ms là OK, Delay (10) --> quá nhanh. Mà con IC này nhiều lúc phải mua mấy con mới dùng được 1 con đấy. có loại giá chỉ 30K có loại giá lại 80K, loại 80K dùng sướng hơn. I chưa boa giờ dùng con 30K cả.

              email:mahaco@fpt.vn

              Comment


              • #8
                Hãy tăng thời gian Delay lên 3ms là OK, Delay (10) --> quá nhanh. Mà con IC này nhiều lúc phải mua mấy con mới dùng được 1 con đấy. có loại giá chỉ 30K có loại giá lại 80K, loại 80K dùng sướng hơn. I chưa boa giờ dùng con 30K cả.
                Nhưng nếu ghi mỗi byte mà mất tới 3ms thì đến khi nào mới ghi hết khoảng 1000byte hả bác. Với lại khi mình nhận tín hiệu từ cổng COM, nhận khoảng 1000 byte thì làm sao mà đáp ứng được tốc độ. Nếu ghi chậm quá thì sẽ mất dữ liệu. Đúng thế không bác? Vậy phải xử lý thế nào?

                Comment


                • #9
                  Nguyên văn bởi sun_rise Xem bài viết
                  Nhưng nếu ghi mỗi byte mà mất tới 3ms thì đến khi nào mới ghi hết khoảng 1000byte hả bác. Với lại khi mình nhận tín hiệu từ cổng COM, nhận khoảng 1000 byte thì làm sao mà đáp ứng được tốc độ. Nếu ghi chậm quá thì sẽ mất dữ liệu. Đúng thế không bác? Vậy phải xử lý thế nào?
                  Chính vì thế nên mới phải ghi theo trang. Khi ghi nhiều, thường thiết kế đi kèm con RAM (62256), nhận COM hết các byte ghi vào RAM , sau đó ghi từ RAM sang 28C256 -> OK ngay.

                  email:mahaco@fpt.vn

                  Comment


                  • #10
                    Với loại 28xx thì đọc ra không có gì khác với RAM thường, nhưng quá trình ghi thì có 2 cách:
                    1- delay thời gian ghi bằng phần mềm: Tức nhu cách các bạn đã nói ở trên
                    là tự tạo hàm delay khoảng vài ms( cụ thể xem datasheet - chắc khoảng 5ms)
                    2- Ram 28xxx có chân báo cho MCU biết quá trình ghi hoàn tất, ta dựa vào đây để xác nhận quá trình ghi 1 byte nào đó đã kết thúc tốt đẹp.

                    Comment


                    • #11
                      Thành thật cảm ơn các bạn nhiều. Tôi đã thử tới 4 con 28C256 mà vẫn không ăn thua gì. Trước khi tôi viết bài này mong được các bạn tiếp sức tôi đã hỏi qua ý kiến của thầy Nam trưởng lão PIC mà người mà tôi hay gọi là anh Nam. Anh cũng bảo như vậy và tôi cho nó Delay(60000); cơ mà vẫn không ăn thua nên tôi đành bó tay. để tôi thử mua thêm mấy con 28C nữa xem thế nào. Cảm ơn các bạn nhiều nhé.

                      Kích từ, điều tốc, nhiệt độ , mức dầu, bảo vệ, đo mực nước, thông báo lũ...cho nhà máy Thủy Điện

                      Comment


                      • #12
                        @nguyen.geo: Bác thử mua lấy một con 28c xịn như bác Hoctro89xxx nói thử xem thế nào. Thực sự về cái này mình cũng không được rành cho lắm. Mình cũng đang thử con 28c256 với AVR nhưng cũng chưa được
                        @hoctro89xxx:
                        Chính vì thế nên mới phải ghi theo trang. Khi ghi nhiều, thường thiết kế đi kèm con RAM (62256), nhận COM hết các byte ghi vào RAM , sau đó ghi từ RAM sang 28C256 -> OK ngay.
                        Em lại có thêm một câu hỏi đặt ra với vấn đề này. Các con VDK như 8051 hoặc AVR có nhiều nhất là một đường giao tiếp Pararell trong khi cả con RAM 62256 và con EEPROM 28c256 đều sử dụng chuẩn giao tiếp này. Vậy làm cách nào để sử dụng đồng thời 2 con này trong ứng dụng như bác nói???

                        Comment


                        • #13
                          Vấn đề này theo tôi thì chỉ cần mình giải mã địa chỉ hợp lý là được thôi. ví dụ nhé. Bạn dùng 1 con 28C256 và 1 con Ram 62256 thì sau khi phối hợp địa chỉ port P0 và P2 thì còn thừa 1 chân. và chân này có thể dùng hay không thì tuỳ thuộc vào người thiết kế nhưng thường là hay dùng. và chân thừa là A15 đúng không ? trong trường hợp này tôi chỉ dùng có 2 con là EEprom và Ram nên chỉ cần lấy chân A15 đưa vào chân CS của Rom chẳng hạn. Còn Ram thì cho chân A15 qua cổng đảo rồi đưa vào CS Ram. thế thì khi dùng Rom thì không dùng Ram và ngược lại tất cả mọi công việc giao tiếp giữa 2 con này đểu thông qua trung gian là VXL. con trường hợp dùng nhiều hơn 2 con thì bạn hãy dùng thêm chân của Port nào đó như là P1 chẳng hạn sau đó đưa qua cổng AND rồi đưa vào các chân CS. lưu ý là trước khi đọc hay ghi giá trị nào đó ra Bộ nhớ ngoài thì hãy nhớ ghi ra đó các chân địa chỉ Port 1 này trước. thế là xong.

                          Kích từ, điều tốc, nhiệt độ , mức dầu, bảo vệ, đo mực nước, thông báo lũ...cho nhà máy Thủy Điện

                          Comment


                          • #14
                            Nguyên văn bởi nguyen.geo Xem bài viết
                            Vấn đề này theo tôi thì chỉ cần mình giải mã địa chỉ hợp lý là được thôi. ví dụ nhé. Bạn dùng 1 con 28C256 và 1 con Ram 62256 thì sau khi phối hợp địa chỉ port P0 và P2 thì còn thừa 1 chân. và chân này có thể dùng hay không thì tuỳ thuộc vào người thiết kế nhưng thường là hay dùng. và chân thừa là A15 đúng không ? trong trường hợp này tôi chỉ dùng có 2 con là EEprom và Ram nên chỉ cần lấy chân A15 đưa vào chân CS của Rom chẳng hạn. Còn Ram thì cho chân A15 qua cổng đảo rồi đưa vào CS Ram. thế thì khi dùng Rom thì không dùng Ram và ngược lại tất cả mọi công việc giao tiếp giữa 2 con này đểu thông qua trung gian là VXL. con trường hợp dùng nhiều hơn 2 con thì bạn hãy dùng thêm chân của Port nào đó như là P1 chẳng hạn sau đó đưa qua cổng AND rồi đưa vào các chân CS. lưu ý là trước khi đọc hay ghi giá trị nào đó ra Bộ nhớ ngoài thì hãy nhớ ghi ra đó các chân địa chỉ Port 1 này trước. thế là xong.
                            Từ sáng đến giờ mới vào đây được, cứ vào là out.
                            Dùng theo kiểu tô đỏ ở trên phải dùng như sau: 32KB đầu thì ghi được vào EEPROM, 32KB sau ghi vào RAM. muốn ghi vào RAM thì địa chỉ ghi phải cộng thêm 32KB so với thực tế.
                            cũng có thể dùng các cổng thừa của VĐK để chipselect RAM hoặc eeprom--> đỡ phải dùng thêm NOT hay AND...KHi dùng con nào thì lựa chọn con đó.

                            email:mahaco@fpt.vn

                            Comment


                            • #15
                              Có vẽ như bạn không đọc những gì tôi viết hay đọc sơ lược quá vậy.

                              Kích từ, điều tốc, nhiệt độ , mức dầu, bảo vệ, đo mực nước, thông báo lũ...cho nhà máy Thủy Điện

                              Comment

                              Về tác giả

                              Collapse

                              nguyen.geo Tìm hiểu thêm về nguyen.geo

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

                              Collapse

                              Đang tải...
                              X