PIC Watchdog Timer - EEPROM vấn đề

M

mfacen

Guest
Tôi đang thiết kế một hệ thống khóa mục dựa trên một PIC16F84.Hệ thống đang hoạt động tốt, nhưng một lần vài tháng hoặc để nó khối, tôi nghĩ là do sự can thiệp vào các đường ống.Tôi tryied để bắt đầu sử dụng Watch Dog Timer để đặt lại các vi điều khiển nếu nó gian hàng, nhưng nó resets các everytime chip nó tryies để viết mã mới vào EEPROM ngay cả nếu tôi sử dụng prescaler để tối đa.Tôi sử dụng EEPROM để lưu trữ các mã.
Bất kỳ ý tưởng nào gây ra Watchdog để thiết lập lại chip?Tôi thậm chí được sử dụng CLRWDT ngay tại bắt đầu của eeprom ghi rutine.

 
Chào,

nếu bạn có giao prescaler cho timer0 bạn không thể chỉ định các prescaler cũng để watchdog là có lẽ đây là vấn đề của bạn??

Tôi có kèm theo chức năng EEPROM_write (được lập trình trong C) Tôi đang sử dụng trên các 16F877 có thể bạn thấy cái gì đó là mất tích trong thói quen của bạn??

void EEPROM_write (byte adresse, byte Daten)
(
EEPGD = 0;

làm
(
asm ( "clrwdt");
)
trong khi (WR);

EEADR = adresse;
EEDATA = Daten;
Hồng tước = 1;
Gie = 0;
EECON2 = 0x55;
EECON2 = 0xAA;
WR = 1;
Gie = 1;
Hồng tước = 0;
)

lời chúc mừng tốt đẹp nhất

 
Thanks C-Man cho các ứng FAST!

Tôi không sử dụng TMR0 trên chương trình.Tôi trực tiếp trong chương trình lắp ráp với MPLAB.Tôi đang giao presacaler để wdt việc:

__config _xt_osc & _wdt_on & _pwrte_on & _CP_OFF
bcf option_reg, psaVà đây là eeprom rutine viết:

eewrite
clrwdt
bsf tình trạng, rp0
bcf eecon1, eeif
bsf eecon1, hồng tước
bcf intcon, gie

movlw h'55 '
movwf eecon2
movlw h'aa '
movwf eecon2
bsf eecon1, wr

notyet
btfss eecon1, eeif
clrwdt
goto notyet
bcf eecon1, eeif
bcf eecon1, hồng tước
bsf intcon, gie
bcf tình trạng, rp0
trở vềChương trình này hoạt động tốt trong phần còn lại tất cả các rutines, chỉ là khi tôi nhập mã mới trên bàn phím mà nó resets.Nếu tôi không sử dụng wdt nó viết để eeprom mà không có vấn đề.

Thanks for the help.

 
Điều gì về điều này??notyetclrwdtbtfss eecon1, eeifgoto notyetNếu không, bạn đang mắc kẹt bên trong waitloop mà không đặt lại kiểm ngay khi eeif được thiết lập ...

lời chúc mừng tốt đẹp nhất

 
Tôi quên bài này:

bcf option_reg, ps2; ps2 của psa
bcf option_reg, ps1; ps1 của psa
bcf option_reg, ps0; ps0 của psa

Tôi đang sử dụng prescaler maximun (1:128) cho WDT, mà nên cho nhiều thời gian cho các hoạt động ghi, trong datasheet 16F84 có một hình ảnh mà các tiểu bang cho 5 volts VDD ghi thời gian của EEPROM là chỉ hơn 5ms, các wdt nên thiết lập lại mỗi 18ms x 128 = 2304 ms.Thats rất nhiều thời gian cho các hoạt động viết!Thêm vào sau khi 3 phút:xin lỗi, tôi đăng một cắt và dán từ các chương trình của tôi như đang chạy bây giờ (prescaler = 1)

Tôi đã cố gắng này:

bsf option_reg, ps2; ps2 của psa
bsf option_reg, ps1; ps1 của psa
bsf option_reg, ps0; ps0 của psa

(prescaler = 128)Thêm vào sau khi 2 phút:Ah ok, tôi không nhớ nếu tôi đã cố gắng đó, tôi nghĩ rằng tôi đã làm nhưng không cho shure.

Bây giờ là 2 trong buổi sáng ở đây và vợ tôi sẽ killme nếu tôi bắt đầu tham gia các khóa ngoài, tôi sẽ cố gắng có ngày mai và cho bạn biết.

Thanks ...

 
mfacen đã viết:

Tôi quên bài này:bcf option_reg, ps2; ps2 của psa

bcf option_reg, ps1; ps1 của psa

bcf option_reg, ps0; ps0 của psaTôi đang sử dụng prescaler maximun (1:128) cho WDT, mà nên cho nhiều thời gian cho các hoạt động ghi, trong datasheet 16F84 có một hình ảnh mà các tiểu bang cho 5 volts VDD ghi thời gian của EEPROM là chỉ hơn 5ms, các wdt nên thiết lập lại mỗi 18ms x 128 = 2304 ms.
Thats rất nhiều thời gian cho các hoạt động viết!
Thêm vào sau khi 3 phút:
xin lỗi, tôi đăng một cắt và dán từ các chương trình của tôi như đang chạy bây giờ (prescaler = 1)Tôi đã cố gắng này:bsf option_reg, ps2; ps2 của psa

bsf option_reg, ps1; ps1 của psa

bsf option_reg, ps0; ps0 của psa(prescaler = 128)
 
Có bạn là đúng, tôi đã cắt và dán từ chương trình này vì nó làm việc bây giờ, sai lầm của tôi.Như tôi không thể làm công việc tôi đã cố gắng rất nhiều điều khác nhau và messed nó lên.Tôi không gọi nữa lại ghi rutine eeprom và tôi chỉ sử dụng các mã khóa với tôi khi tôi lập trình đốt cháy chương trình trong PIC này.
Tôi sẽ nhận ra các PIC từ khóa vào ngày mai và đi trough lại chương trình.

Regards ...

 
Ok C-man, điều &%&&%$$% đang làm việc bây giờ.

Vấn đề là một trong những bạn chỉ ra.
Tôi có thể belive Tôi dành tuần bằng văn bản của chương trình và sau đó thất bại trong một điều ngu ngốc như vậy!Vâng, bạn học hỏi từ những sai lầm của bạn phải không?

Thanks for the help.

 

Welcome to EDABoard.com

Sponsor

Back
Top