Thông báo

Collapse
No announcement yet.

Bộ nhớ của Atmega!!

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

  • Bộ nhớ của Atmega!!

    -theo hiểu biết của mình :VD Atmega8 thì sẽ có 8k bộ nhớ flash, 1k SRAM .
    -Như vậy thì tất cả code mình sau khi viết và biên dịch qua mã hex sẽ lưu ở bộ nhớ flash.
    -còn biến ,mình khai báo thì sẽ lưu tại SRAM và chỉ có thể khai báo 256 biến( giả sử biến kiểu char 1byte).
    -Còn tốc độ xử lý tối đa là 16Mhz, vậy nó xử lý 16triệu lệnh trong 1s.
    -còn bộ nhớ EEPROM dùng làm gì mình chưa nghĩ ra ứng dụng nào dùng đến bộ nhớ này...
    -Không biết mình hiểu như vậy đúng không , mong các anh đóng góp thêm...
    -Thank!!!!!
    Last edited by hohoanganhfu; 19-06-2012, 22:24.

  • #2
    EEProm là bộ nhớ rom có thể ghi xóa bằng điện (tức có thể lập trình ghi xóa). Bạn dùng eeprom để lưu các giá trị mà khi mất điện nó cũng không thay đổi giá trị. Ví dụ như các giá trị cấu hình, các thông tin của phiên làm việc trước.....vv và vv.

    Giải pháp điện tử của bạn

    Comment


    • #3
      - 256 byte ram có nghĩa là tại một thời điểm bạn không được dùng quá 256 byte ram chứ không hẳn là không được khai báo quá 256 biến 1 byte. Mỗi khi thoát khỏi chương trình con thì lượng ram cấp phát cho chương trình con sẽ được giải phóng.
      - Đúng là code lập trình được lưu vào trong Flash nó có bao gồm các hằng số.
      - Với dòng atmega thì 1 lệnh được thực hiện trong 1 chu kỳ xung nhịp nên nó có thể xử lý 16 triệu lệnh trên 1s nhưng đó nên hiểu là các lệnh asm không phải lệnh C
      Hihi giải thích thế có đúng không nhỉ.

      Giải pháp điện tử của bạn

      Comment


      • #4
        vuxuansyhut bạn có thể nói rõ hơn về EEFROM , trong chương trình mình có thể ghi ,xóa vào bộ nhớ này được không .
        Mình nghĩ nó chắc giống BIOS trong máy trính , ghi thông tin nhà sản xuất , hay chương trình nhỏ.
        Mình thấy trong datasheet EEFROM cũng hạn chế số lần ghi xóa khoản 100.000 lần.

        Âtmeg trong cùng một họ (atmega8,atmeg16,atmega32) thì tốc độ CPU,SRAM giống nhau hết phải không ??
        Last edited by hohoanganhfu; 19-06-2012, 22:24.

        Comment


        • #5
          eeprom để lưu lại các thông tin, giá trị của quá trình làm việc trước, để khi bạn tắt nguồn hay mất điện nó vẫn còn. giả sử bạn đếm dc 7 sản phẩm, đang đếm thì mất điện, cái số 7 sản phẩm sẽ đc lưu lại trong eeprom, khi có điện nó sẽ đếm tiếp từ 7 chứ ko phải giá trị reset =0. hoàn toàn có thể ghi và xóa các giá trị đã lưu trong eeprom. hầu hết các eeprom theo mình biết thì đều hạn chế số lần ghi và xóa, nhưng số lượng này cực lớn, xài còn lâu mới hết, hết chắc chết ic
          Website chính thức đổi địa chỉ website thành
          Mời các bạn ghé thăm !!!

          Comment


          • #6
            Sorry mình nhầm , chưa đọc dátaheet kỹ mà ghi lung tung...
            ---mình xin sửa lại SRAM 1k.
            ---bộ nhớ EEPROM cho phép ghi xóa 100.000 lần..

            Comment


            • #7
              Nguyên văn bởi hohoanganhfu Xem bài viết
              Sorry mình nhầm , chưa đọc dátaheet kỹ mà ghi lung tung...
              ---mình xin sửa lại SRAM 1k.
              ---bộ nhớ EEPROM cho phép ghi xóa 100.000 lần..
              Flash lưu bộ nhớ chương trình. Code lập trình sẽ nạp vào flash
              SRAM: dùng để khai báo biến. Khi mất điện giá trị sẽ bị mất.
              EEPROM: là vùng nhớ có thể ghi xóa được trong lúc lập trình và không bị mất giá trị khi mất điện
              VD: trong chương trình bạn ghi giá trị 13 vào địa chỉ 01 của EEPROM bằng hàm EEPROM_Write(01,13) chẳng hạn, rồi sau đó tự nhiên bị mất điện, sau khi có điện chíp hoạt động trở lại. Bạn đọc lại giá trị ở địa chỉ 01 của EEPROM bằng hàm x=EEPROM_Read(01); thì lúc này giá trị của x =13.
              Giá trị mặc định tại mỗi địa chỉ của bộ nhớ EEPROM lúc ban đầu là 0xFF
              Sống là để chiến đấu

              Comment


              • #8
                Nguyên văn bởi hohoanganhfu Xem bài viết
                -theo hiểu biết của mình :VD Atmega8 thì sẽ có 8k bộ nhớ flash, 1k SRAM .
                -Như vậy thì tất cả code mình sau khi viết và biên dịch qua mã hex sẽ lưu ở bộ nhớ flash.
                -còn biến ,mình khai báo thì sẽ lưu tại SRAM và chỉ có thể khai báo 256 biến( giả sử biến kiểu char 1byte).
                -Còn tốc độ xử lý tối đa là 16Mhz, vậy nó xử lý 16triệu lệnh trong 1s.
                -còn bộ nhớ EEPROM dùng làm gì mình chưa nghĩ ra ứng dụng nào dùng đến bộ nhớ này...
                -Không biết mình hiểu như vậy đúng không , mong các anh đóng góp thêm...
                -Thank!!!!!
                - Flash: Bộ nhớ chương trình, dùng để lưu chương trình(file.hex)
                - SRAM: Bộ nhớ dữ liệu, lưu các biến trong chương trình.Khi khởi động lại chip thì giá trị các biến này sẽ trở về mặc định như khi lập trình bạn khai báo(Như Ram máy tính)
                - EEPROM: Cũng là bộ nhớ dữ liệu chỉ khác là khi khởi động lại chip thì các giá trị lưu trước đó trên EEPROM sẽ được giữ nguyên không thay đổi(Như lưu trên ổ cứng máy tình)
                - Tốc độ truy xuất SRAM khi chip hoạt đông nhanh hơn truy xuất EEPROM.Trong chương trình nên hạn chế đọc ghi EEPRO nhiều sẽ làm chậm chương trình.Chúc vui!

                :

                Comment


                • #9
                  Nguyên văn bởi qchien Xem bài viết
                  - Flash: Bộ nhớ chương trình, dùng để lưu chương trình(file.hex)
                  - SRAM: Bộ nhớ dữ liệu, lưu các biến trong chương trình.Khi khởi động lại chip thì giá trị các biến này sẽ trở về mặc định như khi lập trình bạn khai báo(Như Ram máy tính)
                  - EEPROM: Cũng là bộ nhớ dữ liệu chỉ khác là khi khởi động lại chip thì các giá trị lưu trước đó trên EEPROM sẽ được giữ nguyên không thay đổi(Như lưu trên ổ cứng máy tình)
                  - Tốc độ truy xuất SRAM khi chip hoạt đông nhanh hơn truy xuất EEPROM.Trong chương trình nên hạn chế đọc ghi EEPRO nhiều sẽ làm chậm chương trình.Chúc vui!
                  Các Bác cho em hỏi: có cách nào đọc được nội dung trong EEPROM của ATmega ko? hay là re-write lai EEPROM cũng được?

                  Comment


                  • #10
                    EEPROM tính năng tương tự như con 24C04 nối vao con 89C51 (vì con này không có EEPROM)
                    0912666017

                    Comment


                    • #11
                      Nguyên văn bởi vuxuansyhut Xem bài viết
                      - 256 byte ram có nghĩa là tại một thời điểm bạn không được dùng quá 256 byte ram chứ không hẳn là không được khai báo quá 256 biến 1 byte. Mỗi khi thoát khỏi chương trình con thì lượng ram cấp phát cho chương trình con sẽ được giải phóng.
                      - Đúng là code lập trình được lưu vào trong Flash nó có bao gồm các hằng số.
                      - Với dòng atmega thì 1 lệnh được thực hiện trong 1 chu kỳ xung nhịp nên nó có thể xử lý 16 triệu lệnh trên 1s nhưng đó nên hiểu là các lệnh asm không phải lệnh C
                      Hihi giải thích thế có đúng không nhỉ.
                      chưa hẳn vậy. khi bác khai báo biến toàn cục thì nó sẽ không giải phóng mà nó chỉ giải phóng ở chương trình con thôi.
                      Never forget who you are!

                      Comment


                      • #12
                        Nguyên văn bởi nhquangdt3k5 Xem bài viết
                        chưa hẳn vậy. khi bác khai báo biến toàn cục thì nó sẽ không giải phóng mà nó chỉ giải phóng ở chương trình con thôi.
                        anh nhquangdt3k5 nói đúng đó, thoát khỏi chương trình con thì biến đó dc giải phóng và lại có ô nhớ trống để khai báo thêm biến

                        Comment


                        • #13
                          Góp ý một tý :
                          SRAM ( hoặc RAM nói chung ) không phải để khai báo biến. SRAM dùng để lưu giữ các giá trị cần thiết trong quá trình hoạt động và xử lý dữ liệu gồm một số biến và các giá trị trung gian khác. Do vậy giá trị các biến có thể thay đổi giá trị được lưu trữ trên SRAM khi hoạt động ( biến dạng const sẽ lưu trên flash ).

                          Comment


                          • #14
                            Nguyên văn bởi duong_act Xem bài viết
                            Góp ý một tý :
                            SRAM ( hoặc RAM nói chung ) không phải để khai báo biến. SRAM dùng để lưu giữ các giá trị cần thiết trong quá trình hoạt động và xử lý dữ liệu gồm một số biến và các giá trị trung gian khác. Do vậy giá trị các biến có thể thay đổi giá trị được lưu trữ trên SRAM khi hoạt động ( biến dạng const sẽ lưu trên flash ).
                            à, em xin lỗi về sự sai sót này

                            Comment


                            • #15
                              1k RAM thì ít ra cũng khoảng trên 800 byte (chưa coi memory map của ATmega nên ko biết cụ thể bao nhiêu ^^ ) dàng cho general purpose registers thì cũng cỡ 800 biến chứ làm gì chỉ 256 biến @@

                              Comment

                              Về tác giả

                              Collapse

                              hohoanganhfu Trường ĐH khoa Hoc Tự Nhiên Tìm hiểu thêm về hohoanganhfu

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

                              Collapse

                              Đang tải...
                              X