Làm thế nào để tốt nghiệp từ Arduino để sử dụng một vi điều khiển trực tiếp?


19

Tôi đã làm việc trên một dự án Arduino. Sau khi tôi nhận được mọi thứ hoạt động bằng Arduino, tôi muốn chuyển sang một giải pháp KHÔNG sử dụng Arduino. Đó là, tôi muốn sử dụng một vi điều khiển mà không liên quan đến bảng Arduino. Điều này sẽ cho phép một bảng duy nhất, không có giải pháp lá chắn.

Tôi biết có những phương pháp để tạo ra Arduino của riêng tôi trên một chiếc bánh mì, nhưng đó không thực sự là những gì tôi đang cố gắng làm.

Tôi không thực sự chắc chắn làm thế nào để làm điều này.

Trừ khi có một lựa chọn tốt hơn, tôi nghiêng về việc sử dụng ATmega328, được sử dụng bởi Arduino. Tôi hiểu rằng các công cụ phát triển có sẵn miễn phí hoặc ít nhất là không đắt lắm.

Đối với mục đích của câu hỏi này, giả sử tôi có thể nhận được + 5V cho mạch của mình.

Câu hỏi đầu tiên của tôi là làm thế nào để lập trình MCU. Tôi tin rằng có hai lựa chọn:

  1. Mua một lập trình viên, lập trình MCU và sau đó đặt chip vào mạch của tôi.
  2. Thiết kế mạch của tôi để bao gồm hỗ trợ cho lập trình trong mạch.

Tôi giả sử rằng nếu tôi đi với tùy chọn # 1, thì đơn giản như việc chèn một con chip được lập trình vào mạch của tôi; Tôi không cần bất cứ điều gì khác. Tất nhiên việc thay đổi phần mềm sẽ bất tiện.

Nhưng đối với lựa chọn số 2, tôi không chắc mình cần gì. Từ khi đọc xong, tôi nghĩ rằng tôi cần một cáp lập trình và một đầu nối trên bảng của tôi (loại nào?). Sau đó, tôi đoán tôi (đúng) nối dây kết nối với các chân nhất định trên ATmega.

Dù bằng cách nào, tôi sẽ cần Atmel studio.

Thứ hai, ngoài nguồn cung cấp năng lượng, có gì trên Arduino mà tôi thực sự cần không? Tôi đoán có lẽ một công tắc thiết lập lại?


2
Bạn có thể sử dụng một Arduino để lập trình cho AVR. Cá nhân tôi thích sử dụng các công cụ dòng lệnh và makefile, hơn là IDE.
jippie

1
Câu hỏi này có thể phù hợp hơn với Arduino Stack Exchange. arduino.stackexchange.com Hiện đã có bản Beta công khai
akellyirl

4
Nhưng mục tiêu của tôi là một thiết kế không có arduino.
Rick

"có gì trên arduino mà tôi hoàn toàn cần không?" Tôi nghĩ rằng bạn sẽ cần các chân UART (còn gọi là cổng nối tiếp), nó rất tiện cho việc gỡ lỗi.
vvy

Atmel studio là hoàn toàn không cần thiết. Tôi lập trình chip của mình từ dòng lệnh (và trình soạn thảo văn bản). Mặc dù được cấp cho các dự án lớn, Atmel studio chắc chắn sẽ làm cho nó dễ dàng hơn
Chris Laplante

Câu trả lời:


10

Chào mừng đến với thế giới tuyệt vời của Atmel. Hãy để tôi cung cấp cho bạn một số câu trả lời cho câu hỏi của bạn dựa trên sở thích và kinh nghiệm chuyên môn của tôi.

Đừng bận tâm với bất cứ điều gì NHƯNG lập trình trong mạch. Trừ khi bạn là một lập trình viên hoàn hảo, việc loại bỏ chip mỗi khi bạn muốn lập trình nó là một cơn ác mộng. Tôi khuyên dùng AVRISPmkII như một công cụ lập trình cấp nhập cảnh. Nhược điểm là không có gỡ lỗi phần cứng được hỗ trợ. Một thay thế là rồng nhưng tôi không có kinh nghiệm với điều đó. Tôi có thể nói rằng JTAGICEmk3 là một công cụ gỡ lỗi có khả năng tốt.

