Съдържание:

AVR/Arduino мига с Raspberry Pi: 3 стъпки (със снимки)
AVR/Arduino мига с Raspberry Pi: 3 стъпки (със снимки)

Видео: AVR/Arduino мига с Raspberry Pi: 3 стъпки (със снимки)

Видео: AVR/Arduino мига с Raspberry Pi: 3 стъпки (със снимки)
Видео: #12 Цифровое чтение/запись VTScada Modbus | ПЛК Outseal Arduino #VTScada #Modbus #ПЛК #ArduinoPLC 2024, Ноември
Anonim
AVR/Arduino мига с Raspberry Pi
AVR/Arduino мига с Raspberry Pi

Вграденият в системата програмист (ISP) е устройство, което можете да използвате за програмиране на много микроконтролери, например ATMega328p, което е мозъкът на Arduino Uno. Можете да си купите нещо като USBtinyISP или дори да използвате Arduino. Тази инструкция ще ви покаже как да използвате Raspberry Pi като ISP.

Програмата avrdude, която Arduino IDE използва под капака за флаш чипове, може да се използва с много програмисти. Една от опциите му е да използва SPI щифтовете на порта за разширение на Pi. Ще ви обясня как да направите подходящите връзки, ще събера проста схема на perfboard, така че да не се налага да преустройвате окабеляването всеки път, когато искате да мигате чип, и как да инсталирате и използвате avrdude. Ще ви покажа и как да използвате програми, компилирани с помощта на Arduino IDE върху AVR чип, като ATmega или ATtiny, използвайки този метод.

Необходими неща:

  • Raspberry Pi с най -новия инсталиран Raspbian
  • 40-пинов мъжки контакт (или 26-пинов, ако имате по-стар Pi)
  • IDE кабел за свързване към вашия Pi
  • 16 MHz кристален резонатор
  • 22 pF кондензатори (2)
  • LED (1) за индикация на статуса на програмиста
  • 8, 14 и/или 28 пинови IC гнезда, в зависимост от формата на чипове, които искате да мигате
  • Някои перфорирани плочи, проводници, спойка

Стъпка 1: Изграждане на приставка за обущари

Изграждане на приставка за обущар
Изграждане на приставка за обущар
Изграждане на приставка за обущар
Изграждане на приставка за обущар
Изграждане на приставка за обущар
Изграждане на приставка за обущар

Сериен периферен интерфейс (SPI), наричан още четирипроводен сериен, е начин за комуникация между едно главно устройство и едно или повече подчинени устройства. Ще използваме това за флаш чипове, с Pi като главен и чип като подчинен. Ще направите следните връзки между Pi и вашия чип (вижте разкачките по -горе за различни AVR и Pi разширителни портове, за да знаете кои пинове са кои):

  • Свържете щифтовете MOSI (master-out-slave-in) заедно
  • Свържете щифтовете SCLK (споделен часовник) заедно
  • Свържете щифтовете MISO (master-in-slave-out) заедно с резистор 220 Ohm, за да защитите Pi от неочаквано високи напрежения от чипа
  • Свържете GPIO 25 на Pi директно към щифта RESET на чипа. Pi дърпа този щифт ниско при програмиране, затова използваме 10K резистор, за да го поддържаме висок, когато не програмираме, и светодиод с 1K защитен резистор, работещ при положително напрежение, за да ни даде приятна визуална обратна връзка, когато програмира.

Свързваме щифтове за заземяване и захранване (3.3V) между Pi и чиповете, които искаме да програмираме. В случай, че все още не знаете, щифтовете на Raspberry Pi не са 5V толерантни - те ще бъдат повредени, ако върху тях се появят повече от 3.3V. Ако чиповете, които се програмират, се нуждаят от 5V захранване по някаква причина, бихме могли да използваме чип за превключване на нивата, за да защитим щифтовете на Pi, но не съм срещал никакви проблеми при използване на 3.3V - затова препоръчвам да играете на сигурно и да спестите на компоненти.

И накрая, свързваме 16MHz кристален осцилатор през XTAL щифтовете на чипа, който също свързваме към земята чрез няколко 22pF кондензатора. AVR чиповете могат да бъдат настроени да работят на различни честоти, а също така могат да бъдат настроени да използват вътрешен или външен източник за определяне на тази честота. Ако чипът ви е настроен да използва външен кристал като източник на честота, няма да можете да го препрограмирате без него. Иначе няма значение дали е там.

Можете да използвате схемата на веригата в последното изображение като ръководство за сглобяване на вашата приставка за обущар на перфорирана дъска. Можете да имате толкова или малко различни форми на IC гнезда, колкото искате, просто свържете съответните щифтове паралелно с Pi и кристала. N. B. ако използвате образа на моя прототип като ръководство, имайте предвид, че добавих някои допълнителни щифтове и гнезда за заглавки, за да мога да получа достъп до щифтове на Pi по несвързани причини.

Стъпка 2: Инсталиране и използване на Avrdude

Инсталиране и използване на Avrdude
Инсталиране и използване на Avrdude
Инсталиране и използване на Avrdude
Инсталиране и използване на Avrdude
Инсталиране и използване на Avrdude
Инсталиране и използване на Avrdude
Инсталиране и използване на Avrdude
Инсталиране и използване на Avrdude

За да инсталирате avrdude на вашия Pi, просто напишете

sudo apt-get install avrdude

След това ще трябва да активирате SPI интерфейса, ако още не е включен. Има начин да направите това от командния ред, но е много по-лесно да използвате инструмента за конфигуриране на Raspberry Pi. Тип

sudo raspi-config

и отидете на Interface Options, за да включите SPI.

За да мигате чипа си, включете лентовия кабел от вашия Pi в конектора на веригата за перфорирана дъска и поставете чипа в съответния IC контакт (уверете се, че е обърнат в правилната посока).

Когато мигате програма, трябва също така да се уверите, че сте поставили предпазителите в чипа правилно. Това всъщност са само битове в чипа, които сте задали, за да му кажете на каква тактова честота да работи, дали да изтриете EEPROM при писане на чипа и т.н. Можете да прочетете пълната спецификация на AVR, за да разберете как да настроите всеки бит, но много по -лесно е да използвате калкулатора на предпазители, предоставен на адрес engbedded.com/fusecalc. Изберете името на AVR частта, която използвате, и изберете желаните опции в областта „Избор на функции“. Обикновено просто се уверявам, че настройките на часовника са правилни и оставям другите неща по подразбиране. Почти винаги ще искате да оставите „Проверено серийно програмиране“и „Нулиране деактивирано“НЕПРОВЕРЕНО - в противен случай няма да можете да препрограмирате чипа. Когато имате правилните настройки, можете да превъртите надолу в областта "Текущи настройки" и да копирате аргументите AVRDUDE, както е показано на изображението.

За да настроите предпазителите, въведете командата

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p

където partname съответства на чипа, който използвате. Можете да намерите списъка с имена на части, като въведете тип sudo ardude -c linuxspi -p? За да актуализирате програмата си, уверете се, че тя е в текущата ви директория и въведете

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p -U флаш: w:: i

След двете команди светодиодът ще светне, докато чипът се променя.

Стъпка 3: Превключване на програмите Arduino към AVR

Получаване на програми на Arduino към AVR
Получаване на програми на Arduino към AVR
Получаване на програми на Arduino към AVR
Получаване на програми на Arduino към AVR
Получаване на програми на Arduino към AVR
Получаване на програми на Arduino към AVR

Основният фокус на тази инструкция е да прехвърляте вече компилирани програми върху чипове, а не как да ги напишете или компилирате. Исках обаче да обясня как можете да компилирате двоични файлове с помощта на Arduino IDE и да ги поставите на голи AVR чипове, използвайки този метод, тъй като Arduino е сравнително лесен за научаване и има толкова много уроци и примери.

Първо, ще трябва да добавите информация за AVR чиповете, които ще мигате, така че IDE да знае как да ги компилира. Джеймс Слийман много полезно събра някои инсталационни файлове, които са достъпни в github. За да ги използвате, отворете менюто „Предпочитания“в IDE на Arduino и щракнете върху полето до полето „Допълнителни URL адреси на мениджъра на дъски“. Копирайте и поставете следните URL адреси в диалоговия прозорец, който се показва:

След това отидете в менюто "Инструменти" и намерете опцията "Мениджър на табла …" в подменюто "Платка". Превъртете надолу до края на списъка в диалоговия прозорец Boards Manager и инсталирайте платките DIY ATmega и DIY ATtiny.

За да компилирате програмите си, първо се уверете, че сте избрали правилния чип в менюто „Процесор“, както и правилната скорост на процесора. Изберете опцията „Използване на зареждащо устройство: Не“, тъй като ние ще качваме директно с Pi и по този начин можем да използваме допълнителното пространство, което обикновено се заема от зареждащия механизъм на Arduino. Сега щракнете върху бутона „Провери“(отметката). Това ще компилира вашата програма, без да се опитвате да я качите (тъй като вие сами правите тази стъпка).

Ако приемем, че всичко върви добре, сега трябва да пренесете компилираната програма във вашия Pi. IDE ги скрива на временно място, тъй като е предназначена за качване на програми. В Windows той е в AppData/Local/Temp във вашата потребителска директория, в папка, която започва с „arduino_build“. Потърсете.hex файла - това е вашата програма! Изпратете го на вашия Pi чрез FTP или с USB флаш и сте в бизнес.

За да направите това, трябва да имате компютър с Windows или Mac за компилиране на вашите програми, които след това изпращате на Pi. Би било наистина хлъзгаво да може да се направи това на самия Pi, но за съжаление официалната версия на Arduino IDE, налична в хранилището на Raspbian, е доста стара и няма борд мениджър. Без това добавянето на подходящи настройки за компилиране за голи AVR е малко по -сложно. Има уроци за компилиране на по -нова версия на Arduino на вашия Pi - ако това е, което искате да направите, отидете да ги намерите! Чувствам също, че би трябвало да е възможно да накараме IDE да използва linuxspi програмиста, за да мига чип от самата IDE (т.е. използвайки бутона "изтегляне"), но това е извън моето търпение и ниво на умения - ако знаете начин, публикувайте го в коментарите! И накрая, можете просто да пишете програми директно в AVR-C и да ги компилирате на Pi с avr-gcc, което ви дава пълна платформа за разработка на AVR в Raspberry Pi. Направих малка част от това и ако искате да тръгнете по този път, поздравявам ви. Мигайте!

Препоръчано: