Giao Tiếp 1 dây (1-Wire) Dùng PIC16F887 và DS2413
1 Attachment(s)
http://i1142.photobucket.com/albums/...ps6af8c7b5.png
Chào mọi người! Giao tiếp 1 dây với MCU (1-wire) hiện đang được dùng với nhiều thiết bị, đặc biệt là của maxim (chuẩn này do maxim giới thiệu nhé): DS18B20 dùng để đo nhiệt độ, DS2413 switch định địa chỉ... Hôm trước tình cờ cần làm con DS2413 nên có ngâm cứu lại cái này 1 chút, nhưng khi khi ở chế độ multiple devices thì hơi khó chịu vì tìm hoài không thấy code trên mạng. Nên mình xin chia sẻ thư viện này mình viết lại dựa trên nhiều nguồn trên internet (onewire.c, onewire.h) Code này hoàn toàn chạy với các dòng 1-wire của maxim Project này cơ bản là dùng 1 chân của PIC16F887 để điều khiển từng LED riêng biệt thông qua các nút nhấn. File download sẽ bao gồm: - File mô phỏng bằng Proteus - Thư Viện 1-Wire - Code cho DS2413 Những hàm trong thư viện 1-wire: Code:
unsigned char OneWire_Reset(); // Reset Code:
// @Function: Define IO for One-Wire Devices (cho phép mình k dịch ra tiếng việt nhé :O ) Code:
// @Function: Specific define ROM Command for DS2413 Đầu tiên phải ghi dữ liệu ở chế độ đảo (1st complement) rồi mới ghi dữ liệu mình cần vào (thực chất thì nó hiều dữ liệu mình cần ghi là dữ liệu đảo của nó :D), Nên mình dùng lệnh viết đầu tiên là 0xff-data. và phải theo đúng thứ tự thế này nó mới hoạt động nhé: Code:
OneWire_MatchROM(FoundROM,DS); //Match with specific device Để điều khiển nhiều thiết bị thì đầu tiên ta phải tìm device đầu tiên, rồi tiếp theo...đến khi không còn device nào nữa thì hàm sẽ trả về giá trị báo lỗi, trong quá trình tìm thì địa chỉ ROM của device sẽ được lưu vào mảng 2 chiều FoundROM[MaxDevice][DataofDevice=8] ROM của 1 device 1-wire là 64bit = 8 bytes nên DataofDevice sẽ là 8, còn MaxDevice sẽ tùy thuộc vào số lượng device trên đường truyền và quan trọng nhất là phụ thuộc vào ram của MCU, ở đây mình dùng PIC16F887 nên mình khai báo 8 devices thôi, khai báo ở define sau: Code:
#define ONEWIRE_DEVICE_ADDRESS_LENGTH 8 Chúc vui! |
Múi giờ GMT. Hiện tại là 10:03 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