Studio của Atmel tốt cho lập trình. Nó thực sự là môi trường phát triển nhúng yêu thích của tôi. Bạn có thể sử dụng các công cụ CLI như AVRDUDE và AVR-GCC nhưng IDE sẽ lo việc đó cho bạn.

TÓM TẮT:

Mua một AVRISP chỉ để lập trình (dễ dàng hơn, cắm và chơi) hoặc DRAGON (tôi không thể đưa ra lời khuyên).

Trên bảng của bạn, đưa các chân ICSP ra tiêu đề hàng kép 6 chân 0.100 "- các kết nối được mô tả trong biểu dữ liệu này .

Thiết lập lại công tắc là không cần thiết.


1
Tôi đã có kết quả tuyệt vời với EvUSBasp.
Ignacio Vazquez-Abrams

Khi tôi mang ra các chân ICSP trên bo mạch của mình, tôi có phải dành chúng để lập trình trong mạch không, hay tôi vẫn có thể sử dụng chúng làm chân GPIO bằng cách nào đó?
Ricardo

2
Bạn có thể sử dụng chúng làm GPIO vì chúng chia sẻ các chức năng với SPI. Lập trình viên đặt chip vào thiết lập lại sau đó giao tiếp với nó.
HL-SDK

1
Loạt bài hướng dẫn liên quan về khởi đầu lập trình vi điều khiển . Họ sử dụng AVRMega và trải qua quá trình kết nối ISP và mã C sang trọng để nháy đèn LED.
MDMoore313

