Xin chỉ chỗ sai trong chương trình test giao tiếp máy tính qua r485
Collapse
X
-
Uhm đêm wa không ngủ làm cái coverter 232 - 485 và một cái slave dạng auto direction và plug and play liền
. Mình cho truyền nhận đúng như bạn nói không sai một kí tự nào rất tốt.
mặc dù mình chơi thạch anh 16Mhz. (error 9600 0.2%).
giờ mình mới bắt đầu viết test thử để làm thêm các slave khác và ngoại vi hoàn chỉnh ..
- Để kiểm tra địa chỉ khi master gửi xuống mình thử làm một cái đơn giản thế này nhé (nếu cp gửi A thì sẽ on một con led ( katot nối với PORTC.5). Nếu gửi B thì sẽ off nó đi.
+) Khi mình test với một vài dòng code kiểu này thì nó chạy rất oke :
+) Tiếp đó mình không mún dùng dạng if để kiểm tra mà dùng switch case thì kết quả tệ chắc sai rùi mà mình chưa nhìn ra . Bạn chỉ xem sai chỗ nào nhé... ( Khi mình gửi các kí tự thường (kô phải kí tự viết hoa (thì led luôn sáng vì mặc định ban đầu khởi tạo là ở mức thấp mà nên sẽ cấp đất cho led . Vcc thì lun được cấp cố định vào anot rùi). Tiếp theo khi mình gửi A hoặc B thì led lập tức tắt lun và cho dù mình có gửi kí tự gì xuống nó cũng không sáng lại .Code:[COLOR="Blue"]while(rx_counter >0 ) [/COLOR] { // putchar(getchar()); // } // switch( getchar()) // { [COLOR="Blue"] if('A'== getchar())[/COLOR] // case 'A' : [COLOR="Blue"] PORTC.5 = 0; // sáng led[/COLOR] // delay_ms(100); [COLOR="Blue"] if('B'== getchar())[/COLOR] // case 'B' : [COLOR="Blue"] PORTC.5 = 1; // tắt led[/COLOR] //delay_ms(100); // default : ; }
đoạn code như thế này :
??Code:while(rx_counter >0 ) { // putchar(getchar()); // } [COLOR="Blue"] switch( getchar())[/COLOR] // { // if('A'== getchar()) [COLOR="Blue"] case 'A' : PORTC.5 = 0; // on led[/COLOR] // delay_ms(100); // if('B'== getchar()) [COLOR="Blue"] case 'B' : PORTC.5 = 1; // off led[/COLOR] //delay_ms(100); [COLOR="Blue"] default : ;[/COLOR] }
Leave a comment:
-
khung truyền thì tự do mình định thôi.
ví dụ như một khung truyền gồm 4 byte.
byte1 là địa chỉ của cần truyền tới.byte2 là mã lệnh,byte3 là nội dung,byte4 là byte kiểm tra lỗi(ví dụ CRC).
khi bạn lựa chọn chế độ đa xử lý(9 bit),bits thứ 9 bạn set lên 1(đối với byte address) còn các byte ko fai là địa chỉ thì có bít thứ 9 là 0.
khi các điểm mạng nhận được byte address thì nó kiểm tra xem có fai địa chỉ của minh ko?nếu đúng thì nhận tiếp các byte sau(đủ một khung).
còn nếu không phải địa chỉ của mình thì nó bỏ qua tất cả các byte sau,chỉ nhận byte địa chỉ của khung truyền tiếp theo và kiểm tra như trên.như vậy các node mạng khong được gọi sẽ không mất thời gian xử lý các byte không fai gửi cho mình (cụ thể ở dây là các byte dữ liệu).
Leave a comment:
-
Bạn có thể nói rõ hơn về chế độ này và cách thiết lập : Bởi như mình hình dung định làm thì vd CP truyền frame : địa chỉ slave + địa chỉ thiết bị + lệnh yêu cầu +lỗi ( như vậy chẳng hạn thì tất cả các slave đều mất thời gian thu frame này rồi mới so sánh với địa chỉ có khớp với nó kô thì đúng là mất thời gian vô ích.
Leave a comment:
-
ok.có j bạn cứ hỏi.mình trả lời dc thì mình nói,nếu ko có rất nhiều cao thủ về lĩnh vực này đó.
bạn có dung chế độ đa xử lý hay ko vậy.bạn nên dùng chế độ này vì khi truyền nhận nhiều thì các slave # sẽ mấy thời gian xử lý dữ liệu ko phải truyền cho nó.
Leave a comment:
-
Nếu bạn đã làm tốt phần này thì rất mong được bạn giúp đỡ ! bạn có thể cho mình đc mail kô ? nếu có gặp bí thì mình xin hỏi vậy !
Leave a comment:
-
dúng rùi.đánh giá chất lượng thì mình ko dám,nhưng dùng cổng not hay dùng một transistor để điều khiển thì ko cần bận tâm đến các giá trị tụ,trở như dùng 555
Mình làm mạng gồm 4 điểm,pc(master) +3 slave thôi,để phục vụ cho học tập mà.
còn phần slave bạn dang nhận dữ liệu thì theo nguyên tắc nó chỉ họat động bán song công thôi nên ko thể vừa truyền vừa nhận dữ liệu cùng một lúc được.
Leave a comment:
-
Trong diễn đàn này thấy bác Hoctro89xxxx cũng có nói về mạch này và đã làm thành sản phẩm và chạy tốt.. mặc dù là dùng cổng not bằng CD4069 có độ trễ tín hiệu vào ra lớn hơn con 74LS004 mà vẫn oke thì ổn wa... Có một điều khó hơi khó hiểu là khi Tx truyền bit 1. thì 485 của mình cho phép nhận trong khi nó đang muốn truyền đi. Mình chưa giải thích được đoạn này có Mấy Mod ở nước ngoài cũng nói trong xuốt quá trình truyền thì pin_23 phải luôn ở mức cao.. nhưng cũng có thể họ chưa làm mạch kiểu này bao giờ . Theo trang web mà mình đọc được nói về chuẩn 485 cũng nói về phương pháp auto.. có một mạch kiểu này nhưng dùng 555 bạn có đánh giá gì về chất lượng 2 kiểu này không ?
Leave a comment:
-
Nếu có dạng sóng để đo thì giải thích thật thấu đáo nhỉ ? Mình không giám nghi ngờ về phương pháp bởi thực tế mạch chạy tốt và truyền không sai dữ liệu thì chẳng thể nào phủ nhận nó là một phương pháp khả thi thực sự. Vậy là chỉ cần từ với hai cổng Not là có thể giải quyết được vấn đề điều khiển hướng truyền của 485. cả ở phía CP (master) và avr (slave).
- Không biết bạn làm với bao nhiêu slave vậy ?
Leave a comment:
-
cái đó mình chưa đo, nhưng mình đã làm,và chạy tốt,dữ liệu truyền nhận đều ổn.
mà mạch đó có thể không hoạt động được với tốc độ truyền cao cỡ vài M,bởi vì bạn còn phải xem tần số hoạt động tối đa của các linh kiện sử dụng.
ví dụ max485 có fmax là 2.5M.
nói chung là truyền nhận với tốc độ <M hoàn toàn ổn.
Leave a comment:
-
mình có tham một chút ở forum của nước ngoài thì mod ở đó nghi ngờ về khả năng hoặt động chính xác của mạch này bạn có dạng sóng oscilloscope gì của nó không ?Nguyên văn bởi xl09 Xem bài viếtDúng rùi.
còn phần AT truyền bít 1 lên như đã nói ở trên.khi xuất bít 1 ra TXD như vậy DE,DI có mức 0,75176 nhận dữ liệu hay ở trạng thái trở kháng cao,khi đó trên đường truyền luôn có mức logic 1(bạn dọc lại datasheet của 75176) như vậy bên nhận sẽ nhận được logic 1 mà bạn truyền.
khi kết thúc một byte truyền là bít stop(1) do vậy DI,DE bên truyền ở mức 0,luôn cp nhận dl.còn bên nhận luôn nhận logic 1.
như vậy trạng thái truyền nhận của 75176 luôn thay đổi theo bít dữ liệu bạn truyền là 1 or 0 nên trên đường truyền cũng có các mức logic thay đổi theo
Leave a comment:
-
Bạn nói gì mình không hiểu. việc này chỉ đơn thuần <=> muốn test cổng com của máy tính thì nối tắt chân 2 và 3 của cổng com rồi gửi ở test bos truyền sẽ có tín hiệu trả về ở test box nhận. Mình đã test kiểu này và thấy nó đúng như vậy. ==> cổng com của mình vẫn tốt và chương trình test vb không có vấn đề gì.
---- bây giời mình muốn test xem con max232 của mình có hoạt động được không thì mình phải nối tắt hai chân 11 và chân 12 ở phía TLL của max232 là đúng chứ sao lại sai vậy bạn ?
http://www.mediafire.com/?2erknjxydcu
Leave a comment:
-
ban lam như vay thì làm sao mà nó nhận dc dl.
chan 12 của max 232 của bạn chính là tín hiệu TXD (pc) theo mức TTL.
chân 11(max232) chính là tín hiệu vào RXD(pc) theo chuẩn TTL.
khi xuất tín hiệu (-12V or 12V ra (chan TXD),qua max232 chuyển đổi tín hiệu theo mức TTL(0 or 5V). phía nhận dữ liệu thì ngược lại.
bạn phải dọc lại chuẩn RS232.
bạn có thể tham khảo tài liệu này. http://www.2shared.com/file/9227785/...iep_RS232.html
Leave a comment:
-
uh, thôi làm theo cách tự tín hiệu điều khiển hướng nó để soft khỏi phải bận tâm đến vân đề này nữa cũng đươc.
- Không hiểu sao cái board mình mới làm mới đầu hàn com rồi hàn 4 tụ và max 232 mình test rồi nôi tắt hai Pin_11_12 của max 232 thì nó gửi liền tín hiệu về : vd test box send nhập (123) thì test box receive nhận về (123). nhưng khi mình để hở 2 chân Pin_11_12 này rồi send thử thì có hiện tượng sau ( 1: nhận kí tự nhưng tùm lum, 2 : không có giá trị xuất ra test box receive) .
-- Lỗi này do đâu nhỉ. ? hoặc cũng có thể kô phải lỗi mà do mình chưa hiểu rõ cơ chế chỗ này ( chỉ khi có sự kiện oncome là có dữ liệu trong bô đệm nhận thì mói xuất ra test box receive mà).
-- tiếp đó mình bỏ qua và hàn tiếp đến hai con led để hiển thì khi có tín hiệu xuất hay nhận.
rồi lại nối tắt hai pin_11_12 của 232 và test như trên thì kết quả là không thu được bất kì kí tư nào ỏ test box nhận (kể cả nối tắt hoặc để hở ) kô hiểu nguyên nhân.
- Đây là 2 hình mà mình đã ráp mạch đến đâu test đến đó. còn thêm phần 485 chưa ráp.
mà sao kô up được hình chán thế gửi qua web nhé.
http://www.mediafire.com/?dw4txyhit0d
http://www.mediafire.com/?mmmzmnmry4z
Leave a comment:
-
bạn ko cần làm vậy đâu. bạn nên làm theo ý tưởng là data tự điều khiển hướng truyền, như vậy, khi bạn truyền đi thì tự bản thân nó sẽ đưa data lên đường truyền, phần mềm ko phải làm j cả,Nguyên văn bởi newbie_avr Xem bài viếtUh ! phần vb nè phải điều khiển hướng truyền nên có lẽ code chỗ xử lý đó kô hợp lý. Bạn có đoạn code mẫu nào xử lý vấn đề đó không ! ví dụ mình truyền đi một frame (gồm một số byte cho slave) sau đó mình sẽ đợi bao lâu rồi mới cho 75176 trở về chế độ nhận.. nếu đợi thì phải dùng vòng lặp hay gì đó cách tính thời gian trong vb.?
có thể làm như cách bạn j đó đã nói ở trên, nếu bạn ko rõ thì có thể search mạch convert rs232-->rs485 nó sẽ có mạch cho chỗ dk này.
Leave a comment:
dự án của bạn Tra theo mã, xem datasheet và đặt hàng trực tuyến. MicrochipROHMEpsonTaejin
Đặt hàng & tư vấn
Hà Nội024.3640 8561
TP.HCM028.3811 9870
Quét mã hoặc bấm để chat Zalo với R&PChat Zalo
Quét mã hoặc bấm để chat Zalo với R&PChat Zalo
Bài viết mới nhất
Collapse
-
Trả lời cho Tìm bạn thân quen cũ.bởi thuaimiVẫn nhớ và kính trọng Bác cũng các cao nhân trên dientuvietnam.net. Tính từ ngày tham gia trên này cũng đã hơn 20 năm rồi. Quá nhiều thay đổi cả trong công việc và cuộc sống. Nhưng được thấy lại các nick cũ vẫn sáng đèn là thấy vui rồi....-
Channel: Tâm tình dân kỹ thuật
26-10-2026, 16:33 -
-
Trả lời cho Tìm bạn thân quen cũ.bởi nhathung1101Còn sống không lão??? Mất một thời gian chữa bệnh nên quên hỏi thăm.......
-
Channel: Tâm tình dân kỹ thuật
25-10-2026, 03:09 -
-
Trả lời cho Công suất truyền qua lõi máy biến ápbởi nhathung1101Thời buổi năng lượng xanh, nhất là xanh cả mặt... Thì Điện mặt giời, điện gió, sẽ lên ngôi.
Nếu không nắm bắt được cái cơ bản đó thì đi làm coder à? Mà coder giờ thất nghiệp cả lũ vì AI rồi!!!









...
-
Channel: Điện tử công suất
25-10-2026, 03:03 -
-
Trả lời cho Công suất truyền qua lõi máy biến ápbởi quangdonguehChà, lâu lắm rồi nhưng diễn đàn vẫn còn những chủ đề cốt lõi của điện tử công suất...-
Channel: Điện tử công suất
24-10-2026, 07:53 -
-
bởi bqvietNếu muốn tăng công suất cần tăng con chip và tăng biến áp lên lớn hơn. Thiết kế ban đầu dùng TNY25x và biến áp EE16 hoặc EE13. Tăng con chip lên TNY268 vẫn mạch nguyên lý đó và biến áp lên EE19 sẽ nâng công suất ra thêm nhiều. Tăng tối đa...-
Channel: Điện tử công suất
24-10-2026, 02:14 -
-
bởi Nexus 6PMạch này chỉ chạy cho LED 10W trở xuống, còn muốn chạy Led công suất cao thì sao bác thớt ơi?-
Channel: Điện tử công suất
22-10-2026, 14:33 -
-
bởi Nexus 6PMạch này chỉ chạy cho LED 10W trở xuống, còn muốn chạy Led công suất cao thì sao bác thớt ơi?-
Channel: Điện tử công suất
22-10-2026, 10:49 -
-
Trả lời cho Tìm VR 5 chânbởi dinhthuong80Cảm ơn bác bqviet . Nhưng hình như các VR 5 chân của linhkienchatluong là loại có 2 chân là công tắc đóng mở. Thấy trên Shopee có chỗ bán linh kiện đàn Organ, mà không biết đúng loại không, với lại sao ... mắc dữ dội luôn ấy!!!
...-
Channel: Hướng dẫn tìm thông tin linh kiện
19-10-2026, 11:30 -
Leave a comment: