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 08-05-2006, 03:17 PM   #1
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Làm thế nào để timeout khi dùng hàm getc() của CCS sau một thời gian nhất định, định trước? GETC() là một hàm mà CCS đã có sẵn trong thư viện của nó, nhiệm vụ của getc() là chờ nhận một ký tự mà ký tự đó được truyền tới từ một đầu cuối khác thông qua công truyền thông nối tiếp UART. Khi dùng hàm này, chúng ta hết sức cẩn trọng bởi cái việc "chờ" một ký tự được coi là hợp lệ. Vấn đề này giải quyết thế nào đây? CCS đã mách rằng, hãy sử dụng hàm khbit(). Sau đây là một ví dụ mà CCS cung cấp để giải quyết vấn đề này:

Code:
short timeout_error;

char timed_getc() {

   long timeout;

   timeout_error=FALSE;

   timeout=0;

   while(!kbhit&&(++timeout<50000))   // 1/2 second

      delay_us(10);

   if(kbhit())

     return(getc());

   else {

     timeout_error=TRUE;

     return(0);

   }

}
Nguyen The Vinh.

thay đổi nội dung bởi: falleaf, 11-05-2006 lúc 10:56 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-05-2006, 03:29 PM   #2
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Cách sử dụng hàm timed_getc()

Code:
char temp;
//...
char timed_getc(){
    //...
}
void main(void){
    //...
    while(1){
         //...
         temp=timed_getc();
         //...
    }
}
Nguyen The Vinh.

thay đổi nội dung bởi: falleaf, 11-05-2006 lúc 10:56 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-05-2006, 03:37 PM   #3
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Vấn đề kỳ tới, mời các bạn cùng tham gia: "Làm thế nào để truyền đi một số thực thông qua cổng truyền thông nối tiếp UART với CCS?"
Nguyen The Vinh.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-05-2006, 03:56 PM   #4
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Ví dụ:
Code:
//...
float temp[32];
void main (void)
{
int8 i;
for(i=0;i<32;i++)temp[i]=i;
while(1)
{
//Bây giờ ta muốn truyền temp[0], temp[1],...,temp[i],...,temp[31]
//cho PC. Phải làm thế nào đây. Xin mời các bạn!
}
}
Nguyen The Vinh.

thay đổi nội dung bởi: falleaf, 11-05-2006 lúc 10:57 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-05-2006, 01:34 AM   #5
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Mình di chuyển bài của bạn ra đây, vì lý do bạn post bài không đúng luồng.

Rất cám ơn những bài viết của bạn, nếu được, bạn nên viết bài kèm theo các sơ đồ nguyên lý minh họa để người đọc dễ theo dõi.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-05-2006, 03:36 PM   #6
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Phương án giải quyết vấn đề truyền mảng số thực

Code:
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

float temp[32];

void main (void)
{
int8 i;
for(i=0;i<32;i++)temp[i]=i;
while(1)
{
//Bây giờ ta truyền temp[0], temp[1],...,temp[i],...,temp[31] cho PC như sau.
for(i=0;i<128;i++) putc(*(&temp[0]+i));
}
}
Nguyen The Vinh.

thay đổi nội dung bởi: falleaf, 11-05-2006 lúc 10:58 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-05-2006, 03:39 PM   #7
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Vấn đề kỳ tới, mời các bạn cùng tham gia: "Làm thế nào để nhận một mảng số thực thông qua cổng truyền thông nối tiếp UART với CCS?"
Nguyen The Vinh.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-05-2006, 11:19 PM   #8
ThanhPhuc
Đệ tử 2 túi
 
Tham gia ngày: Jul 2005
Bài gửi: 35
:
Theo mình bạn nên dùng thêm 1 hoặc 2 phím để định hướng cho việc truyền dử liệu.Ví dụ phím 1 truyền mảng dử liệu trên,phím 2 dùng cho mục đích khác của chương trình.Như vậy dể kiểm soát hoạt động của chương trình,Theo đoạn code của bạn Pic sẻ liên tục gởi số liệu về PC làm PC có thể chỉ nhận được số liệu đầu tiên.Bạn nên thêm lệnh Delay_ms(x); sau lệnh putc... để PC kịp nhận dữ liệu.
ThanhPhuc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 09:55 AM   #9
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Phương án giải quyết vấn đề nhận mảng số thực

Code:
#include <16F877.h>
#device *=16
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=2000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  // 

int8 i;
float temp[32];

#int_rda
void serial_isr() {
*(&temp[0]+i)=getc();
i++;if(i==128)i=0;
}
void main() {
i=0;
do {
//...
} while (TRUE);
}
Nguyen The Vinh.

thay đổi nội dung bởi: falleaf, 11-05-2006 lúc 10:58 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 10:04 AM   #10
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Vấn đề kỳ tới, mời các bạn cùng tham gia: "Tạo một lớp liên kết dữ liệu (Datalink layer) trên cơ sở lớp vật lý (Physical layer) là chuẩn truyền thông công nghiệp RS485?"
Nguyen The Vinh.

thay đổi nội dung bởi: NTVinh, 11-05-2006 lúc 10:54 AM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 10:45 AM   #11
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Vài nét về mô hình OSI.

