PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Ngắt RB0 và MCLR ? (http://www.picvietnam.com/forum/showthread.php?t=4124)

bien_van_khat 22-12-2009 08:41 AM

Trích:

Nguyên văn bởi Delfy_Coltech (Post 32365)
Hi all!
Em gặp một lỗi về thời gian xảy ra ngắt RDA.

Tiếp tục với cái project của Em như ở bài trên.
Tư tưởng như sau:
- Khi có tín hiệu về chân RC7, xảy ra ngắt RDA. Biến đếm tăng lên 1 đơn vị.
--> Tăng biến đếm led, hiển thị LCD.

Sao bạn lại dùng int_rda??!!!!!

ngắt RDA là ngắt UART khi nhận được 1 ký tự!

nghia_tdh21 22-12-2009 11:03 AM

Bạn thử đặt lại như thế này xem sao
Code:

  enable_interrupts(GLOBAL);
  enable_interrupts(INT_RDA);
LCD_Display();

Vì hàm LCd_display có hai lần delay(500), nên khi có sản phẩm là nó không kịp đếm. nếu bạn cho phép ngắt trước khi có sản phẩm nó vẫn đếm trong ngắt sau đó hàm LCD_Display sẽ hiển thị số sản phẩm sau.

Delfy_Coltech 22-12-2009 11:43 PM

Trích:

Nguyên văn bởi bien_van_khat (Post 32435)
Sao bạn lại dùng int_rda??!!!!!

ngắt RDA là ngắt UART khi nhận được 1 ký tự!

Hihi, Em quên chưa nói rõ. mỗi sản phẩm của Em được gắn 1 chíp RFID. Cái đầu đọc sẽ đọc thông tin trên chip này và truyền về vi xử lý nhờ giao thức RS-232.
--> Do vậy, mới sinh ra chuyện dùng ngắt RDA để tăng biến đếm luôn bác ạ.
Em sẽ thử lại từng module xem lỗi là do đâu.
Cảm ơn mọi người đã chia sẻ.

Trích:

Vì hàm LCd_display có hai lần delay(500), nên khi có sản phẩm là nó không kịp đếm. nếu bạn cho phép ngắt trước khi có sản phẩm nó vẫn đếm trong ngắt sau đó hàm LCD_Display sẽ hiển thị số sản phẩm sau.
--> Trường hợp bạn nói mình đã thử rồi nhưng vẫn gặp lỗi đó là bỏ qua sản phẩm đầu không đếm.


Múi giờ GMT. Hiện tại là 04:19 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam