Як перейти з Arduino на використання мікроконтролера безпосередньо?


19

Я працюю над проектом Arduino. Після того, як я змушу все працювати за допомогою Arduino, я хотів би перейти до рішення, яке НЕ використовує Arduino. Тобто я хотів би використовувати мікроконтролер, не залучаючи плату Arduino. Це дозволить отримати єдину дошку, без щитового рішення.

Я знаю, що є способи зробити власний Arduino на макетній дошці, але це не дуже те, що я намагаюся зробити.

Я не дуже впевнений, як це зробити.

Якщо немає кращого варіанту, я схиляюся до використання ATmega328, який використовується Arduino. Я розумію, що інструменти розробки доступні безкоштовно або принаймні не дуже дорогі.

Для цього питання припустімо, що я можу отримати + 5 В до моєї схеми.

Перше моє запитання - як програмувати MCU. Я вважаю, що є два варіанти:

  1. Купіть програміст, запрограмуйте MCU, а потім помістіть чіп у мою схему.
  2. Створіть мою схему, щоб вона включала підтримку програмування в контур.

Я припускаю, що якщо я перейду з варіантом №1, це так просто, як вставити запрограмований чіп у мою схему; Мені нічого більше не потрібно. Звичайно, міняти програмне забезпечення було б незручно.

Але для варіанту №2 я не впевнений, що мені потрібно. З огляду на прочитане, я вважаю, що мені потрібен кабель для програмування та роз'єм на платі (який тип?). Тоді я думаю, що я (правильно) підключую роз'єм до певних штифтів на ATmega.

Так чи інакше, мені знадобиться студія Atmel.

По-друге, окрім джерела живлення, чи є на Arduino щось, що мені абсолютно потрібно? Я думаю, можливо перемикач скидання?


2
Ви можете використовувати Arduino для програмування AVR. Мені особисто подобається використовувати інструменти командного рядка та makefile, а не IDE.
jippie

1
Це питання може бути більш підходящим для біржі стеків Arduino. arduino.stackexchange.com Це зараз у Public Beta
akellyirl

4
Але моя мета - дизайн без ардуїно.
Рік

"чи є щось на ардуїно, що мені абсолютно потрібно?" Я думаю, вам знадобляться шпильки UART (він же серійний порт), це стане в нагоді для налагодження.
vvy

Студія Atmel абсолютно не потрібна. Я програмую свої фішки з командного рядка (і текстового редактора). Незважаючи на те, що надано для великих проектів, студія Atmel, безумовно, полегшить
Кріс Лаплант

Відповіді:


10

Ласкаво просимо в чудовий світ Атмеля. Дозвольте запропонувати вам декілька відповідей на ваші запитання на основі мого хобі та професійного досвіду.

Не турбуйтеся нічим, АМО вмикаючим програмуванням. Якщо ви не є ідеальним кодером, видалення мікросхеми кожного разу, коли ви хочете програмувати, це кошмар. Я рекомендую AVRISPmkII як інструмент програмування початкового рівня. Недоліком є ​​відсутність апаратної налагодження. Альтернативою є дракон, але я з цим не маю досвіду. Я можу сказати, що JTAGICEmk3 - це приємний інструмент налагодження.

Студія Atmel хороша для програмування. Це фактично моє улюблене вбудоване середовище розробки. Ви можете використовувати засоби CLI, такі як AVRDUDE та AVR-GCC, але IDE піклується про це за вас.

РЕЗЮМЕ:

Купіть AVRISP для просто програмування (простіше, підключити та відтворити) або DRAGON (я не можу запропонувати поради).

На вашій дошці виведіть штифти ICSP до 6-контактного дворядного заголовка 0,100 "- з'єднання описані в цій таблиці даних .

Скидання перемикачів не потрібно.


1
Я мав відмінні результати з EvUSBasp.
Ігнасіо Васкес-Абрамс

Як тільки я виведу шпильки ICSP на мою плату, чи потрібно їх присвячувати програмованому програмуванню, чи я все ще можу їх якось використовувати як штифти GPIO?
Рікардо

2
Ви можете використовувати їх як GPIO, оскільки вони поділяють функції з SPI. Програміст ставить чіп у скидання, а потім спілкується з ним.
HL-SDK

1
Пов’язані серії підручників щодо початку програмування мікроконтролерів . Вони використовують AVRMega і проходять процес підключення провайдера і розкішний код C, щоб блимати світлодіод.
MDMoore313

1
@ HL-SDK має рацію, що для ICSP потрібно присвятити лише контактний ключ RESET, але для інших штифтів потрібна певна обережність, тобто вони, ймовірно, повинні використовуватися як вихідні штифти, а не вхідні штифти (тому сигнали не ' не турбуйте зовнішню схему в режимі ICSP), і все, що приєднано до них, повинно бути спроектовано таким чином, щоб не реагувати негативно на будь-яку випадкову комбінацію сигналів, яку надсилає їм трафік програмування.
мікротерйон

10

Вам не доведеться "закінчувати" все відразу. Ось як я конвертував:

Для початку я продовжував користуватися Arduino, але перетворював дзвінки до бібліотеки Arduino в регістр, який читає і записує, по одному рядку за одним, бачачи, чи мої програми все ще працюють. Таким чином я звик користуватися регістрами і побачив, що вони не докорінно перериваються з ардуїнським способом ведення справ. Такі функції Arduino, як digitalWrite (), просто маніпулюють регістрами - ви можете читати та записувати їх безпосередньо у своїх ескізах.

Наступним моїм кроком було поставити ATTiny 85 на дошці та запрограмувати її з Arduino як ISP ( http://highlowtech.org/?p=1695 ). Якщо ви купуєте блок живлення та використовуєте внутрішній генератор ATTiny, для цього потрібна смішно мала проводка. Я використовував ID Arduino для компіляції, але продовжував використовувати регістри, наскільки я міг.

Потім я встановив безкоштовний інструментальний ланцюжок командного рядка Crosspack і склав блискучу програму. Після ще декількох спроб та помилок мені вдалося запрограмувати ATTiny тільки з avrdude, залишаючись повністю поза екосистемою Арудіно.

Після того, як ви блимаєте лише за допомогою інструментів командного рядка, ви позбавлені Arduino. Дослідіть різні периферійні пристрої та їхні регістри, і незабаром це стане абсолютно природно.

Після всього цього я часто опиняюсь за допомогою Arduino, тому що це швидше. Я виявив, що перегляд описів реєстру свого роду відстійний; немає сенсу робити це, якщо не потрібно. Хоча добре знати, як це зробити.


8

Я згоден з коментарем HL-DSK вище. Я витратив зайві гроші і отримав програміста з можливостями налагодження. Я використовую JTAGICE3, близько 110 доларів на digi-key.

Про програмування ISP читайте тут . Він покаже вам, як виявити з'єднання SPI. SPI-з'єднання на вашому мікросхемі знаходяться в таблиці даних ATmega. Подивіться на сторінку 2 для штифтів MISO / MOSI / SCK / RESET. Програміст повинен мати можливість контролювати лінію скидання. Не забудьте використати підтягуючий резистор на лінії скидання, щоб ваш чіп запустився після відключення програміста.

Отримайте тут заголовок 2x3 . Або зробіть самостійно, використовуючи відривні заголовки.


2
Я вдруге отримаю програміста з підтримкою налагодження. На початку цього місяця мене кинули в глибокий кінець проекту PIC32 без попереднього досвіду низького рівня. Навіть коли хтось пише письмовий функціонал бітового удару найнижчого рівня, я навіть не хочу думати про те, наскільки складніше з'ясувати, де мої проблеми, якщо все, що мені довелося бачити всередині, - це один червоний / зелений світлодіод.
Dan Neely

Це, коли у вас є професійний інструмент, назад вже не буде.
Метт Янг

7

Різниця між Arduino та голою ATmega328 - це лише дві речі. Завантажувач Arduino та бібліотеки Arduino. Ви можете кодувати Arduino з голими C або C ++, не використовуючи жодної бібліотеки. Ви також можете використовувати збірку замість цього. Завантажувач дозволяє завантажувати новий код через серійний, не проходячи (трохи) складнішого в ланцюзі серійного програмування (в основному SPI).

Ви можете використовувати стандартні бібліотеки програмування та avr-gcc майже з будь-якою ідеєю. Всупереч тому, що можуть сказати інші, кодування Arduino в основному схоже на кодування голого мікроконтролера, з деякими додатковими зручностями за рахунок деякої продуктивності.


4
Але ви також можете використовувати завантажувач Arduino і бібліотеки з голою ATmega328.
Ігнасіо Васкес-Абрамс

@ IgnacioVazquez-Abrams, який перетворює його на ардуїно з голими кістками, натч.
Перехожий

5

Я купую попередньо завантажені мікросхеми Atmega328P і програмую їх в ланцюзі за допомогою кабелю FTDI і avrdude, ідентично тому, як я програмував Arduino. Мені подобається ID Eclipse IDE, але ви можете використовувати будь-яке вподобане середовище - Atmel Studio, Arduino IDE, emacs або босоніж у командному рядку.

Ця плата будується в точці, коли вона достатньо повна для тестування з програмою Hello, використовуючи кабель для програмування, живлення та терміналу. Ще буде потрібно його джерело живлення - LM2936 ультранизький постійний регулятор напруги струму і роз'єм акумулятора, в моєму випадку - і будь-які інші бортові компоненти та бортові з'єднання, необхідні проекту:

NotDuino

Оскільки у вас є Arduino, ви можете заощадити трохи грошей і використовувати непрограмовані фішки, використовуючи Arduino для встановлення завантажувача. Симпатичні сині ярлики для вивільнення допомагають знизити показник гуфінгу! Я використовую кристал 16 МГц, але якщо ви можете працювати з внутрішнім генератором, кількість ваших частин знижується на 3 (xtal і 2 конденсатори).


2

Щоб переїхати з Arduino, де передбачено обладнання та програмне забезпечення - це накладення мови С, я хотів би зробити кілька пропозицій. Я бачу, що люди опублікували кілька корисних відповідей, але я був там, де ти є, і я би робив речі, що виходять трохи по-іншому.

  1. Виберіть налагоджувач. Налагоджувачі надають вам можливість програмування мікроконтролера, а також налагодження, що включає обробку "поетапно", "точки прориву", що дозволяє призупинити програму на певному рядку коду, щоб перевірити, що саме з кодом. ISP (In-Circuit Programming) - це послідовний інтерфейс, використовує 3 штифти, що добре, але не забезпечує повну функціональність, яку початківець хотів би. Інтерфейс JTAG використовує 4 штирі, що забезпечує вам в основному повну функціональність з точки зору використання точок прориву та іншого. Зазвичай люди більше схиляються до провайдера, оскільки його відносно легше налаштувати, але якщо ви запитаєте мене, JTAG не важко налаштувати, але це також зводиться до особистих переваг. І є провід налагодження інтерфейс, який я хотів би пропустити в цій дискусії, тому що ви скоріше використовуєте провайдер, ніж провід налагодження.
  2. Купіть налагоджувач, який має як ISP, так і JTAG. Я думаю, що ви купуєте один раз, але купуєте товар, який допоможе вам у майбутньому, якщо ви хочете змінити дизайн. Я рекомендую AVR Dragon або JTAGICE. Обидва підключаються до ПК через USB, і обидва забезпечують ISP та JTAG. JTAGICE трохи дорожче, ніж AVR Dragon, але я напевно рекомендую AVR Dragon.
  3. Ви побачите, що більшість мікроконтролерів Atmel мають функціональність ISP, але не багато мають JTAG. Невеликі мікроконтролери, такі як AT90S2313 або ATTINY, використовують ISP-серії, оскільки вони мають невеликі розміри. Але якщо ви шукаєте не лише блимати декількома світлодіодами, але хочете взаємодіяти з скажімо РК-екраном або клавіатурою чи що у вас, то рекомендую зайти на трохи більший мікроконтролер. Якщо ви використовуєте джерело живлення 5В, я рекомендую вам ATMega8 або навіть ATMega16 або ATMega128 (мій фаворит). ATMega16 і ATMega128 мають інтерфейс ISP та JTAG.
  4. Що стосується IDE, я використовував кодове бачення та AVR Studio, але рекомендую використовувати Atmel Studio 6.0 або новіший, який задовольняє всі ваші потреби.

У мене є кілька схемних ідей, які я дізнався самостійно, щоб у вас був чистий і плавний інтерфейс до вашого мікрофона. Повідомте мене, якщо вам потрібна допомога.


1

Чесні поради

Arduino - це для початківців, звідси є два шляхи

Спосіб 1: Розуміння того, як працює мікроконтролер / процесор (кращий підхід)

Atmel 8051

Під цим я маю на увазі архітектуру навчання та код складання (або голий метал) для мікро p / c. Якщо для цього вам потрібна відправна точка, я б запропонував Atmel 8051, який є 8-бітовим мікроконтролером з найпростішим набором архітектури та монтажу. Будь-який інший 32-бітовий або 64-бітний процесор має форму архітектури. Цей мікроконтролер досі використовується як частина моєї випускної курсової роботи, оскільки це хороша відправна точка і багато літератури доступна.

О, і набори для створення вашої плати провайдера продаються (повністю зібрані набори з процесором, припої компонентів до платів, і ви можете самостійно скласти плату для розробки, потрібна лише пара кабелів / розеток ІС та RS-232)

Оскільки це низькотехнологічні, всі компоненти будуть дешевими.

Шлях 2: Перейти до апаратно-програмного підходу (менш бажано)

Малина Пі Біглева кістка Чорна

Це підхід для шахраїв, які занурилися в збірку і "простукали" АБО людей, які хочуть перейти на більше програмного забезпечення, ніж апаратного. Я б запропонував перейти до іншої ради любителів, як Raspberry Pi або BeagleBoneBlack, з процесорами ARM, і почати займатися проектами для своєї творчості.


0

Ви можете використовувати дошку Arduino, не використовуючи бібліотеки пісочниці та оточення, а все можете безпосередньо програмувати. Якщо ви хочете використовувати їх завантажувач через serial / uart для програми, це добре працює. Але більшість / всі частини avr також можуть бути запрограмовані іншим способом, при цьому частина утримується в режимі скидання, а це означає, що вона не може бути забороненою. досить легко покусати шпигуну від ардуїно чи іншого мікроконтролера або з фідді вирватися з якогось аромату. sparkfun має ардуїно та неардуїно дошки (наприклад, 32u), що заголовка spi очевидно. та дошки розбиття ftdi, які ви можете легко розігнати, використовуючи бібліотеку ftdi або бібліотеку ftdi, що постачається з Linux.

Документація до кожної частини показує параметри завантаження та параметри програмування Flash. так, не важко просто придбати якісь деталі і зробити власну дошку розбивки. Я б не робив цього, поки ви не використали існуючий прорив або просту дошку eval, а потім клонуєте, що за потреби. Ідеально розпочати з деталі з внутрішнім генератором RC, в основному, шнурами живлення, заземлення та програмування ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.