ISO (International Standardization Organization) có trụ sở tại Giơnevơ, Thụy sĩ. Năm 1977, ISO được giao trách nhiệm thiết kế một chuẩn truyền thông dựa trên lý thuyết về kiến trúc các hệ thống mở, qua đó thiết kế các mạng máy tính. Mô hình này có tên là OSI (Open System Interconnect).
Mô hình OSI tổ chức các giao thức truyền thông thành bảy lớp. Mỗi lớp giải quyết một phần hẹp của việc truyền thông.

7)Application layer
6)Presentation layer
5)Session layer
4)Transport layer
3)Network layer
2)Data link layer
1)Physical layer

Trong phạm trù của mạng truyền thông công nghiệp nhất là với bus trường thì Physical layer, Data link layer được xây dựng và đã được chuẩn hóa ví dụ Profibus-DP, DA. Các lớp khác không được xây dựng hoặc nếu có thì là chỉ là sự bổ xung nho nhỏ, ví dụ Application layer.

Nguyen The Vinh.

thay đổi nội dung bởi: NTVinh, 11-05-2006 lúc 10:57 AM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 11:16 AM   #12
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Giới thiệu các lớp trong mô hình OSI

Lớp 1 : lớp vật lý (physical layer)
Qui định về các tính chất vật lý của hệ thống, chú ý rằng OSI không bắt buộc hay nói cách khác không qui định phải dùng một lớp vật lý cụ thể nào. Tầng vật lý liên quan đến nhiệm vụ truyền dòng bit qua đường truyền vật lý, truy nhập đường truyền vật lý nhờ các phương tiện cơ, điện...
Lớp này định nghĩa vào đặc tính chính của mạng vật lý, bao gồm:
1. Cấu trúc vật lý của mạng.
2. Các định chuẩn cơ học và điện.
3. Mã hoá và định thời gian việc truyền bit.

Lớp 2 : lớp liên kết dữ liệu (data link layer)
Cung cấp phương tiện để truyền thông tin qua liên kết vật lý bảo đảm độ tin cậy. Lớp này qui định về sự đồng bộ hóa, đặc tính của khung dữ liệu, đánh số khung, kiểm tra lỗi, kiểm tra luồng dữ liệu trong quá trình liên lạc.
Lớp nối kết dữ liệu thực hiện các công việc sau:
1. Định địa chỉ các thiết bị trong mạng.
2. Kiểm tra và có thể chỉnh sửa các lỗi truyền thông.
3. Điều khiển truy nhập bus.
...
Các lớp khác không được trình bày ở đây vì mức độ quan trọng của nó trong phạm trù này, cũng như tránh việc gây ra nhiễu người đọc.
Nguyen The Vinh.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 11:40 AM   #13
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Angry Một ví dụ về xây dựng lớp vật lý

Các bạn xem hình sau. Hình vẽ một trạm thiết bị tham gia trong mạng truyền thông Profibus/RS485, cách ly. Ơ lạ nhỉ, sao không gửi được nhỉ?
Nguyen The Vinh.

thay đổi nội dung bởi: NTVinh, 11-05-2006 lúc 12:24 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 12:26 PM   #14
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Em chưa hiểu rõ lắm về ý định của các bài viết, cũng như các vấn đề có liên quan khác. Anh nói rõ hơn nhé.

Anh đang viết về việc xây dựng một hệ thống mở OSI ?? Hay chỉ xây dựng lớp liên kết dữ liệu dựa trên lớp vật lí RS485??

Nếu như vậy thì nó sẽ bao gồm các vấn đề gì nhẩy? Xây dựng cơ chế định địa chỉ, xây dựng cơ chế sửa lỗi, ..., theo các cách như Profibus-DP, DA đã làm ?

Tại sao mình không sử dụng chuẩn Profibus-DP, DA?

Nếu như vậy thì vấn đề này có mối liên quan như thế nào đến hệ thống mở OSI. Nếu anh chỉ đặt vấn đề xây dựng lớp liên kết dữ liệu, thì các giao tiếp chỉ mang tính nội bộ, chứ chưa giao tiếp được với hệ thống OSI, vì nó cần đến các lớp cao hơn. Vấn đề về OSI đặt ra ở đây có tác dụng gì nhẩy. Và tại sao phải tuân theo OSI trong trường hợp này?

Chưa hiểu rõ lắm. Anh giải thích thêm nhé.

Vấn đề này em cũng đang tìm hiểu thôi, theo em biết thì hệ thống OSI tuân theo chuẩn ISO được ứng dụng trong việc trao đổi dữ liệu cho hệ thống máy tính, ngoài ra nó là cơ sở cho các dịch vụ viễn thông (N-ISDN, B-ISDN, ...).

Hì, cái này được đó. Chắc sẽ còn hỏi nhiều.
__________________


thay đổi nội dung bởi: ntc, 11-05-2006 lúc 12:31 PM.
ntc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 12:28 PM   #15
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Trích:
Các bạn xem hình sau. Hình vẽ một trạm thiết bị tham gia trong mạng truyền thông Profibus/RS485, cách ly. Ơ lạ nhỉ, sao không gửi được nhỉ?
Anh bấm cái nút "Đổi sang khung lớn", bên đó có cái phần tải file từ máy đó.
__________________

ntc 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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Căn bản về xử lý ảnh? falleaf Xử lý ảnh 26 21-08-2016 01:14 AM
bài tập thực hành căn bản orcad tanhot Thực hành 24 05-07-2011 09:26 AM
Tự động hóa nguyên công chế tạo tinhthanthep PIC - Thiết kế và Ứng dụng 1 17-01-2006 09:42 AM


Múi giờ GMT. Hiện tại là 01:24 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