• Xưởng sửa chữa và chuẩn chỉnh máy địa vật lý

    Xưởng có nhiệm vụ chính là bảo dưỡng, sửa chữa và hiệu chỉnh các máy móc thiết bị điện tử phục vụ cho các đơn vị trong Xí nghiệp địa vật lý giếng khoan. Ngoài ra xưởng còn nghiên cứu đưa vào ứng dụng và phát triển công nghệ tin học trong công tác địa vật lý

  • Trung tâm Phân tích và Xử lý số liệu

    Có nhiệm vụ đánh giá chất lượng tài liệu do Xí nghiệp Địa vật lý thực hiện.

  • Đội công nghệ cao

    Khảo sát địa vật lý tổng hợp trong giếng đang khoan. Đo địa vật lý tổng hợp, bắn mìn.

  • Đội Kiểm tra công nghệ khai thác

    Có nhiệm vụ là đo khảo sát và kiểm tra công nghệ khai thác trong các giếng khai thác và bơm ép.

  • Đội Carota khí

    Đội Carôta khí có nhiệm vụ chính là khảo sát carota khí, cung cấp kịp thời các số liệu để xác minh trữ lượng, tình trạng các giếng khoan.

  • Đội thử vỉa

    Đội có nhiệm vụ thử vỉa ở các giếng khoan nhằm định hướng cho công tác khoan, xác định tình trạng và đo vỉa, cung cấp thông tin để xác định trữ lượng công nghiệp của giếng

L&TD

LOGGING & TESTING DIVISION

XÍ NGHIỆP ĐỊA VẬT LÝ GIẾNG KHOAN - BẠN ĐỒNG HÀNH CỦA CÁC NHÀ DẦU KHÍ

Giao tiếp I2C(Phần 2)

Thực thi trên vi điều khiển PIC 16F876A
Khối I2C có 6 thanh ghi điều khiển hoạt động, đó là:
- SSPCON: Thanh ghi điều khiển
- SSPCON2: Thanh ghi điều khiển thứ 2
- SSPSTAT: Thanh ghi trạng thái
‐ SSPBUF: Thanh ghi bộ đệm truyền nhận
‐ SSPSR: Thanh ghi dịch
‐ SSPADD: Thanh ghi địa chỉ

 

 

 

Firmware sử dụng CCS - Cấu hình firmware:
- Khai báo chip: chọn file <tenchip.h> có trong thư viện CCS, VD : #include <16F876A.h>
- Khai báo cấu hình phần cứng: sử dụng từ khóa #fuse bao gồm các tính năng :
. LP, XT, HS, RC : Chọn kiểu dao động
. WDT, NOWDT : Kiểm soát Watch Dog Timer.


. PROTECT, NOPROTECT : Kiểm soát sao chép firmware
.LVP,NOLVP: Kiểm soát lập trình nguồn thấp.
- Khai báo cấu hình chức năng sử dụng từ khóa #use bao gồm các tính năng:
. delay(clock=24000000) : Khai báo tốc độ thạch anh
. i2c(master, sda=PIN_C4, scl=PIN_C3, FAST) : Khai báo cấu hình I2C
. rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7): Khai báo cấu hình cổng COM
Khai báo dịch vụ ngắt, sử dụng từ khóa:


INT_SSP : Ngắt nối tiếp khi thanh ghi dịch vừa thực hiện xong 8 bits.
INT_EXT : Ngắt ngoài
INT_TIMER1: Ngắt Timer
INT_EEPROM: Ngắt khi có sự kiện truy xuất EEPROM.
Chương trình chính main() Master:
- Chương trình chính sống trong vòng lặp While
while (TRUE) {
Nội dung chương trình
}
Ghi dữ liệu tới Slave :
i2c_start(); // Master tạo tín hiệu Start
i2c_write(0xa0); // Gửi địa chỉ và bít hướng R/W = 0 (Mode write) đến Slave
i2c_write(data); // Gửi dữ liệu byte thứ nhất
i2c_write(data1); // Gửi dữ liệu byte thứ hai
………………….
i2c_write(datan); // Gửi dữ liệu byte thứ n (n<=128)
i2c_stop(); // Master tạo tín hiệu Stop

Đọc dữ liệu từ Slave:
i2c_start(); // Master tạo tín hiệu Start
i2c_write(0xa1); // Gửi địa chỉ và bít hướng R/W = 1 (Mode read) đến Slave
buf = i2c_read(); // Đọc dữ liệu byte thứ nhất
buf2= i2c_read(); // Đọc dữ liệu byte thứ hai
……………………
buf1 = i2c_read(1,0); // Đọc dữ liệu byte thứ n (n<=128) đồng thời gửi Not-ACK
i2c_stop(); // Master tạo tín hiệu Stop

Scope: Master phát địa chỉ "0xa0" và 2 byte có nôi dung "1234"

Firmware cho Slave
Khai báo cấu hình cho Slave:
i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, address=0xa0)
INT_SSP
Cấu hình ngắt nối tiếp :
enable_interrupts(GLOBAL);
enable_interrupts(INT_SSP);
Việc đọc, ghi dữ liệu của thiết bị Slave được thực thi trong ngắt tùy thuộc vào trạng thái của đường truyền I2C.
state = i2c_isr_state(); // Đọc trạng thái của I2C Slave sau sự kiện ngắt nối tiếp
. State = 0 : Đọc địa chỉ và bit R/W
. State = 1-0x7F: Đọc dữ liệu từ Master bằng lệnh i2c_read()
. State = 0x80: Đọc địa chỉ và bit R/W=1, gửi dữ liệu tới Master bằng lệnh i2c_write();
. State =0x81-0xFF : Nhận được ACK từ Master , Gửi dữ liệu tới Master.
Đọc dữ liệu từ Master:
if(state < 0x80) {
incoming = i2c_read();
if(state == 1) data = incoming;
if(state == 2) data1 = incoming;
………………………………………
if(state == n) datan = incoming;
}
Ghi dữ liệu tới Master:
if(state == 0x80) i2c_write(data);
if(state == 0x81) i2c_write(data1);
…………………………………………
if(state == 0x8n) i2c_write(datan);

Scope: Master phát địa chỉ "0xa1" và đọc 3 byte từ Slave

                                                                                        Nhóm tác giả NXQ-VAĐ-LMC

 

 

 

 

 

Video

Quản lý online

Liên kết nội bộ

Giá dầu