1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

Xin cho biết thêm về ứng dụng mạng CAN trong điều khiển xe hơi

Thảo luận trong 'Điều khiển tự động ô tô' bắt đầu bởi Semina, 19 Tháng chín 2006.

  1. Semina Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Trong ô tô vận tải, một kẻ thù truyền kiếp của các mạch điều khiển, việc điều khiển song song diễn ra rất khó khăn (không biết các tiền bối xe hơi trước kia đã dùng bằng cách nào) vì nhiễu. Nhiễu đến từ rất nhiều phía trong xe hơi, như nhiễu nhiệt (điện tích tĩnh điện trên vỏ xe, ma sát xăng trong bồn...), nhiễu do bugi xe phát ra, và ôi thôi còn muôn vàn thứ khác. Các thiết bị điều khiển lại nhiều, chẳng lẻ dùng bó dây to đùng để giám sát điều khiển? Nên hiện nay, hầu hết các loại xe hơi đều trang bị cho mình một kiểu điều khiển mới , đó là dụng mạng CAN (Controller Area Network), sử dụng nối tiếp hai dây để điều khiển. Đối với các anh em còn khá lơ mơ về cái này. Mong các cao thủ trong lĩnh vực Xa khẩu Thần Công truyền giáo cho. Lời thỉnh cầu này có mạo muội lắm không?!
  2. bmnhy Giảng Viên

    Số bài viết: 914
    Đã được thích: 0
    Điểm thành tích: 0
    Nên hiện nay, hầu hết các loại xe hơi đều trang bị cho mình một kiểu điều khiển mới , đó là dụng mạng CAN (Controller Area Network), sử dụng nối tiếp hai dây để điều khiển. Đối với các anh em còn khá lơ mơ về cái này.Mong các cao thủ trong lĩnh vực Xa khẩu Thần Công truyền giáo cho. Lời thỉnh cầu này có mạo muội lắm không?!

    không dám là: cao thủ trong lĩnh vực Xa khẩu Thần Công:
    Nhưng cũng vô tình đọc được bài này thấy hay hay: thử xem nhé

    CAN
    CAN stands for Controller Area Network and was developed by Bosch in 1985. It has later been standardized internationally by ISO (ISO 11898). The CAN protocol corresponds to the first two levels of the OSI reference model. It was originally developed for non-safety critical real-time systems, such as body-electronics within vehicles.
    A CAN network consists of nodes with a CAN interface and the CAN bus that connects them. The bus is a broadcast bus; i.e. all nodes will get all messages even if it’s not addressed to them.
    CAN is event-triggered, which means that the nodes will send messages at the trigger of an event within the node. The time of when they are sent is not preidctable. If a sensor gets an indication that the value has changed, that node will send a message on the bus.
    This can result in message collisions, as every node, in the worst case, may send a message at the bus at the same time. To cope with this, CAN uses the technique
    CSMA/AMP (Carrier Sense Multiple Access with Arbitration by Message Priority) for media access. This is a more real-time adapted variant of CSMA/CD (Carrier Sense Multiple Access with Collision Detection). In CSMA/CD all nodes that sense a collision on the bus must stop sending and wait a random time before trying to send again. Even the most important message will be interrupted using this protocol. In
    CSMA/AMP every message to be sent is assigned a priority. A node can only begin send a message if the bus is free. If a collision is detected after beginning sending the message, all but the node sending the highest prioritized message must stop sending.
    This means that the most important message never gets interrupted. At worst it must wait for a free bus.
    The decision of which message has the highest priority is made in the arbitration phase.
    The identifier of the message is the priority, and the lower the identifier, the higher the priority. A 0 is dominant and a 1 is recessive. If a node sends a 1 on the bus and senses a collision with a 0, it must stop sending. But if it senses a 1, it doesn’t know if it’s lower or higher than the other, and so they send the next bit of the identifier. At some point there will be only one node that’s still sending, and the message is sent.

    In the CAN specification it’s also stated how error detection and management should be done. There are five different methods for discovering an incorrect message.
    • Monitoring. The sender checks that the bit sent is the same as on the bus. If a 0 is
    sent and a 1 is detected, an error has occurred.
    • Bitstuffing. CAN uses NRZ coding for efficient detection of error frames. An error frame starts with either six 1’s or six 0’s. No other messages will contain these strings as the transmitter inserts a stuff bit with the complementary value after five consecutive equal bits. The receivers remove this stuff bit.
    • Frame check. Every node checks the received frame against the specification. If an error is found, the node signals a ‘format error’.
    • ACK errors. All nodes should report if the reception of the message was correct or not by writing a 0 (ok) or a 1(not ok) in the ack field of the message. A 0 overwrites a 1, so the transmitter will only know if at least one other node received a correct message.
    • Cyclic Redundancy Check (CRC). A checksum is calculated over the message before sending and is transmitted together with the message. The receiver does the same calculations. If the checksum calculated is equal to the checksum received it’s likely that the message has arrived correctly. [6]
    The CAN protocol is good enough for most real-time applications, but for safety-critical systems the event-triggered approach is too weak. The importance of messages arriving on time, or the instant reaction when they don’t, require a time-triggered protocol. The development of car electronics into x-by-wire systems without mechanical backup has motivated the development of time-triggered protocols such as TTP, FlexRay and TTCAN.


    còn nhiều điều cần ngâm cứu,anh em nào có kinh nghiệm rồi thì đăng vài ví dụ cụ thể nhé!


    Tôi chuyển phần này qua bên chổ X by wire cho nó quy củ
  3. toyo Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Ngồi chờ cao thủ post bài vậy hehehe. Trước khi post nhớ nghiên cứu nhé các bạn. Mấy em năm 4 đâu zồi? [IMG] chắc đang học trang bị điện với thầy Dũng [IMG] , trong sách "trang bị điện và điện tử trên oto" có viết 1 ít về CAN
  4. bmnhy Giảng Viên

    Số bài viết: 914
    Đã được thích: 0
    Điểm thành tích: 0
    Nếu cần phần CAN của PGS. TS Đỗ Văn Dũng thì các bạn nên gặp thầy Trọng Thức (Khoa CKD) hỏi xin thầy file Word để không mất công gõ lại!

    Mình cũng đã đọc trước khi post và chú thích một số từ mới (đối với mình) nhưng cũng không thể mang lại kết quả tốt nhất
    Anh, em lên diễn đàn là để học tập, trao đổi, nếu có gì chưa đúng thì Mình sẵn sàng lắng nghe thôi mà!
    Có thảo luận thì mới có kết quả - mâu thuẩn là động lực phát triển của 4rum mà!


    ..
  5. toyo Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Hiện đã có tài liệu về CAN trong ebook Automotive Computer Controlled Systems. Mình thấy trong đó viết nhiều lắm, mình cũng muốn tham khảo và tìm hiểu thêm nhưng hiện nay thời gian không cho phép, bạn load về đọc và phổ biến lại cho mọi người nhé [IMG]
  6. bmnhy Giảng Viên

    Số bài viết: 914
    Đã được thích: 0
    Điểm thành tích: 0
    CAN trong ô tô có thể nghiên cứu khi có một bộ NI, Tham khảo tại (NI.com)

    Ai có thời gian rảnh thì dich mấy bài cho anh em cùng học!

    Tham khảo ban đầu tại: http://en.wikipedia.org/wiki/Controller_Area_Network

    Controller Area Network
    From Wikipedia, the free encyclopedia
    Jump to: navigation, search
    Controller Area Network (CAN) is a multicast shared, differential serial bus standard, originally developed in the 1980s by Robert Bosch GmbH, for connecting electronic control units (ECUs). CAN was specifically designed to be robust in electromagnetically noisy environments and can utilize a differential balanced line like RS-485. It can be even more robust against noise if twisted pair wire is used. Although initially created for automotive purposes (as a vehicle bus), nowadays it is used in many embedded control applications (e.g., industrial) that may be subject to noise. The messages it sends are small (8 data bytes max) but are protected by a CRC-15 (polynomial 0x62CC) that guarantees a Hamming bit length of 6 (so up to 5 bits in a row corrupted will be detected by any node on the bus).

    Bit rates up to 1 Mbit/s are possible at networks length below 40 m. Decreasing the bit rate allows longer network distances (e.g. 125 kbit/s at 500 m).

    The CAN data link layer protocol is standardized in ISO 11898-1 (2003). This standard describes mainly the data link layer — composed of the Logical Link Control (LLC) sublayer and the Media Access Control (MAC) sublayer — and some aspects of the physical layer of the OSI Reference Model. All the other protocol layers are left to the network designer's choice.
  7. toyo Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Hôm nay bảo vệ đồ án xong rồi, rảnh rỗi post phần trình bày sơ lược về CAN. Các bạn cùng xem nhé.
    Hệ thống điều khiển CAN:
    Khái niệm:
    Hệ thống được điều khiển bởi những máy tính riêng rẽ có số lượng ngày càng tăng, vì vậy việc kết nối chúng lại với nhau thành 1 mạng máy tính là cần thiết nhằm tăng cường khả năng điều khiển, chia sẻ cảm biến, giảm số lượng dây dẫn, chẩn đoán và sửa chữa thuận tiện hơn. Trước khi xem xét một hệ thống CAN cụ thể chúng ta cần tìm hiểu thêm về một số khái niệm sau:
     Mô hình tuyến tính:
    Các máy tính được nối kết với nhau chung một dây dẫn để trao đổi và chia sẻ dữ liệu. Ưu điểm của kiểu này là giảm số lượng dây dẫn nhưng lại gặp phải vấn đề khi có nhiều hơn 1 thông điệp được gửi lên bus dữ liệu trong cùng 1 lúc. Vấn đề này sẽ được gỡ bỏ bằng cách đưa ra quy tắc chặt chẽ về việc truyền dẫn dữ liệu trên bus giữa các máy tính trong mạng. Các quy tắc này được gọi là giao thức (protocol).
    <div align='center'>[IMG]</div>
    <div align='center'>Mô hình tuyến tính.</div>
     Mô hình sao:
    Ưu điểm của mô hình này là khi có sự hư hỏng trên đường truyền giữa 1 máy tính và hub sẽ không làm cho mạng gặp sự cố. Hub trung tâm cũng có thể là bộ chuyển mạch điện tử để nhận thông điệp từ bất cứ máy tính nào trong mạng, sau đó nó sẽ xác định máy tính đích để gửi thông điệp đến máy tính đó mà thôi.
    <div align='center'>[IMG]</div>
    <div align='center'>Mô hình sao.</div>
    Mạng máy tính hỗn hợp cả 2 loại trên chính là Controller Area Network (CAN). Đây là hệ thống mạng được thiết kế bởi Bosch đang được sử dụng rộng rãi cho mạng truyền dẫn tốc độ cao trên ôtô. Xe được trang bị mạng này sẽ hoạt động tại các tốc độ khác nhau (bit dữ liệu/giây). Để cho các thành phần giữa 2 mạng có tốc độ khác nhau giao tiếp được với nhau cần thông qua bộ ghép nối được gọi là Gateway.
     Thông điệp (Messages):
    Là thuật ngữ dùng để mô tả 1 khoản dữ liệu được gửi từ 1 ECM này đến 1 ECM khác trong mạng. Một thông điệp có thể dài hàng MB hoặc chỉ vài Byte.

     Gói (Packet):
    Với tốc độ truyền dữ liệu đã được định sẵn, một thông điệp sẽ mất một khoảng thời gian dài để truyền đi, điều này có thể khiến xảy ra sự cố nếu một ECM khác gửi thêm thông điệp trong lúc đó. Để tránh điều này xảy ra, thông điệp được chia thành những phần nhỏ hơn gọi là packet. Mỗi packet được truyền trên bus như một thực thể riêng biệt, sau đó ECM nhận sẽ ráp nối chúng nhằm khôi phục thông tin toàn vẹn.
    Mỗi packet được định hình trong 1 khung dữ liệu (frame).Mỗi khung bao gồm:
    o Chính packet đó.
    o Những bit dữ liệu thêm vào để có thể phát hiện lỗi.
    o Bit dữ liệu xác định ECM gửi tin.
    o Bit dữ liệu nhận dạng ECM đích.
    o Chuỗi dữ liệu biểu thị bắt đầu khung.
    o Chuỗi dữ liệu biểu thị chiều dài khung và/hoặc kết thúc khung.
    Mỗi ECM trong mạng đều có 1 địa chỉ xác định.
     Giao thức và cách thức làm việc:
    Để cho mạng hoạt động nhất thiết phải có quy tắc truyền thông tin. Một giao thức phổ biến được sử dụng cho việc giao tiếp giữa các máy tính nối mạng là CSMA-CD (Carrier Sense Multiple Access with Collision Detection). Giao thức này làm việc như sau:
    - Một máy tính trong mạng phải chờ mạng nhàn rỗi trước khi có thể truyền đi 1 frame.
    - Khi 1 frame vừa được truyền đi, tất cả các máy tính trên mạng kiểm tra địa chỉ nơi đến, sau khi việc kiểm tra hoàn tất, máy tính nhận tin sẽ chấp thuận nhận toàn bộ frame.
    - Sau đó máy tính đích sẽ tiến hành kiểm tra lỗi, nếu một lỗi được phát hiện, nó sẽ gửi một tin báo lỗi về máy tính truyền tin. Dựa trên tin báo lỗi, máy tính nguồn sẽ gửi lại toàn bộ frame đó.
    - Nếu có 2 máy tính cùng gửi một frame sẽ gặp vấn đề trên bus. Đó là hư hỏng và khiến cho những frame bị gián đoạn.
    - Nếu điều này xảy ra, giao thức yêu cầu những máy tính phát tin ngưng chuyển những frame của chúng ngay lập tức và truyền đi tín hiệu “kẹt”. Tín hiệu “kẹt” này cảnh báo cho các máy tính khác trong mạng để chúng phớt lờ những phần của frame vừa chuyển đi.
    - Sau đó mỗi máy tính sẽ chờ một khoảng thời gian ngắn trước khi cố gửi lại tin.
    - Mỗi máy tính hoặc thiết bị khác trong mạng phải được trang bị bộ giao tiếp tương ứng. Mạch giao tiếp này có một vi xử lý cho phép nó nhận và kiểm tra frame mà không gây ảnh hưởng đến công việc của bộ xử lý chính phải thực hiện.
     Tóm tắt:
    o Dữ liệu phải được chia thành những gói.
    o Bit kiểm tra lỗi phải được thêm vào.
    o Mỗi gói phải được định hình trong một frame.
    o Frame phải được chuyển vào mạng.
    o Phát hiện hư hỏng phải được thực hiện, việc truyền phát ngừng lại và tín hiệu “kẹt” được gửi đi.
    o Máy tính phải chờ một khoảng thời gian ngẫu nhiên trước khi chuyển lại tin.
    8.2. Hệ thống mạng trên xe:
    8.2.1. Mục đích:
    o Giảm số lượng dây dẫn.
    o Giảm số lượng cảm biến cùng chức năng.
    8.2.2. Phân cấp:
    Một số hệ thống trên xe chỉ yêu cầu dữ liệu truyền tốc độ thấp như hệ thống chiếu sáng, cụm bảng đồng hồ; một số khác yêu cầu truyền dữ liệu tốc độ cao hơn như động cơ , hộp số và việc truyền thông tin gần như tức thời này được gọi là hoạt động theo thời gian thực. Để phân cấp những yêu cầu khác nhau này, SAE đề nghị phân thành 3 cấp:
    o Class A: Truyền dữ liệu tốc độ thấp, đến khoảng 10.000 bits/s.
    o Class B: Truyền dữ liệu tốc độ trung bình, 10.000 – 125.000 bits/s.
    o Class C: Truyền dữ liệu tốc độ cao (real-time), 125.000 – 1.000.000 bits/s (hoặc hơn).
    8.2.3. Mã hóa tuần tự dữ liệu:
    Ngoài giao thức truyền dữ liệu, cần phải quan tâm đến phương pháp thực hiện việc chuyển tin trong bus. Những yếu tố như tốc độ truyền dẫn, sự nhiễu điện và việc bảo toàn nguyên vẹn thông điệp phải được quan tâm. Có các phương pháp hiện đang sử dụng:
    o None - return to zero (NRZ)
    o Controller area network (CAN)
    Giữa chúng có sự khác biệt lớn trong cách mô tả các mức logic (0 hay 1) sử dụng trong kỹ thuật máy tính.
    Trong phương pháp NRZ, các mã nhị phân 0111001 được truyền như hình minh hoạ.
    <div align='center'> [IMG]
    Phương pháp NRZ.</div>
    Cần lưu ý là mỗi bit được truyền trong 1 nhịp bit mà không có bất cứ sự thay đổi nào
    Trong CAN, 2 dây được sử dụng cho việc truyền dữ liệu. Một dây là CAN-H, dây còn lại là CAN-L. Một chuỗi bit CAN được trình bày như hình minh họa.
    <div align='center'>[IMG]
    Phương pháp CAN.</div>
    Dây CAN-H chuyển đổi giữa mức 2,5 và 3,5V. Dây CAN-L chuyển đổi giữa 2,5 và 1,5V. Khi CAN-H và CAN-L cùng ở mức 2,5V, không có sự khác biệt về điện thế giữa chúng và điều này biểu thị mức logic 0. Mức logic 1 được tạo ra khi có sự khác biệt 2V giữa 2 dây, đó là khi CAN-H ở mức 3,5V và CAN-L ở mức 1,5V.
    Và bây giờ các bạn tham khảo hệ thống CAN trên Civic:
    Bao gồm 2 hệ thống CAN: F-CAN và B-CAN:
     F-CAN:
    o Kết nối ECM, SRS, bộ điều khiển EPS, bộ điều khiển ABS (không có VSA), bộ điều khiển VSA với nhau.
    o Sử dụng đường dây đôi tốc độ cao 500 kbps.
     B-CAN:
    o Kết nối MICU, bộ điều khiển chống trộm, bộ điều khiển điều hòa nhiệt độ với nhau.
    o Sử dụng đường dây đơn tốc độ thấp 33,33 kbps.
    Hai hệ thống F-CAN và B-CAN được kết nối với nhau thông qua cụm điều khiển bảng đồng hồ. Cụm này đóng vai trò làm Gateway, nơi cho phép 2 hệ thống mạng trao đổi thông tin qua lại từ F-CAN đến B-CAN và ngược lại.
    <div align='center'>[IMG]</div>
    <div align='center'>Hệ thống CAN trên Civic</div>.
  8. bmnhy Giảng Viên

    Số bài viết: 914
    Đã được thích: 0
    Điểm thành tích: 0
    Cảm ơn toyo về bài viết!

    Bảo vệ tốt nghiệp tốt chứ?

    Chúc ăn tết vui vẻ, năm mới hoạt động ngày càng tích cực! [IMG]
  9. toyo Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Mình bảo vệ tốt đẹp. Giờ thì có thể post bài cho forum được rồi. Mình sẽ post dần dần có chọn lọc theo những vấn đề về chuyên ngành
  10. bmnhy Giảng Viên

    Số bài viết: 914
    Đã được thích: 0
    Điểm thành tích: 0
    <div class='quotetop'>QUOTE (toyo @ Feb 10 2007, 02:53 PM) <{POST_SNAPBACK}></div><div class='quotemain'>Mình bảo vệ tốt đẹp. Giờ thì có thể post bài cho forum được rồi. Mình sẽ post dần dần có chọn lọc theo những vấn đề về chuyên ngành[/b][/quote]


    Congratulations!!!!! We do to improve our technical box!
  11. bmnhy Giảng Viên

    Số bài viết: 914
    Đã được thích: 0
    Điểm thành tích: 0
    Chào Toyo Hệ thống CAN trên Civic tại sao cũng là CAN mà 1 bên có 2 bus mà bên kia chỉ dùng một thôi nhỉ?

    Theo cách này thì khi lập trình Vi điều khiển thì làm cách nào để VĐK nhận dạng các bit như bit địa chỉ? bit thông tin?

    Các bạn có thể đọc thêm cuốn mạng căn bản của ĐH BK ĐN để có kiến thức thêm về Giao thức và cách truyền tin giửa các máy tính.

    Chúc vuiv vẻ!
  12. toyo Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    Do bên F-CAN tốc độ truyền cao hơn bên B-CAN cho nên người ta sử dụng cặp dây xoắn nhằm tránh sai lệch thông tin khi truyền đi. Một số vấn đề chuyên sâu về CAN mình chưa tìm hiểu, bạn nào biết mình cùng trao đổi tại topic này nhé :
  13. bmnhy Giảng Viên

    Số bài viết: 914
    Đã được thích: 0
    Điểm thành tích: 0
    <div class='quotetop'>QUOTE (toyo @ Feb 13 2007, 01:56 PM) <{POST_SNAPBACK}></div><div class='quotemain'>xoắn nhằm tránh sai lệch thông tin khi truyền đi[/b][/quote]

    Vậy thì đối với B Can thì làm cách nào để xác nhận gói tin đã truyền đi hoàn chỉnh nhỉ? Theo mình biết thì thường có một cách để xác nhận tín hiệu trong điều khiển gọi là : Duplicated ECUs họ dùng nhiều ECU để điều khiển 1 actuator sau đó tín hiệu xác nhận gửi trở lại, khi đó Duplicated ECUs sẽ nhận được tín hiệu tương tự nhau nếu so sánh thấy khác thì suy ra gói tin nhận chưa hoàn chỉnh (Hệ thống kiểu này cũng gọi là Redundant System trong đó CAN hay Flexray đều được ứng dụng)

    Nhưng một dây thì có lẽ chưa biết bằng cách nào để đảm bảo gói tin với tốc độ khá cao. Nếu vừa nhận và truyền lại tín hiệu bằng 1 bus thì tốc độ rất chậm nhỉ!
  14. hongson1132 New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0
    mình đang làm đồ án về CAN mà nó không chạy nhờ các bác giúp đỡ .
    nhờ các bác xem em đoạn code này mà sao không chạy được
    thanks.........
    code truyền
    #include <18F4580.h>
    #fuses HS,NOPROTECT,NOLVP,NOWDT
    #use delay(clock=4M)
    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
    #include <can-18F4580.c>
    #define SET_LED_ID_B 0x202
    void main()
    {
    int mang[16]={0,1,2,3,4,5,6,7,8,9,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
    int *pointer,led,i;
    set_tris_c(0x00);
    set_tris_D(0xff);
    pointer=&mang[0];
    can_init();
    i=16;
    while(1)
    {
    if(input(pin_e1)==0)
    {
    if ( can_tbe() ) //every two seconds, send new data if transmit buffer is empty
    {
    led=*pointer;
    can_putd(SET_LED_ID_B,&led , 1, 1, 1, 0);
    output_c(led);
    delay_ms(1000);
    }
    pointer++;
    i--;

    if(i==0)
    {
    i=16;
    pointer=&mang[0];
    }
    }
    }
    }

    code nhận

    #include <18F4580.h>
    #fuses H4,NOPROTECT,NOLVP,NOWDT
    #use delay(clock=4M)
    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

    #define SET_LED_ID_B 0x202

    #include <can-18F4580.c>
    ////khai bao cac ham dung trong truong trinh
    void BinToHexAscii(char c);
    int8 Ascii2Hex(char c1,char c2);


    //////////////////////////////////////
    int16 ms;
    struct rx_stat rxstat;
    int32 rx_id;
    int in_data;
    int rx_len=8,*pointer;

    int recive[15],i=0;

    ///////////////////////////////////////
    #INT_CANRX0
    void can_reciver()
    {
    can_getd(rx_id, &in_data,rx_len, rxstat);
    if(rx_id==SET_LED_ID_B)
    {
    output_c(in_data);
    *pointer=in_data;
    if(pointer==14)
    {pointer=0;}
    }
    pointer++;
    }
    //////////////////////////////////////
    void main()
    {
    enable_interrupts(GLOBAL);
    enable_interrupts(INT_CANRX0);
    pointer=&recive[0];
    can_init();
    set_tris_A(0x00);
    set_tris_C(0x00);
    set_tris_D(0xff);
    while(TRUE)
    {
    if(input(pin_e1)==0)
    {
    pointer=&recive[0];
    while(pointer<(15+&recive[0]))
    {
    output_c(*pointer);
    pointer++;
    delay_ms(1000);
    }
    pointer=&recive[0];
    }
    }
    }
  15. clarkcao New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0

Chia sẻ trang này