Dùng PIC10F200 và TMR0 để tạo ra một cách 5 phút giờ

F

fmicro

Guest
Chào,
Gần đây, tôi đã viết một số mã cơ bản với PIC10F200 và sáng nay đang cố gắng kết hợp một giờ 30 phút.

Hiện nay ở đây là hay nhất của tôi hiểu biết về làm thế nào tôi có thể làm điều này.Tôi mong sẽ được hoàn toàn không đúng trong một số các giả định của tôi, nhưng ở đây đi:

1.Thiết lập một lớn prescaler cho Timer0 tỷ lệ 1:128 (I suppose Tôi thậm chí có thể sử dụng 1:256)
2.Bit, kiểm tra 7 của Timer0 chú ý khi thay đổi từ thấp đến cao có nghĩa là nó có transitioned từ 0x7F và giả định 0x7F * 128 chu kỳ = 16.25mS.
3.Xác định xem có bao nhiêu xuất hiện (hoặc multiples) tôi cần phải đạt được mong muốn của tôi lúc nào.That's it.Từ đây tôi lập kế hoạch để vô hiệu hoá kết quả đầu ra của tôi và một số công cụ đơn giản cho đến khi có một chuyển đổi trên các dữ liệu vào pin (Tôi nghĩ rằng tôi biết làm thế nào để làm điều này một phần)

Để bắt đầu với, bất kỳ người nào có thể giúp đỡ tôi với cách đáng tin cậy để viết các lệnh?Hiện sau đây hình như tôi đang ở bên phải theo dõi và là syntactax chính xác?; Ở đây tôi chỉ muốn truy cập và khởi tạo Timer0
CLRF TMR0; rõ ràng
MOVLW'00xx0110 'b
OPTION; đặt PSA để Timer0 và tỷ lệ 1:128

; Ở đây tôi chỉ muốn thử nghiệm chút 7 của TMR0
KIỂM TRA
BTFSS TMR0, 7; kiểm tra 7 bit, được thiết lập
Goto KIỂM TRA; nếu không được thiết lập sau đó tiếp tục kiểm tra
; Nếu nó được thiết lập, tôi increment một cập
vv

Tôi muốn chủ yếu là để đảm bảo là đúng cú pháp và một ít sẽ có được lời khuyên của tôi cho ra một thời gian.
Nhận xét của bạn sẽ được đánh giá.

Cảm ơn,
fmicro

 
Hi Fmicro,

Viết Pic mã là có vui nhộn và thử nghiệm - không phải sợ ma và Mplab - sử dụng các tính năng mạnh mẽ và hữu ích để kiểm tra công việc của bạn.

Bạn kiểm tra cú pháp của Tòa nhà ma, Assembler sau đó sẽ mang lại cho bạn một báo cáo hiển thị nếu nó đã được 100% đúng hoặc một danh sách của những gì nó phát hiện ra sai sót.

Mã của bạn sẽ tìm thấy cho tôi, nhưng chỉ là một phần hoàn thành - TMR0 khi sử dụng như là một giờ, bạn phải đảm bảo chức năng Watchdog là tắt.

Bạn có thể nhìn thấy từ pdf / shot màn hình mà bạn có thể ghi các cấu hình trong bit hoặc mã của bạn để làm điều đó qua cửa sổ Cấu hình Bit trong MPlab.

Trên màn hình là bắn, tôi
là bằng cách sử dụng MPLAB SIM chức năng gỡ lỗi, nó chạy về cơ bản mã của bạn, nếu như nó được trong một pic10F200 chip, một cửa sổ Watch đã được tạo ra để cho bạn xem TMR0 incrementing với mỗi chu kỳ - để xem nó hoạt động báo chí F7 - đơn bước - bạn cũng nhìn thấy con trỏ di chuyển dọc theo mã của bạn vì nó executes mỗi hướng dẫn.

hth

Cũng trong thẻ SIM là một tính năng - STOPWATCH - này cho phép bạn một cách chính xác thời gian chức năng, do đó, trong mã của bạn, bạn có thể thời gian bao lâu nó sẽ TMR0 để nhận được từ 00 - 80h

