Xây dựng một xung tốc độ OBD: Kìa Ice

Tôi là một mã hóa phần mềm crappy khi nó đi xuống nó. Tôi đã không chú ý khi mọi thứ diễn ra đối tượng và rễ của tôi luôn luôn lắp ráp ngôn ngữ và các hệ điều hành thời gian thực (RTOS).

Vì vậy, nó chỉ tự nhiên đến mức tôi sẽ đạt được cho một trình giả lập trong mạch thực sự (băng) để kết thúc xe buýt OBDII nhỏ của tôi để tăng tốc Widget Pulse Generator Widget. Ice là một thiết bị phần cứng được sử dụng để gỡ lỗi các hệ thống nhúng. Nó giao tiếp với vi điều khiển trên bảng của bạn, cho phép bạn xem những gì đang xảy ra bằng cách tạm dừng thực thi và kiểm tra hoặc thay đổi các giá trị trong các thanh ghi phần cứng. Nếu bạn muốn trở nên tuyệt vời trong sự phát triển nhúng, bạn cần phải tuyệt vời khi sử dụng mô phỏng trong mạch.

Tôi không chỉ có được những sai lầm của mình trong thời gian gần thời gian thực, tôi có thể tạo một video về nó.

Lấy dữ liệu ra khỏi một chiếc xe

Tôi đã làm việc trên một bảng nhỏ sẽ cắm vào xe của tôi và cung cấp quyền truy cập trực tiếp vào tốc độ được báo cáo trên mạng khu vực bộ điều khiển (có thể bus).

Để sao lưu một chút, bài đăng video cuối cùng của tôi là về mong muốn của tôi để tạo ra một hội đồng nhỏ có thể cắm vào cổng OBDII trên xe tải của tôi và tạo ra một loạt các xung đại diện cho tốc độ của ô tô cho GPS của tôi hoạt động nhiều chính xác hơn. Trong khi có một sợi dây được chôn sâu trong nhiều gói dây được kết nối với mô-đun điều khiển động cơ của xe, tôi đã đưa ra quyết định cho nhiều lý do để tạo nguồn tín hiệu của riêng mình.

Tại trung tâm của dự án của tôi là cần chuyển đổi cổng OBDII và giao thức cơ bản có thể thành một biến cơ bản biểu thị tốc độ và sau đó bao gồm giá trị đó cho luồng xung nơi tần số thay đổi dựa trên tốc độ. Giao thức OBDII / CAN được xử lý bởi chip STN1110 và được chuyển đổi thành ASCII và tôi đang sử dụng Atmega328 như được tìm thấy trên vô số bảng Arduino’ish để chuyển đổi ASCII để chuyển đổi xung. Tôi đang sử dụng ngắt phần cứng để kiểm soát đầu ra tín hiệu cho thời gian rock-solid, jitter miễn phí.

Đi bộ qua quá trình sử dụng trình giả lập trong mạch trong video bên dưới và tham gia cùng tôi sau giờ nghỉ với một vài chi tiết nhiều hơn về quy trình.

Phần cứng

Tôi đã sửa đổi bảng xem xét rằng video cuối cùng và loại bỏ hỗ trợ cho các giao thức khác nhau khác ngoài có thể, đó là giao thức không lỗi thời của bó. Bằng cách loại bỏ một loạt các bộ phận mà tôi đã có thể thay đổi kiểu gói sang lỗ thông qua dễ dàng hơn nhiều so với nhiều người có sở thích về nhà, vì vậy bạn có thể rời khỏi bộ hàn trong tủ lạnh ‘.

Rev 2.

Rev 1.

“Đầu nối khác” trên Arduino của bạn

Không giống như Arduino đã sẵn sàng để nói chuyện với cổng USB của bạn khi bạn đưa nó ra khỏi hộp, chip ATMEGA đến mà không có bất kỳ kiến ​​thức nào về cách đi và mã tải xuống, theo các từ khác, nó không có trình tải khởi động. Do đó, tôi có các chân lập trình nối tiếp-nối tiếp (ICSP) được định tuyến theo tiêu đề PIN trên bảng của tôi để tôi có thể lập trình trực tiếp phần.

Trên trình kết nối này, bạn sẽ tìm thấy dòng thiết lập lại, cho biết với tiêu đề này, tôi có thể sử dụng Ice thực sự sử dụng giao thức Debugwire. Xem xét rằng phần lớn các thiết kế sử dụng chip AVR không tái sử dụng pin đặt lại cho GPIO, nó là một pin tốt nhất để sử dụng cho băng. Tất cả các thông tin liên lạc trong quá trình gỡ lỗi sẽ diễn ra trên mã PIN đặt lại.

Vào băng.

Khi tạo một máy tính từ đầu, luôn có giai đoạn không có gì hoạt động. Đơn giản chỉ cần đặt, một mạch vi xử lý không thể hoạt động cho đến khi gần như mọi phần của thiết kế hoạt động; RAM, ROM và các xe buýt bên dưới đều cần phải (chủ yếu) làm việc trước khi mọi thứ cơ bản có thể được thực hiện. Là một kỹ sư phần cứng của thương mại, tôi sẽ luôn tiếp cận với một băng để khởi động việc thực hiện; Chỉ sau khi phát hành beta sẽ bắt đầu băng để thu thập bụi trong góc.

Trong trường hợp ATMEGA, khả năng gỡ lỗi được tích hợp vào chính vi điều khiển. Đây là một quá trình thực hiện đơn giản hơn nhiều so với những ngày đầu tiên chúng ta phải có bộ xử lý bị cô lập thứ hai chạy khỏi RAM / ROM cục bộ của riêng mình.

Một ghi chú được chỉ ra trong video là một bảng Arduino’ish tiêu chuẩn cần loại bỏ các tụ lọc từ dòng đặt lại để cho phép dữ liệu tốc độ cao trên dòng để sử dụng DebugWire.

Ice Tôi đang sử dụng ở đây là loại được thực hiện bởi Atmel và tương thích với Atmel Studio, cũng có các mô hình khác có sẵn như Rồng AVR.

Ổ đá

ICE cho phép chúng ta tải xuống và một bước mã của chúng tôi trong khi có thể quan sát và ghi đè lên RAM và các thanh ghi I / O khỏi bàn phím. Chúng tôi có thể tận hưởng chương trình từng bước hoặc nhìn bên dưới tại mã lắp ráp thực tế được tạo bởi trình biên dịch. Chúng tôi có thể thưởng thức các biến và địa điểm trực tiếp bằng RAM hoặc thưởng thức các đối tác ngôn ngữ C. Cũng có thể nhảy qua một cuộc gọi thường xuyên trong trường hợp chỉ muốn xem kết quả mà không cần tất cả các xử lý.

Thật đáng giá thời gian của bạn để xem ngay cả một cái nhìn về khả năng của một tảng băng trong mộtction. Tôi khuyên bạn nên thưởng thức video nơi bắt đầu gỡ lỗi.

Từ cuối cùng

Video này thực sự là kết thúc Mạch Obdii để tôi thực sự không có thời gian để thảo luận về mọi thứ, có thể tôi sẽ làm một bài viết dành riêng cho các môi trường băng và phát triển lần sau.

Leave a Reply

Your email address will not be published. Required fields are marked *