1
@ HL-SDK nói đúng rằng chỉ có chân RESET thực sự cần được dành riêng cho ICSP, nhưng cũng cần thận trọng đối với các chân khác, nghĩa là có lẽ chúng nên được sử dụng làm chân đầu ra thay vì chân đầu vào (vì vậy tín hiệu không ' không bị làm phiền bởi các mạch bên ngoài trong chế độ ICSP) và bất kỳ thứ gì được gắn vào chúng phải được thiết kế để không phản ứng bất lợi với bất kỳ kết hợp tín hiệu ngẫu nhiên nào mà lưu lượng lập trình gửi cho chúng.
microtherion

10

Bạn không cần phải "tốt nghiệp" tất cả cùng một lúc. Đây là cách tôi chuyển đổi:

Để bắt đầu, tôi tiếp tục sử dụng Arduino nhưng chuyển đổi các cuộc gọi đến thư viện Arduino thành đăng ký đọc và ghi, mỗi lần một dòng, xem các chương trình của tôi có còn hoạt động không. Bằng cách này, tôi đã quen với việc sử dụng các thanh ghi và thấy rằng chúng không hoàn toàn không liên tục với cách làm việc của Arduino. Các hàm Arduino như digitalWrite () chỉ cần thao tác các thanh ghi - bạn có thể tự do đọc và viết cho chúng trực tiếp trong bản phác thảo của bạn.

Bước tiếp theo của tôi là đặt ATTiny 85 trên bảng mạch và lập trình nó với Arduino là ISP ( http://highlowtech.org/?p=1695 ). Nếu bạn mua một bộ cấp nguồn cho bánh mì và sử dụng bộ dao động bên trong của ATTiny, điều này đòi hỏi phải có dây dẫn nhỏ. Tôi đã sử dụng Arduino IDE để biên dịch nhưng tiếp tục sử dụng các thanh ghi nhiều nhất có thể.

Sau đó, tôi đã cài đặt chuỗi công cụ dòng lệnh Crosspack miễn phí và biên dịch một chương trình mờ. Sau một vài thử nghiệm và sai sót, tôi đã quản lý để lập trình ATTiny chỉ với avrdude, ở hoàn toàn bên ngoài hệ sinh thái Arudino.

Khi bạn đã đạt được độ mờ chỉ với các công cụ dòng lệnh, bạn sẽ không gặp phải Arduino. Khám phá các thiết bị ngoại vi khác nhau và các thanh ghi của chúng và sẽ sớm hoàn toàn tự nhiên.

Sau tất cả những điều này, tôi thường thấy mình sử dụng Arduino vì nó nhanh hơn. Tôi đã thấy rằng việc vỗ về các mô tả đăng ký hơi tệ; không có ý nghĩa trong việc đó nếu bạn không phải làm thế. Thật tốt khi biết làm thế nào.


8

Tôi đồng ý với nhận xét của HL-DSK ở trên. Tôi sẽ chi thêm tiền và có được một lập trình viên với khả năng gỡ lỗi. Tôi sử dụng JTAGICE3, khoảng 110 đô la trên phím digi.

Đọc về lập trình ISP tại đây . Nó sẽ chỉ cho bạn cách làm nổi bật các kết nối SPI. Các kết nối SPI trên chip của bạn sẽ nằm trong biểu dữ liệu ATmega. Xem trang 2 để biết các chân MISO / MOSI / SCK / RESET. Lập trình viên cần có khả năng kiểm soát dòng thiết lập lại. Hãy nhớ sử dụng điện trở kéo lên trên đường đặt lại để chip của bạn sẽ chạy sau khi lập trình viên bị ngắt kết nối.

Nhận cho mình một tiêu đề 2x3 ở đây . Hoặc làm cho riêng bạn bằng cách sử dụng tiêu đề ly khai.


2
Tôi sẽ thứ hai nhận được một lập trình viên với hỗ trợ gỡ lỗi. Đầu tháng này, tôi đã bị ném vào chỗ sâu trong một dự án PIC32 không có kinh nghiệm cấp thấp trước đó. Ngay cả khi có người khác viết chức năng đập bit ở mức thấp nhất, tôi thậm chí không muốn nghĩ về việc khó khăn hơn để tìm ra vấn đề của mình ở đâu nếu tất cả những gì tôi phải thấy bên trong chỉ là một đèn LED đỏ / xanh lục.
Dan Neely

Điều này, một khi bạn có các công cụ chuyên nghiệp, sẽ không quay trở lại.
Matt Young

7

Sự khác biệt giữa Arduino và ATmega328 trần chỉ có hai điều. Arduino Bootloader và các thư viện Arduino. Bạn có thể mã hóa Arduino với C hoặc C ++ trần mà không cần sử dụng bất kỳ thư viện nào. Bạn cũng có thể sử dụng lắp ráp thay thế. Bộ tải khởi động cho phép bạn tải mã mới thông qua nối tiếp mà không cần thông qua lập trình nối tiếp (mạch) phức tạp hơn một chút (về cơ bản là SPI).

Bạn có thể sử dụng các thư viện lập trình tiêu chuẩn và avr-gcc với hầu hết mọi ide. Trái ngược với những gì người khác có thể nói, mã hóa Arduino về cơ bản giống như mã hóa một vi điều khiển trần, với một số tiện ích bổ sung với chi phí hiệu năng.


4
Nhưng bạn cũng có thể sử dụng bộ tải và thư viện khởi động Arduino với ATmega328.
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams biến nó thành một arduino xương trần, natch.
Người qua đường

5

Tôi mua chip Atmega328P đã được khởi động trước và lập trình chúng theo mạch với cáp FTDI và sẵn sàng, giống hệt như cách tôi lập trình Arduino. Tôi thích IDE Eclipse nhưng bạn có thể sử dụng bất kỳ môi trường nào bạn thích - Atmel Studio, Arduino IDE, emacs hoặc chân trần trên dòng lệnh.

Bảng này đang được xây dựng tại điểm hoàn thành đủ để kiểm tra với chương trình Hello, sử dụng cáp để lập trình, cấp nguồn và đầu cuối. Nó vẫn sẽ cần nguồn cung cấp năng lượng của nó - bộ điều chỉnh điện áp cực thấp LM2936 và đầu nối pin, trong trường hợp của tôi - và bất kỳ thành phần nào khác trên bo mạch và các kết nối ngoài bảng mà dự án sẽ cần:

NotDuino

Vì bạn có Arduino, bạn có thể tiết kiệm một ít tiền và sử dụng chip không được lập trình, sử dụng Arduino để cài đặt bộ tải khởi động. Các nhãn pin-out màu xanh đẹp giúp giảm tỷ lệ lợi nhuận của tôi! Tôi sử dụng một tinh thể 16 MHz nhưng nếu bạn có thể chạy với bộ dao động bên trong thì số phần của bạn giảm đi 3 (các tụ xtal và 2 tụ).


2

Để chuyển từ Arduino nơi phần cứng được cung cấp và phần mềm là lớp phủ ngôn ngữ C, tôi muốn đưa ra một vài gợi ý. Tôi thấy mọi người đã đăng một số câu trả lời hữu ích nhưng tôi đã ở nơi bạn đang ở và tôi sẽ làm mọi thứ khác đi một chút.

  1. Chọn một trình sửa lỗi. Trình gỡ lỗi cung cấp cho bạn khả năng lập trình vi điều khiển cũng như gỡ lỗi bao gồm xử lý 'từng bước', 'điểm dừng' cho phép bạn tạm dừng chương trình tại một dòng mã nhất định để kiểm tra xem mã đó đang làm gì. ISP (Lập trình trong mạch) là giao diện nối tiếp, sử dụng 3 chân tốt nhưng không cung cấp đầy đủ chức năng mà người mới bắt đầu muốn. Giao diện JTAG sử dụng 4 chân cung cấp cho bạn chức năng cơ bản đầy đủ về mặt sử dụng điểm dừng và công cụ. Mọi người thường nghiêng về ISP nhiều hơn vì nó dễ cài đặt hơn nhưng nếu bạn hỏi tôi thì JTAG không khó cài đặt, nhưng nó cũng tùy thuộc vào sở thích cá nhân. Và có dây gỡ lỗi giao diện mà tôi muốn bỏ qua trong cuộc thảo luận này vì bạn sử dụng ISP hơn là gỡ lỗi dây.
  2. Mua một trình gỡ lỗi có cả chức năng ISP và JTAG. Tôi nghĩ bạn mua một lần nhưng mua tốt sẽ giúp bạn trong tương lai nếu bạn muốn thay đổi thiết kế của mình. Tôi khuyên bạn nên sử dụng AVR Dragon hoặc JTAGICE. Cả hai kết nối với PC thông qua USB và cả hai đều cung cấp ISP và JTAG. JTAGICE đắt hơn một chút so với AVR Dragon nhưng tôi chắc chắn khuyên dùng AVR Dragon.
  3. Bạn sẽ thấy rằng hầu hết các bộ vi điều khiển Atmel đều có chức năng ISP nhưng không nhiều người có JTAG. Các bộ vi điều khiển nhỏ như loạt AT90S2313 hoặc ATTINY sử dụng dòng ISP vì chúng có kích thước nhỏ. Nhưng nếu bạn đang tìm kiếm không chỉ nhấp nháy một vài đèn LED mà còn muốn giao diện với màn hình LCD hoặc bàn phím hoặc những gì có thì bạn khuyên bạn nên sử dụng một vi điều khiển lớn hơn một chút. Nếu bạn đang sử dụng nguồn cung cấp 5V, tôi khuyên bạn nên sử dụng ATMega8 hoặc thậm chí ATMega16 hoặc ATMega128 (fav của tôi). ATMega16 và ATMega128 có giao diện ISP và JTAG.
  4. Theo như IDE có liên quan, tôi đã từng sử dụng Code Vision và AVR Studio nhưng tôi khuyên bạn nên sử dụng Atmel Studio 6.0 hoặc mới hơn để đáp ứng mọi nhu cầu của bạn.

Tôi có một vài ý tưởng sơ đồ mà tôi đã tự học để bạn có một giao diện sạch sẽ và mượt mà với micro của bạn. Hãy cho tôi biết nếu bạn cần sự giúp đỡ.


1

Lời khuyên chân thành

Arduino là dành cho người mới bắt đầu, có hai cách để đi từ đây

Cách 1: Hiểu cách hoạt động của bộ điều khiển / bộ xử lý vi mô (cách tiếp cận tốt hơn)

Atm 8051

Điều đó có nghĩa là tôi học kiến ​​trúc và mã lắp ráp (hoặc kim loại trần) cho micro p / c. Nếu bạn cần một điểm khởi đầu cho điều này, tôi sẽ đề xuất Atmel 8051 là bộ điều khiển vi mô 8 bit với tập lệnh hướng dẫn lắp ráp và kiến ​​trúc đơn giản nhất. Bất kỳ bộ xử lý 32 bit hoặc 64 bit hiện đại nào khác đều có dạng kiến ​​trúc bắt nguồn từ nó. Bộ điều khiển vi mô này vẫn đang được sử dụng như một phần của khóa học sau đại học của tôi vì đây là điểm khởi đầu tốt và có sẵn nhiều tài liệu.

Oh và bộ dụng cụ để tạo bảng ISP của bạn đã được bán (bộ dụng cụ được lắp ráp hoàn chỉnh với các bộ phận xử lý, hàn cho bộ dụng cụ bảng và bạn có thể tự xây dựng bảng phát triển chỉ cần một vài cáp / ổ cắm IC và RS-232)

Vì nó là công nghệ thấp, tất cả các thành phần sẽ có giá rẻ.

Cách 2: Chuyển sang cách tiếp cận phần mềm-phần cứng (ít thích hợp hơn)

Quả mâm xôi Beagle xương đen

Đây là cách tiếp cận cho những người chậm chạp đã nhúng vào một chút lắp ráp và "khai thác" HOẶC những người muốn chuyển sang phần mềm nhiều hơn phần cứng. Tôi sẽ đề nghị chuyển sang một hội đồng sở thích khác như Raspberry Pi hoặc BeagleBoneBlack với bộ xử lý ARM và bắt đầu thực hiện các dự án theo sự sáng tạo của họ.


0

Bạn có thể sử dụng bảng Arduino, mà không cần sử dụng các thư viện và môi trường hộp cát, bạn có thể tự lập trình mọi thứ trực tiếp. Nếu bạn muốn sử dụng bộ tải khởi động của họ thông qua serial / uart để lập trình, điều đó hoạt động tốt. Nhưng hầu hết / tất cả các phần avr cũng có thể được lập trình theo cách khác, với phần được giữ lại có nghĩa là nó không bị brick. nó khá dễ dàng để bit bang spi từ một arduino hoặc vi điều khiển khác hoặc với một ftdi thoát ra khỏi một số hương vị. sparkfun có bảng arduino và không arduino (ví dụ 32u) rằng tiêu đề spi là rõ ràng. và các bảng đột phá ftdi mà bạn có thể dễ dàng bitbang sử dụng thư viện ftdi hoặc thư viện ftdi đi kèm với linux.

Tài liệu cho từng phần hiển thị các tùy chọn khởi động và tùy chọn lập trình flash. vâng, không khó để chỉ mua một số bộ phận và tạo ra bảng đột phá của riêng bạn. Tôi sẽ không làm điều đó cho đến khi bạn đã sử dụng một breakout hiện có hoặc bảng eval đơn giản và sau đó sao chép nếu cần. Lý tưởng nhất là bắt đầu với một bộ phận với bộ tạo dao động RC bên trong, về cơ bản là nguồn điện, mặt đất và chân lập trình ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.