TMR0 để tạo ra bằng cách sử dụng thời gian của bạn Hoan là một trong những cách thức, và trong khi đang đếm TMR0 xuống cốt lõi là miễn phí để làm công việc khác, lớn hơn trên chip có interrupts bạn không cần phải giữ liên tục thử nghiệm để xem nếu nó thực hiện - các gián đoạn sẽ thông báo cho bạn thay thế.

Một cách khác để tạo ra của bạn Thời gian Delay là cổ điển Trê thường lệ, có tải về hương dân cho việc này, các downside của họ là cốt lõi là dành riêng cho những sự chậm trễ vòng lặp không có gì khác để có thể chạy trong khi đó là thực hiện, nhưng nó rất hữu ích nhỏ cho sự chậm trễ của lẻ msec.
Xin lỗi, nhưng bạn cần đăng nhập để xem tập tin đính kèm này

 
Cảm ơn bạn đã trả lời và tìm mẹo có ích.

Thú vị mà bạn đề cập đến tôi có thể sử dụng đơn giản, sự chậm trễ thường xuyên.Điều đó có thể được, ngay cả con đường cho tôi đi.Tôi chỉ cần có một tình huống mà các kết quả đầu ra được toggled cao và thấp, nhưng nếu có một trong những sản lượng cao trong 5 phút hoặc hơn (thậm chí có thể 30 phút - Tôi sẽ điều chỉnh này vào những gì tôi muốn), tôi sẽ đặt tất cả các kết quả đầu ra thấp này bởi vì xin cho biết một điều kiện mà một người sử dụng điện thoại trên bên trái và như vậy unintentionally này giờ chỉ là một thói quen không an toàn.

Tôi đã suy nghĩ ban đầu của việc sử dụng các WDT và SLEEP chế độ, nhưng nó là của tôi hiểu rằng điều này là không đúng phương pháp tiếp cận với các thiết bị 10F200 vì WDT chỉ tốt cho các giờ mili giây hoặc lâu hơn.Bạn có biết nếu điều này là đúng không?

Tôi hiện nay có một thói quen đơn giản looping sự chậm trễ trong mã để xử lý debounce xảy ra khi chuyển đổi là pressed.Quý vị có đề xuất rằng tôi có thể chỉ cần thêm một looping sự chậm trễ thường xuyên, mà chạy vài phút cho sự lựa chọn của tôi?

Tôi mở cho những người khác giờ lại với các giải pháp cũng như 10F200.

Cảm ơn nhiều!

 
Chào,

Các chức năng của Watchdog là để thiết lập lại các vi để bắt đầu chương trình của nó, nếu không phải là giờ lại thường xuyên khởi động lại -
vì vậy sẽ không được suy nghĩ của mình một lựa chọn tốt cho một giờ.

Một điển hình giờ / đồng hồ hệ thống sẽ tạo ra một sự chậm trễ của 1sec và sau đó truy cập lên như một rtc - nhưng điều này thường được thực hiện bởi hệ thống gián đoạn, do đó bạn có thể thực hiện với những thứ khác trong khi các TMRs đang chạy.

Ngày của bạn ít chip của bạn là sự lựa chọn để hạn chế, khó tư vấn cho là tốt nhất mà tôi không biết những gì mà bạn đang cố gắng để đạt được, bạn đề cập đến lao động ở hai đầu ra và chuyển đổi dữ liệu vào với debounce.

Debounce của bạn sẽ được khoảng 50ms - bạn có thể có được một vòng lặp chính của sự chậm trễ của 1sec, nhưng trong vòng loop thêm rằng trong một btfss để xem nếu chuyển đổi đã được báo, nếu để nó dịch vụ sau đó sẽ hành động đó, nhưng sau đó xin thêm về 100ms thêm vào đó sự chậm trễ 1 giây - nhưng tôi nghi ngờ rằng sẽ là một vấn đề cho bạn toàn bộ thông thường.
Tương tự như sự kiểm soát của sản xuất cảng của bạn có thể được thực hiện tại cùng một thời gian hay dựa trên sự thay đổi của một giây phút hoặc cập,
điều này chỉ cần một vài chỉ dẫn mà lại chỉ đi lẻ ms và sẽ làm cho ít sự khác biệt cho bạn thời gian loop.

Xem liên kết này tiện dụng cho một sự chậm trễ mã máy tính
http://www.piclist.com/cgi-bin/delay.exe

 

Welcome to EDABoard.com

Sponsor

Back
Top