PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

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

PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 12-12-2008, 04:47 PM   #1
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Hỏi cách ghép nối pic và ic thời gian thực ds12887

Mình đang làm 01 ứng dụng có liên quan đến thời gian thực nhưng không biết tí gì về con RTC ds12887.Bạn nào có tài liệu ghép nối giữa pic6f877a và RTC thì cho mình với.Cảm ơn trước nha!

thay đổi nội dung bởi: lequocbao, 16-12-2008 lúc 12:45 PM.
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-12-2008, 05:49 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
Trích:
Nguyên văn bởi lequocbao View Post
Mình đang làm 01 ứng dụng có liên quan đến thời gian thực nhưng không biết tí gì về con RTC ds12887.Bạn nào có tài liệu ghép nối giữa pic6f877a và RTC thì cho mình với.Cảm ơn trước nha!
Đọc datasheet của DS12887 (link ở đây:
http://datasheets.maxim-ic.com/en/ds...-DS12C887A.pdf) cho thấy chip này giao tiếp kiểu byte, với địa chỉ và dữ liệu được dồn kênh vào các chân AD0..AD7. Do đó, cần một port 8-bit của PIC để nối vào các chân này. Ngoài ra, các chân dùng cho mục đích giao tiếp gồm có: CS, AS, DS, R/W (đây là những chân bắt buộc phải kết nối với PIC). Những chân giao tiếp còn lại là tùy chọn (xem datasheet về thông tin chi tiết). Tất nhiên các chân nguồn cần được nối, và chú ý chân VBAT (xem datasheet).

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 13-12-2008, 02:26 PM   #3
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Chà! ngoài con ds12887 này ra mình còn con RTC nào khác không anh Namqn(càng ít chân càng tốt)?vì pic em còn dư có 1 port (8 pins) ah!vậy là không đủ để giao tiếp rồi!
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-12-2008, 04:00 PM   #4
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
Trích:
Nguyên văn bởi lequocbao View Post
Chà! ngoài con ds12887 này ra mình còn con RTC nào khác không anh Namqn(càng ít chân càng tốt)?vì pic em còn dư có 1 port (8 pins) ah!vậy là không đủ để giao tiếp rồi!
Có khá nhiều RTC giao tiếp với vi điều khiển bằng các giao thức nối tiếp. Chẳng hạn, DS1307 dùng giao thức I2C, đã được giới thiệu trong tutotial 4 cho dsPIC của tôi. Bạn có thể tham khảo thông tin về DS1307 trong tài liệu đó.

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 15-12-2008, 10:59 AM   #5
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Em đã chọn dùng con ds1307 r (chỉ có 8 chân thôi hì hì).Cảm ơn anh Namqn nhiều!
Nhưng anh cho em hỏi là ds1307 chỉ cho nhập xuất dữ liệu dạng mã BCD, mà mã BCD là như vậy phải không anh?
vd:
số 0(decimal):00000000
số 1 :00000001
số 2 :00000010
số 3 :00000011
số 4 :00000100
số 5 :00000101
số 6 :00000110
số 7 :00000111
số 8 :00001000
số 9 :00001001

nếu đúng thì mình có cách nào chuyển thành số decimal không?tại vì em đang xử lý dữ liệu trong pic bằng số decimal.
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-12-2008, 04:52 PM   #6
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
Trích:
Nguyên văn bởi lequocbao View Post
Em đã chọn dùng con ds1307 r (chỉ có 8 chân thôi hì hì).Cảm ơn anh Namqn nhiều!
Nhưng anh cho em hỏi là ds1307 chỉ cho nhập xuất dữ liệu dạng mã BCD, mà mã BCD là như vậy phải không anh?
vd:
số 0(decimal):00000000
số 1 :00000001
số 2 :00000010
số 3 :00000011
số 4 :00000100
số 5 :00000101
số 6 :00000110
số 7 :00000111
số 8 :00001000
số 9 :00001001

nếu đúng thì mình có cách nào chuyển thành số decimal không?tại vì em đang xử lý dữ liệu trong pic bằng số decimal.
Số BCD thì mã hóa như vậy là đúng rồi. 4 bit cho một chữ số thập phân, chẳng hạn, 99 sẽ có mã BCD là '10011001'.

Dữ liệu trong vi điều khiển được lưu ở dạng nhị phân. Không rõ bạn lưu dữ liệu và xử lý bằng số decimal như thế nào, và thực tế bạn thực hiện những phép toán gì?

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 16-12-2008, 12:38 PM   #7
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Thì các biến em đều khai báo là int8,gán giá trị cho biến là các số thập phân và thực hiện các phép toán +,- ,so sánh bình thường.
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-12-2008, 04:33 PM   #8
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
Trích:
Nguyên văn bởi lequocbao View Post
Thì các biến em đều khai báo là int8,gán giá trị cho biến là các số thập phân và thực hiện các phép toán +,- ,so sánh bình thường.
Nếu vậy bạn chỉ cần chuyển mã BCD về nhị phân thôi. Các giá trị trong mã nhị phân, thập phân, hay thập lục phân đều như nhau, chỉ có cách biểu diễn (đối với con người) là khác nhau thôi. Tức là, giá trị 11 trong mã nhị phân, thập phân, hay thập lục phân đều vẫn là 11, chỉ khác là được viết thành '00001011' trong mã nhị phân, '11' trong mã thập phân, và 'B' trong mã thập lục phân (để cho thuận tiện khi viết).

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

thay đổi nội dung bởi: namqn, 16-12-2008 lúc 05:44 PM. Lý do: viết nhầm
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-12-2008, 05:19 PM   #9
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Như vậy với lệnh:
x=0b00001010;
if (x=0xa);
thì kết quả vẫn là true đúng không anh?

và khi em nhận 01 byte dữ liệu từ ds1307 vào pic và byte đó được lưu tạm thời trong biến có kiểu là int8 thì mặc nhiện byte dữ liệu đó đang được biểu diễn dưới dạng nhị phân đúng không anh?
vd:
ds1307 truyền đi số 10 (mã BCD) là:00000001(MSB đi đầu - chổ này e không chắc có đúng không nữa,nếu sai anh góp ý giúp e nha!).
nhưng khi pic lần lượt nhận vào sẽ là:10000000(binary) sẽ có giá trị là 128 thập phân.
Em hiểu như vậy có đúng không?




anh Namqn ơi! 11 thập phân là 00001011b chứ đâu phải là 00010011b đâu anh!hì hì...

thay đổi nội dung bởi: lequocbao, 16-12-2008 lúc 05:40 PM.
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-12-2008, 05:49 PM   #10
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
Trích:
Nguyên văn bởi lequocbao View Post
Như vậy với lệnh:
x=0b00001010;
if (x=0xa);
thì kết quả vẫn là true đúng không anh?

và khi em nhận 01 byte dữ liệu từ ds1307 vào pic và byte đó được lưu tạm thời trong biến có kiểu là int8 thì mặc nhiện byte dữ liệu đó đang được biểu diễn dưới dạng nhị phân đúng không anh?
vd:
ds1307 truyền đi số 10 (mã BCD) là:00000001(MSB đi đầu - chổ này e không chắc có đúng không nữa,nếu sai anh góp ý giúp e nha!).
nhưng khi pic lần lượt nhận vào sẽ là:10000000(binary) sẽ có giá trị là 128 thập phân.
Em hiểu như vậy có đúng không?




anh Namqn ơi! 11 thập phân là 00001011b chứ đâu phải là 00010011b đâu anh!hì hì...
Câu hỏi đầu tiên của bạn: đúng.

Byte nhận về từ DS1307 có dạng số BCD, bạn lưu vào biến int8 thì nó vẫn số BCD.

Bạn chưa cần quan tâm đến việc truyền dữ liệu nối tiếp ra sao. Chỉ cần hiểu nếu DS1307 trả về giá trị 10 (BCD) thì bạn sẽ nhận được giá trị 10 (BCD) trong PIC (giả thiết bạn đang dùng module I2C của PIC).

Tôi đã viết nhầm 11 thập phân là 00010011 trước đó, đã sửa lại như bạn chỉ ra.

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 16-12-2008, 06:22 PM   #11
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Đúng là em đang dùng modul i2c để giao tiếp pic16f877a với ds1307.
Đồng ý là ds1307 trả về số 10(BCD) và chắc chắn pic sẽ nhận được số 10(BCD)
Cái em muốn hiểu là số 10(BCD) như ví dụ trên sau khi được lưu vào biến trong pic thì khi đó bản thân vđk pic sẽ hiểu cái giá trị thực sự trong biến là bao nhiêu?10 hay 128 thập phân?
vì em cần xử lý +,- so sánh ...biến đó với các giá trị thập phân có sẳn trong pic anh ah!
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-12-2008, 06:49 PM   #12
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
Trích:
Nguyên văn bởi lequocbao View Post
Đúng là em đang dùng modul i2c để giao tiếp pic16f877a với ds1307.
Đồng ý là ds1307 trả về số 10(BCD) và chắc chắn pic sẽ nhận được số 10(BCD)
Cái em muốn hiểu là số 10(BCD) như ví dụ trên sau khi được lưu vào biến trong pic thì khi đó bản thân vđk pic sẽ hiểu cái giá trị thực sự trong biến là bao nhiêu?10 hay 128 thập phân?
vì em cần xử lý +,- so sánh ...biến đó với các giá trị thập phân có sẳn trong pic anh ah!
Số 10 (BCD) được biểu diễn là '00010000' trong mã nhị phân, hay 0x10 trong mã thập lục phân, hay 16 trong mã thập phân.

Như tôi đã nói trước đó (post #8), bạn chỉ cần chuyển các số BCD thành dạng nhị phân trước khi tính toán, so sánh với các hàm có sẵn. Hoặc bạn có thể tự viết các hàm tính toán, so sánh số BCD, và không cần chuyển dạng thành nhị phân.

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 18-12-2008, 12:22 PM   #13
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Đã hiểu vấn đề, em cảm ơn anh Namqn nhiều!
lequocbao vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bà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à 06:54 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