Thông báo

Collapse
No announcement yet.

Khá phức tạp dù chỉ là đọc tín hiệu Input

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

  • Khá phức tạp dù chỉ là đọc tín hiệu Input

    Em đang cần làm một thiết bị như sau, muốn tham khảo ý kiến của các bác:
    1. Có 8 đầu vào digital, nhận các tín hiệu 0 hay 1
    2. Cần ghi nhận các sự kiện trạng thái của các đầu vào này, ngày, tháng năm, giờ phút giây và mili giây
    3. Đặc điểm của các tín hiệu đầu vào này là rất ít khi tác động, nhưng khi tác động là nhiều thằng tác động cùng lúc và một tín hiệu có thể tác động nhiều lần.

    Yêu cầu:
    Cần biết chính xác các đầu vào nào tác động, tác động bao nhiêu lần và cái nào tác động trước cái nào. Tức là phải vẽ được một giản đồ theo thời gian của các tín hiệu này.
    Một số yêu cầu lặt vặt khác như hiển thị LCD, giao tiếp máy tính, có nút bấm để xem dữ liệu trực tiếp trên màn hình LCD và phải lưu giữ được ít nhất vài ngàn sự kiện. Mấy mục này tuy làm đơn giản nhưng cũng ngốn của VXL không ít tài nguyên làm cho VXL không có thời gian để monitor các tín hiệu đầu vào kia. Giải pháp xài 2,3 VXL đang được đặt ra.

    Phần milisec có thể không cần chính xác lắm, nhưng nhất thiết phải biết tín hiệu nào đến trước tín hiệu nào cho dù chỉ 1 vài milisec.

    Em cảm thấy hơi bí, các bác cho em chút ý kiến.
    Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
    Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

  • #2
    us cũng được chứ ms thì tại sao lại không. Một con MCU trung bình là OK
    Nhà sản xuất chuyên nghiệp các sản phẩm OEM cho gia dụng và công nghiệp.

    Biến tần
    Máy giặt
    Lò vi sóng
    Bếp từ.
    Tủ lạnh.
    Điều hòa

    Comment


    • #3
      Mình thấy đơn giản mà. Một con 8051 làm cũng được rồi. Cần một con realtime để lấy thời gian. Cho chân ngắt 1s của nó vào ngắt ngoài. Khi có ngắt ta reset bộ đếm ms về 0.
      Chắc bạn làm AVR. Làm ví dụ phát nhé. Con AVR chạy xtal 8Mhz ~ 8MIPS. Lệnh ít bù lệnh nhiều ta chứ coi 2 chu kì máy được một lệnh đi --> trong 1s ta có 4 triệu lệnh. Trong 1ms ta có 4000 lệnh đi.

      - Tạo nối 8 đầu vào một port nào đó.
      - Làm một ngắt 1ms. Khi có ngắt ta đọc cả port đưa vào một biến unsigned char nào đó. Thế là lưu được rồi. Lần lượt AND hoặc OR với hằng số có sẵn để tìm ra chân nào thay đổi. Cách này tận dụng được tập lệnh của uC nên nhanh hơn so với dịch bit.
      Giả sử ta nối vào PORT1 đi.

      Trong chương trình xử lý ngắt.

      tăng số đếm ms lên 1. (cái này sẽ reset về 0 khi có ngắt thời gian của realtime)
      unsigned char value;
      value=PORT1;

      if (value&0b00000001) chan 1.0 có tín hiệu
      if (value&0b00000010) chan 1.1 có tín hiệu

      như thế chỉ cần cỡ 100 lệnh là có thể phát hiện ra chân nào có tín hiệu.
      Vậy còn cỡ 3900 lệnh.
      Lệnh đọc thời gian của con nào giao tiếp // coi như mất 100 lệnh nữa.
      Ghi dữ liệu vào eeprom ngoài hoặc đâu đó mất 150 lệnh.
      LCD + RS232 + nút bấm cỡ 1000 lệnh cho nó xông xênh.
      1000 lệnh để tính toán tín hiệu.
      Vậy bạn còn cỡ 1000 lệnh để nghịch. Rất thoải mái còn gì.

      Comment


      • #4
        Nguyên văn bởi nghaiha Xem bài viết
        Em đang cần làm một thiết bị như sau, muốn tham khảo ý kiến của các bác:
        1. Có 8 đầu vào digital, nhận các tín hiệu 0 hay 1
        2. Cần ghi nhận các sự kiện trạng thái của các đầu vào này, ngày, tháng năm, giờ phút giây và mili giây
        3. Đặc điểm của các tín hiệu đầu vào này là rất ít khi tác động, nhưng khi tác động là nhiều thằng tác động cùng lúc và một tín hiệu có thể tác động nhiều lần.

        Yêu cầu:
        Cần biết chính xác các đầu vào nào tác động, tác động bao nhiêu lần và cái nào tác động trước cái nào. Tức là phải vẽ được một giản đồ theo thời gian của các tín hiệu này.
        Một số yêu cầu lặt vặt khác như hiển thị LCD, giao tiếp máy tính, có nút bấm để xem dữ liệu trực tiếp trên màn hình LCD và phải lưu giữ được ít nhất vài ngàn sự kiện. Mấy mục này tuy làm đơn giản nhưng cũng ngốn của VXL không ít tài nguyên làm cho VXL không có thời gian để monitor các tín hiệu đầu vào kia. Giải pháp xài 2,3 VXL đang được đặt ra.

        Phần milisec có thể không cần chính xác lắm, nhưng nhất thiết phải biết tín hiệu nào đến trước tín hiệu nào cho dù chỉ 1 vài milisec.

        Em cảm thấy hơi bí, các bác cho em chút ý kiến.
        milisecond thì không cần thiết phải vài VXL đâu

        Bạn tham khảo ý tưởng ở chỗ này sẽ giải quyết ra
        http://www.freertos.org/tutorial/index.html
        đây là 1 bài viết về cách phát triển 1 hệ thống nhúng với các tín hiệu ở các miền tần số khác nhau
        Việc đảm bảo của bạn không khó đâu
        Chịu khó đọc sẽ nắm bắt ý tưởng không nhất thiết phải xài FreeRTOS

        Sông dài, Thuyền lớn, Biển rộng bao la.
        Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.

        Comment


        • #5
          @quoc_thaibk: Cái link của bác Thái cho em rất có giá trị. Cái này em đã thử làm 1 lần rồi nhưng đôi khi thu được kết quả không mong muốn, tức là các events được ghi lại đa phần là đúng nhưng thỉnh thoẩng lại sai một vài cái. Chắc chắn lý do là em phân luồng các task không hợp lý. Lý thuyết multi-tasking, và đặt priority cho từng task trong trang freertos sẽ giải quyết được vấn đề của em.
          @phamthaihoa: Em làm cả PIC và AVR đều được. Em cũng tính toán lý thuyết thì thấy số lệnh cũng khá xông xênh nhưng thực tế thì các event em lưu lại bị thiếu mất một vài cái. Em lo là khoảng thời gian ghi dữ liệu vào ROM ngoài làm cho em miss mất mấy event.

          À, còn một vấn đề nhỏ nhỏ nữa là cái con DS12887 của em nó cứ bị dở hơi, trong vòng 1 tuần thể nào nó cũng bị reset 1 lần không rõ nguyên nhân. Đang tìm cách khắc phục. Không biết có ai bị như em không?
          Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
          Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

          Comment


          • #6
            Nguyên văn bởi nghaiha Xem bài viết
            @quoc_thaibk: Cái link của bác Thái cho em rất có giá trị. Cái này em đã thử làm 1 lần rồi nhưng đôi khi thu được kết quả không mong muốn, tức là các events được ghi lại đa phần là đúng nhưng thỉnh thoẩng lại sai một vài cái. Chắc chắn lý do là em phân luồng các task không hợp lý. Lý thuyết multi-tasking, và đặt priority cho từng task trong trang freertos sẽ giải quyết được vấn đề của em.
            @phamthaihoa: Em làm cả PIC và AVR đều được. Em cũng tính toán lý thuyết thì thấy số lệnh cũng khá xông xênh nhưng thực tế thì các event em lưu lại bị thiếu mất một vài cái. Em lo là khoảng thời gian ghi dữ liệu vào ROM ngoài làm cho em miss mất mấy event.

            À, còn một vấn đề nhỏ nhỏ nữa là cái con DS12887 của em nó cứ bị dở hơi, trong vòng 1 tuần thể nào nó cũng bị reset 1 lần không rõ nguyên nhân. Đang tìm cách khắc phục. Không biết có ai bị như em không?
            Bạn nên đặt sự kiện tác động lên mức cao nhất. Tốt nhất là cho vào ngắt. Và lưu lại RAM rồi ghi dần vào ROM.
            AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
            Xem thêm tại Online Store ---> Click here
            Mob: 0982.083.106

            Comment


            • #7
              Nguyên văn bởi VNarmy Xem bài viết
              Bạn nên đặt sự kiện tác động lên mức cao nhất. Tốt nhất là cho vào ngắt. Và lưu lại RAM rồi ghi dần vào ROM.
              Giải quyết theo phương pháp bác phamthaihoa tốt hơn. Tức là tạo ngắt 1ms bác à. Giải pháp lưu vào RAM trước rồi lưu dần vào ROM không khả thi vì để lưu 1 sự kiện cần những dữ liệu sau:
              Ngày, tháng, năm: 3 bytes
              Giờ, phút, giây : 3 bytes
              Milisec : 2 bytes
              Tên input tác động: 1 byte
              Tác động on hay off: 1 byte
              Nếu muốn tiết kiệm hơn thì lập trình lại 1 xíu --------> tăng thời gian xử lý của VXL.
              Tổng cộng 10 bytes
              Như em đã nói em có 8 đầu vào, nó ít tác động, nhưng nếu tác động thì có thể là lia lịa. Nếu chỉ ghi vào bộ nhớ RAM (tà tà lưu vào ROM sau) thì không đủ.
              Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
              Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X