Thông báo

Collapse
No announcement yet.

Cả bàn phím , cả timer , nhiều ngắt + bất ổn .

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

  • Cả bàn phím , cả timer , nhiều ngắt + bất ổn .

    Tôi đang làm một bộ đếm thời gian sử dụng ngắt timer0 , có kèm theo bàn phím để điều khiển xuất nhập dữ liệu ( chương trình xuất dữ liệu )

    có thời gian không phải là hằng số ( thời gian có thể dài hay ) ngắn phụ thuộc vào dữ liệu . ( Nhưng khi xuất hay nhập dữ liệu thì bắt buộc không bị ngắt xen vào ).

    tôi làm với pic6f84A ( thạch anh 4M), ngôn ngữ C .

    Có một điều khó là 2 ngắt , ( ngắt timer0 và ngắt RB ) đều hoạt động .

    Khi xuất nhập dữ liệu thì bắt buộc phải xóa GIE , xong xuôi mới bật lại .

    Ngắt timer0 1 giây mà nó sai lệch lung tung phèng .

    --- Các bác giúp tôi cho ý kiến , gợi ý làm sao để có cái timer 1 giây chính xác .

    ( có thuật ngữ hay ví dụ bằng mã nguồn thì tốt ) - thanks !!!
    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

  • #2
    Chỉ dùng ngắt Timer0 để định thời 1s và làm luôn định thời cho cả hệ thống luôn.

    Không dùng ngắt INT mà hỏi vòng cờ trong chương trình chính.

    void interrupt ISR(void)
    {
    ngắt tmr0, dùng ngắt khoảng 1ms rùi định thời cho thằng khác luôn.
    }

    void main(void)
    {
    if(RBIF)
    {
    //chống rung, dùng con định thời trên để xử lý phím
    sau 1 khoảng thời gian thì xóa cờ
    RBIF = 0;
    }
    }

    Comment


    • #3
      Tôi đã xem thời gian truyền và nhận dữ liệu sẽ tốn trong khoảng ( từ 1,5 đến 2 giây ) .
      bởi vậy nếu muốn làm ngắt 1s thì không biết ngắt vào lúc nào cho thích hợp.
      Ta chỉ có thể đồng bộ thời gian và thời gian trong ngắt nhỏ nhất phải bằng thời gian thời gian lớn nhất đối với một chương trình cần cố định thời gian .
      Việc sai số về thời gian này khó kiểm soát và sai lệch còn nhiều.

      Đằng này lại tới 2 ngắt , ngắt liên tiếp lồng nhau .
      để giảm bớt sai số tôi đành hi sinh kiểm tra phím trong ngắt bằng cách hỏi vòng.

      Nhưng rốt cục thì vẫn chưa giải quyết được vấn đề làm sao lấy ra được 1 giây ( lấy xung clock ra 1 chân ) và vẫn truyền , nhận được dữ liệu trong khoảng thời gian 1,5 đến 2s .

      Bác nào đã từng vấp phải vấn đề thì cho lời khuyên . Chẳng nhẽ vi điều khiển không thể làm được cái này .
      chẳng nhẽ phải " cấy thêm 1 mạch phần cứng " 1s vào cùng .
      HIC ... Khoai quá
      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

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X