PDA

View Full Version : PIC18F458 bị tự động reset


hanhluckyly
05-03-2008, 08:21 PM
Có bạn nào đã gặp trường hợp này chưa , chương trình đang chạy được khoảng 2 phút tự nhiên PIC bị reset về trạng thái lúc đầu

Có bạn nào biết cách khắc phục , giúp mình với

Cám ơn rất nhiều

namqn
05-03-2008, 08:47 PM
Có bạn nào đã gặp trường hợp này chưa , chương trình đang chạy được khoảng 2 phút tự nhiên PIC bị reset về trạng thái lúc đầu

Có bạn nào biết cách khắc phục , giúp mình với

Cám ơn rất nhiều
Bạn cấu hình cho PIC ra sao (có bật WDT hay không)? Bạn kết nối chân MCLR ra sao?

Thân,

hanhluckyly
06-03-2008, 11:19 AM
Chào anh


Chân MCLR em dùng điện trở kéo lên thôi, em không bật WDT

Hiện tượng bị như sau

em dùng PIC18F458 để điều khiển tốc độ động cơ DC 24V(PWM) , em cho động cơ chạy không tải , thì sau một khoảng thời gian (thời gian không cố định) thì PIC tự động bị reset. Thay nhiều PIC cùng loại đều bị hiện tuộng như thế

em thật sự không hiểi tại sao cả!!

0903579509
06-03-2008, 12:53 PM
Trước đây tôi thường viết phần mềm trên họ AT89 bằng hợp ngữ, việc vào ra CT con và kích hoạt ngắt không cẩn thận sẽ dẫn đến việc tràn ngăn xếp hoặc POP ngăn xếp không đúng, điều đó dẫn đến RESET hoạt vi điều khiển chạy không theo mong muốn.

hanhluckyly
06-03-2008, 02:09 PM
Bạn ơi bạn có thể cho mình 1 ví dụ như thế nào là
- Vào ra chương trình con 1 cách hợp lý
- Kích hoạt ngắt không cẩn thận là thế nào vậy bạn


-không biết là có khả năng này không: chương trình CCS bộ compile của nó bị lỗi
- Hay PIC là hàng sample khác với hàng không sample

falleaf
06-03-2008, 03:48 PM
Bạn ơi bạn có thể cho mình 1 ví dụ như thế nào là
- Vào ra chương trình con 1 cách hợp lý
- Kích hoạt ngắt không cẩn thận là thế nào vậy bạn


-không biết là có khả năng này không: chương trình CCS bộ compile của nó bị lỗi
- Hay PIC là hàng sample khác với hàng không sample

Chỉ có cách em post chương trình em viết lên đây, còn lại thì không còn cách nào mà ngồi mò bệnh kiểu này được. Em thử đơn giản hoá chương trình, các phần không cần thiết, như bỏ các phần điều khiển, cứ cho PIC chay điều khiển động cơ ở PWM cố định thôi xem có xảy ra hiện tượng gì không. Bỏ hết các ngắt xem sao.

Kiểm tra từng lỗi một. Nếu không thể làm vậy, tốt hơn em nên gửi source code lên để mọi người cùng tham khảo, cái kiểu chẩn bệnh mò anh nghĩ mọi người cũng chán lắm rồi.

Chúc vui

hanhluckyly
07-03-2008, 08:54 PM
Anh Nam ơi anh có thể share giúp em chương trình nạp bootloader cua PIC18F458
20 MHz baud 115200 , trong đó anh tắt dùm em chức năng watch dog timer , em phát hiện ra hình như tất cả bootloader của PIC18F458 mà em có hình như đã config sẵn WDT là ON rồi

-Ah tiện thể anh cho em hỏi là nếu như khi nạp bootloader không có WDT thì trong chương trình CCSC mình có thể bật nó lên được không (hàm setup_WDT(ON);) và ngược lại nếu nạp bootloader mà có WDT thì mình có thể disable nó được không?

Cám ơn anh rất nhiều

namqn
07-03-2008, 10:30 PM
Anh Nam ơi anh có thể share giúp em chương trình nạp bootloader cua PIC18F458
20 MHz baud 115200 , trong đó anh tắt dùm em chức năng watch dog timer , em phát hiện ra hình như tất cả bootloader của PIC18F458 mà em có hình như đã config sẵn WDT là ON rồi

-Ah tiện thể anh cho em hỏi là nếu như khi nạp bootloader không có WDT thì trong chương trình CCSC mình có thể bật nó lên được không (hàm setup_WDT(ON);) và ngược lại nếu nạp bootloader mà có WDT thì mình có thể disable nó được không?

Cám ơn anh rất nhiều
Đã dịch bootloader theo yêu cầu của bạn (tôi gửi lên diễn đàn ngay sau khi dịch, nên chưa thử nghiệm bootloader với cấu hình này), những từ cấu hình đã thiết lập như sau:
CONFIG OSC = HS, OSCS = OFF
CONFIG PWRT = ON, BOR = ON, BORV = 27
CONFIG WDT = OFF, WDTPS = 128
CONFIG STVR = ON, LVP = OFF, DEBUG = OFF

Về câu hỏi của bạn, nếu trong từ cấu hình chúng ta tắt WDT thì có thể bật/tắt WDT bằng phần mềm, thông qua bit SWDTEN của thanh ghi WDTCON. Hàm nào của CCS C cho phép làm việc này thì tôi không rõ, vì tôi không dùng CCS C. Bạn có thể thử nghiệm và post lên diễn đàn để giúp cho những bạn khác. Nếu trong từ cấu hình chúng ta bật WDT thì không thể tắt WDT bằng phần mềm.

Về vấn đề bạn đã gặp, không nhất thiết phải dùng bootloader khác, bạn chỉ cần thêm một lệnh xóa WDT vào vòng lặp chính là được.

Thân,

phamhoanganhbk
18-06-2011, 06:24 PM
mọi người ơi cho mình hỏi với trong CCS phần cài đặt timer chỗ WDT có cái thanh ghi WDTCON có mấy cái để chọn là div by 2 div by 4, times 1 times 2 là như thế nào vậy ta. thanks mọi người nha