PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 22-03-2008, 11:40 AM   #1
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
bài viết của em là khi có data từ pc gởi xuống thì lưu vào mang chu[]. và khi gặp giá trị 255 tức là giá trị kết thúc chuổi đã gởi và gọi chương trình viết vào eeprom. việc viết vào địa chỉ eeprom tuỳ thuộc vào giá trị chu[0] trong chuổi để chọn các địa chỉ khác nhau (add1 .. add4). do đó khi đọc các chuổi trong eeprom ra thì chọn đại chỉ nào thì đọc được địa chỉ đó và đọc đúng chuổi gởi vào.
cách giải thích của anh em cũng chưa hiểu rỏ lắm và chưa biết cách khác phục lại phần mềm như thế nào mong anh chỉ rỏ thêm
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-03-2008, 07:11 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Cách tốt nhất là bạn tham khảo ví dụ ghi EEPROM của CCS C và chỉnh sửa lại cho phù hợp với yêu cầu của bạn.

Lấy ví dụ đơn giản, bạn có chuỗi 1 sẽ được ghi vào EEPROM. Ở đầu hàm viet_eeprom(), bạn đã cấm ngắt toàn cục. Khi thực hiện ghi chuỗi 1, bạn gọi hàm write_eeprom(b1, s) để ghi lại giá trị của s. Về nguyên tắc, hàm write_eeprom() của CCS C dùng khả năng ghi vào EEPROM của phần cứng bên trong PIC, do đó sẽ kích hoạt cờ EEIF khi đã ghi xong byte s đó vào b1. Theo yêu cầu của phần cứng, có lẽ hàm write_eeprom() của CCS C sẽ xóa cờ EEIF trong trường hợp polling và để nguyên nó nếu bạn có dùng #INT_EEPROM (để trình phục vụ ngắt #INT_EEPROM có thể xử lý như thiết kế).

Vì ngắt toàn cục đã bị cấm, hàm viet_eeprom() của bạn tiếp tục chạy đến vòng lặp để ghi chuỗi vào vùng nhớ add1. Như đã nói ở trên, cứ sau mỗi lần ghi được 1 byte vào EEPROM, cờ EEIF sẽ được bật, và có lẽ sẽ không được xóa vì bạn đã khai báo có dùng #INT_EEPROM. Tôi không rõ hàm write_eeprom() sẽ làm gì trong trường hợp này (đây cũng là một trong những lý do khiến tôi không thích những hàm built-in của CCS C, vì hành vi của chúng không được giải thích rõ ràng).

Hành vi của hàm viet_eeprom() của bạn phụ thuộc vào hành vi không được biết rõ của hàm write_eeprom(). Và cách viết code của bạn là không thân thiện với cấu trúc ngắt của PIC.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-03-2008, 12:30 PM   #3
LeDuc
Đệ tử 6 túi
 
LeDuc's Avatar
 
Tham gia ngày: Mar 2007
Bài gửi: 150
:
Trích:
Nguyên văn bởi tungtot_vl View Post
bài viết của em là khi có data từ pc gởi xuống thì lưu vào mang chu[]. và khi gặp giá trị 255 tức là giá trị kết thúc chuổi đã gởi và gọi chương trình viết vào eeprom. việc viết vào địa chỉ eeprom tuỳ thuộc vào giá trị chu[0] trong chuổi để chọn các địa chỉ khác nhau (add1 .. add4). do đó khi đọc các chuổi trong eeprom ra thì chọn đại chỉ nào thì đọc được địa chỉ đó và đọc đúng chuổi gởi vào.
Theo mình bạn kô nên sử dụng ngắt eeprom , bạn nên viết một hàm con cho việc ghi và đọc eeprom , như vậy sẽ trách được việc ngắt eeprom bi sai vì bạn ghi và đọc cả mãng giá trị lận ..Mình cũng thường sử dụng cách trên để ghi và đọc một mãng giá trị ... Và việc nạp và sử dụng mình chưa bao giờ bị mất dữ liệu trong eeprom ...
Có gì thì trao đổi thêm ha.. !!
__________________
_________________________________________________
Le Trung Duc
Industry Research & Application Center
NTT Institute of Hi_technolog
ltduc@ntt.edu.vn
leduc_cktd@yahoo.com.vn
http://www.nttc.edu.vn
CNC DIY : http://quangcaosanpham.com/shop/driverservo
0909300332

thay đổi nội dung bởi: LeDuc, 24-03-2008 lúc 12:43 PM.
LeDuc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 03:09 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam