Прошивка AVR мікроконтролерів за допомогою Raspberry Pi
А чому не спробувати прошити мою ATmega за допомогою Raspberry Pi? Така думка стрельнула мені в голову, коли я зробив невеличку плату розширення для Raspberry Pi. Raspberry Pi має протокол SPI, тому це проблема виключно програмного плану. Я відразу встановив свого улюбленого Avrdude. Про Avrdude для Windows я вже писав у статті AVRDUDE Windows. Але стандартний Avrdude не знає про ноги SPI, тому, трохи покопавшись в Інтернеті, знайшов рецепт. Існує проект https://github.com/kcuzner/avrdude , в якому avrdude допиляли для Raspberry Pi.
Спочатку треба впевнитись що SPI на вашому Raspberry Pi працює. Перевіряємо файл /etc/modprobe.d/raspi-blacklist.conf: Рядка, що стосується spi, повинно бути заремлено. Приклад файлу /etc/modprobe.d/raspi-blacklist.conf:
#blacklist spi-bcm2708
blacklist i2c-bcm2708
Клонуємо проект avrdude:
git clone https://github.com/kcuzner/avrdude
Для того, щоб його скомпілювати встановлюємо наступні пакети:
sudo apt-get install bison
sudo apt-get install autoconf
sudo apt-get install flex
Можливо прийдеться встановити make та gcc якщо у Вас ще немає:
sudo apt-get install make
sudo apt-get install gcc
Запустимо bootstrap. Якщо йому чогось не буде вистачати, він скаже:
cd ./avrdude/avrdude
./bootstrap
Якщо все гаразд, компілюємо і встановлюємо avrdude:
./configure
make
sudo make install
Після інсталяції avrdude подивимось що він вміє:
avrdude -c ?type
У списку програматорів маємо побачити linuxspi. Це те, що нам потрібно.
Підключаємо мікроконтролер до Raspberry Pi за наступною схемою:
Vcc -> +3.3 GND -> GND Reset -> GPIO25 SCK -> SCLK MISO -> MISO MOSI -> MOSI
Тут треба зауважити, що мікроконтролери, які Ви збираєтесь програмувати, повинні працювати від живлення напругою 3.3 В. НЕ ТРЕБА підключати мікроконтролери до +5. Якщо це зробити, можна спалити Raspberry Pi. Тому дуже уважно перевірте чи не підключили випадково Ваш контролер до +5. І тільки після того, як впевнитесь у цьому, вмикайте живлення Raspberry Pi.
Програмуємо мікроконтролер ATMega8, заливаємо в нього dump.hex:
avrdude -p m8 -c linuxspi -P /dev/spidev0.0 -U flash:w:dump.hex
Програмуємо фьюзи:
avrdude -p m8 -c linuxspi -P /dev/spidev0.0 -U lfuse:w:0xE4:m -U hfuse:w:0xD9:m
Докладніше про AVRDUDE та приклади можна знайти тут AVRDUDE Windows. Або в документації до AVRDUDE.
Успіхів.
Дивись також:
- Raspberry Pi — що це таке?
- Raspberry Pi — GPIO
- Raspberry Pi — UART
- Raspberry Pi — FT232
- Raspberry Pi — PWM і Сервопривод
- Raspberry Pi — DHT11
- Raspberry Pi - FM Transmitter
- Прошивка AVR мікроконтролерів за допомогою Raspberry Pi
- Raspberry Pi — LCD display 1602
- Raspberry Pi — WiFi
- Raspberry-Pi — I2C (TWI)
- Raspberry Pi - DS18B20
- Raspberry Pi Camera
- nRF24L01+ ATMEGA + Raspberry Pi
- BMP180 + Raspberry Pi + WH1602
- Wi-Fi Метео станція
- Raspbian. Apache + PHP + Python + MySQL
- Встановлюємо Raspbian на Raspberry Pi без клавіатури та монітору
- IR-дистанційне керування. Використання LIRC у Python
- Raspberry Pi. Raspbian. Відправлення пошти через аккаунт Gmail
- Neoway M590 – GSM/GPRS modem
- MPU-6050 – гіроскоп – акселерометр
- HMC5883L Магнітометр
- PWM контролер з інтерфейсом I2С на базі мікросхеми PCA9685
- Метеостанція на Raspberry Pi своїми руками
- Raspberry Pi. Live-stream video
Недавні записи
- FOC - своя реалізація векторного керування. Підбиваю підсумки 2022 року
- Конструктор регуляторів моторів. Підбиваю підсумки 2022 року.
- Чому трифазні мотори стали такими популярними?
- FOC & Polar coordinates
- Конструктор регуляторів PMSM, BLDC двигунів
- Своя бібліотека для векторного керування безколекторними моторами
- Not Allowed
- Адаптивний ПІД регулятор
- Конструктор регуляторів моторів. Структура.
- Конструктор регуляторів моторів. Анонс.
Tags
tim nodemcu encoder pwm solar watchdog atmega mongodb timer ngnix mpu-6050 options docker gps html foc esp8266 barometer bkp examples mpx4115a bldc pmsm programmator wifi bmp280 dht11 stm32 websocket bme280 usb bluetooth flask uart sensors max1674 motor i2c rtc hih-4000 remap flash capture dma rs-232 led mpu-9250 3d-printer eeprom adc books sms web usart battery avr rfid python gpio exti ethernet java-script eb-500 displays smd dc-dc lcd css ssd1331 ssd1306 meteo servo nvic soldering brushless git raspberry-pi st-link piezo
Архіви