Раздел Микроконтроллеры и прочее - Заметки айтишникаhttps://it-stories.ru/blog/category/microcontrollers/блог про ITMon, 11 Oct 2021 09:05:57 +0000ru-RUhourly1https://wordpress.org/?v=6.9.4https://it-stories.ru/wp-content/uploads/2021/03/cropped-560216-32x32.pngРаздел Микроконтроллеры и прочее - Заметки айтишникаhttps://it-stories.ru/blog/category/microcontrollers/3232 6 применений в «умном доме» платы USBasp. Нестандартное использование USBasphttps://it-stories.ru/blog/microcontrollers/6-primenenij-v-umnom-dome-platy-usbasp-nestandartnoe-ispolzovanie-usbasp/https://it-stories.ru/blog/microcontrollers/6-primenenij-v-umnom-dome-platy-usbasp-nestandartnoe-ispolzovanie-usbasp/#respondMon, 11 Oct 2021 09:05:56 +0000https://it-stories.ru/?p=1573Иногда дешевле купить готовое устройство, чем собирать его самому. Да и самодельное устройство не всегда и не у всех будет выглядеть аккуратно- это зависит от наличия оборудования/материалов и прямоты рук. Пользователи, знакомые с микроконтроллерами Atmel или хотя бы с Arduino

Сообщение 6 применений в «умном доме» платы USBasp. Нестандартное использование USBasp появились сначала на Заметки айтишника.

]]>
Иногда дешевле купить готовое устройство, чем собирать его самому. Да и самодельное устройство не всегда и не у всех будет выглядеть аккуратно- это зависит от наличия оборудования/материалов и прямоты рук.

Пользователи, знакомые с микроконтроллерами Atmel или хотя бы с Arduino скорее всего знают о дешевом программаторе USBasp, цена которого на Ebay около $ 3. Распространены две версии программатора:
USBasp 2.0 — с стабилизатором на 3.3 вольта.
USBasp 3.0 — плата поменьше, без стабилизатора. Так же у него не выведены на разъем порты PD0 и PD1(Аппаратный UART).В руках не держал и соответственно рассматривать его тут не будем.

Ниже мы рассмотрим как превратить программатор USBasp в I2C-USB переходник, научимся читать датчики влажности и температуры, получим простой набор портов ввода/вывода (PIO), RS232-USB, а так же попытаемся создать устройство nRF24L01-USB для чтения беспроводных датчиков и управления устройствами. Ну и для любителей Arduino — будем программировать в среде Arduino IDE используя USBasp как макетную плату.Проекты используют популярную библиотеку V-USB для работы с USB в программной реализации.

Архив с прошивками можно скачать в конце статьи. Я намеренно не публикую тут прямые ссылки на свои проекты -вы их найдете в архиве.

Устройство программатора USBasp

Программатор состоит из небольшого числа деталей. Мозгом программатора является микроконтроллер Atmega8, который имеет всего 8 кб флеш памяти и 1 кб ОЗУ(SRAM).Вроде и слабенький микроконтроллер по современным меркам, но столько всего можно на нем сделать.Из-за особенностей работы программного USB м/к работает на частоте 12мгц. Соответственно, при написании своей прошивки необходимо учитывать это.

USBasp имеет 10 контактный разъем, на который выведены 6 выводов микроконтроллера: PB5 (SCK), PB4 (MISO), PB3 (MOSI, PWM), PB2(PWM), PD0 (RXD), PD1 (TXD).Питание 5в или 3.3в, которое переключается перемычкой JP1.

Плата имеет два встроенных светодиода на выводах PC0 и PC1.Выводы м/к PB0,PB1 и PD2 используются для программного USB,PC2 выведен на перемычку JP3.Остальные выводы микроконтроллера не распаяны.
Со схемой устройства можно ознакомится в архиве в конце статьи.

Зарузчик

Для быстрой смены прошивки, без сторонних программаторов можно установить загрузчик USBaspLoader. Официальная страница проекта USBaspLoader
К сожалению загрузчик отнимает 2 кб флеш памяти, но для большинства применений нам хватит оставшихся 6 кб.

Установка загрузчика

Команда программирования используя Arduino как программатор:

avrdude -c avrisp -P COM1 -b 19200 -p m8 -U flash:w:boot_m8.hex -U hfuse:w:0xc0:m -U lfuse:w:0x9f:m -U lock:w:0x2f:m

Команда программирования через другую USBasp:

avrdude -c usbasp -p m8 -U flash:w:boot_m8.hex -U hfuse:w:0xc0:m -U lfuse:w:0x9f:m -U lock:w:0x2f:m

После этого уже можно заливать свою прошивку без программатора стандартной командой

avrdude -c usbasp -p m8 -U flash:w:имя_файла.hex

Для того, чтобы «залить» прошивку в устройство с установленным USBaspLoader необходимо установить перемычку JP3, которая переводит устройство в режим программирования и сбросить устройство, замкнув контакт ближний к перемычке выбора питания(JP1) на перемычке JP2 на землю.

Использование USBasp как макетную плату в Arduino IDE

Для прошивки в среде Arduino IDE (проверено на версиях 1.0.х) необходимо в файл board.txt вписать следущий текст:

 atmega8usb.name=ATmega8 USB 12 MHz
 atmega8usb.upload.protocol=arduino
 atmega8usb.upload.maximum_size=6144
 atmega8usb.upload.speed=19200
 atmega8usb.bootloader.low_fuses=0x9f
 atmega8usb.bootloader.high_fuses=0xc0
 atmega8usb.bootloader.path=atmega8
 atmega8usb.bootloader.file=boot_m8.hex
 atmega8usb.bootloader.unlock_bits=0x3F
 atmega8usb.bootloader.lock_bits=0x2F
 atmega8usb.build.mcu=atmega8
 atmega8usb.build.f_cpu=12000000L
 atmega8usb.build.core=arduino
 atmega8usb.build.variant=standard

После этого в среде Arduino IDE можно выбрать появившуюся плату ATmega8 USB 12 MHz. Прошивка осуществляется через меню «загрузка с помощью программатора».

Доступные пины по нумерации Arduino: 13 (SCK),12 (MISO),11 (MOSI,PWM),10 PB2(PWM) ,1 (TXD),0 (RXD).Так же доступны цифровые выводы 14 и 15 для управления светодиодами на плате.

Можно задействовать и интерфейс USB, используя библиотеку для Arduino V-USB, но возможностей тут меньше, чем на Си.

nRF24L01-USB

Позволяет обмениваться данными между nRF24L01/nRF24LE1 и компьютером с устройством nRF24L01-USB. Теоретически поддерживается до 22 клиентов(при пакете передачи 32 байта) на базе nRF24L01/nRF24LE1, но пока на практике проверено до 3. Ограничение связано с тем, что для приема и отправки данных используется буфер в ОЗУ устройства, а его как известно у Atmega8 всего 1кб.Размер приемного пакета может быть до 32 байт, а отправки — 4 байта, это ограничение связано со способом реализации работы с библиотекой V-USB.
Работа nRF24L01-USB адаптера основана на временном разделении, когда клиенты отправляют/принимают данные в разное время. При большом количестве клиентов время опроса должно быть бОльшим. Для обмена данными в реальном времени количество клиентов должно быть наименьшим. Пока у устройства имеются некоторые недостатки, но думаю это решаемо.
Клиентская утилита управления, чтения и отправки данных работает как в Linux, так и Windows, но пока, к сожалению, требуется компиляция для настройки принятых данных. Для удобства настройки и отладки через утилиту можно менять канал, скорость и включать/выключать аппаратное подтверждение, работать напрямую с регистрами радио модуля.
Устройство можно применить для беспроводных датчиков или управления в системах умного дома.
Кстати, ранее был разработан и испытан вариант беспроводных датчиков влажности и температуры на базе attiny13 на частоте 315 или 433 мгц, но это уже другая тема.

RS232-USB

На основе программатора USBasp можно создать устройство-переходник RS232-USB на базе проекта cdc-232.
Подойдет для программирования плат Arduino, на которых нет микросхемы FT232RL или другого преобразователя usb-uart.

PIO-USB

6 выводов, которые выведены на разъеме программатора могут использоваться как обычные PIO выводы, для «дерганья» светодиодами и релюшками, а так же считывания логического состояния порта. В архиве в конце статьи имеется мой вариант PIO-USB, который так же позволяет считывать датчик влажности DHT11/DHT22, а так же транслировать код для управления розетками/люстрами, если подключить радио передатчик на 433/315 МГц. Планируется новая версия, в которой увеличится количество подключаемых датчиков влажности и исправлены ошибки.

DS18B20-USB

Программатор можно «научить» работать с несколькими датчиками температуры DS18B20.Например использовать проект USBTemp.
Возможны и другие варианты реализации схемы и прошивки устройства, а так же интеграция с PIO-USB.
К сожалению из-за размера прошивки загрузка не возможна через USBaspLoader.

I2C-USB

Устройство позволяет подключить практически любые устройства i2c к компьютеру.Проверено как на Linux так и в Windows XP.Прошивка основана на известном проекте i2c tiny usb.
Мои примеры использования устройства:
Чтение датчика давления BMP085.
Управление микросхемой расширителем портов MCP23017, получив тем самым почти тот же PIO на компьютере.
Вариантов применения масса: программирование EEPROM памяти, чтение спецефичных разных датчиков, управление FM приемником.

Это конечно же далеко не все варианты использования программатора в нестандартном функционировании.

Все исходные коды сторонних проектов можно найти на их официальных сайтах. В архиве в конце статьи имеются прошивки, которые адаптированы под выводы платы USBasp.

Архив с прошивками: usbasp_fw.zip

Сообщение 6 применений в «умном доме» платы USBasp. Нестандартное использование USBasp появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/microcontrollers/6-primenenij-v-umnom-dome-platy-usbasp-nestandartnoe-ispolzovanie-usbasp/feed/ 0
Автоматика для гаража и не только https://it-stories.ru/blog/microcontrollers/avtomatika-dlja-garazha-i-ne-tolko/ https://it-stories.ru/blog/microcontrollers/avtomatika-dlja-garazha-i-ne-tolko/#respond Sun, 28 Mar 2021 17:34:08 +0000 https://it-stories.ru/?p=382 Делаю потихоньку себе устройство для автоматизации и удаленного управления гаражом (он у меня боевой, всегда все там сначала обкатываю). Контроллер простой — платка NodeMCU с релюшками и датчиками.Общается с сервером, шлет показания телеметрии и забирает команды управления.В данный момент поддерживает

Сообщение Автоматика для гаража и не только появились сначала на Заметки айтишника.

]]>
Делаю потихоньку себе устройство для автоматизации и удаленного управления гаражом (он у меня боевой, всегда все там сначала обкатываю).

Контроллер простой — платка NodeMCU с релюшками и датчиками.
Общается с сервером, шлет показания телеметрии и забирает команды управления.
В данный момент поддерживает 4 канала реле для управления нагрузкой и до 10 температурных датчиков (бетта версия, как никак).

Изначально планировал делать как: едешь домой после работы, знаешь, что будешь что-то делать в гараже-мастерской, а на улице мороз. Достаешь телефон, выбираешь отопление и включаешь. Профит.
Также при подъезде в темное время суток я могу включить освещение уличное или внутреннее, чтоб не споткнуться в потемках.
В принципе применений много, это мои первые, что приходят в голову.

Железка сделана — нужен интерфейс.
Для тестов буквально на коленке минут за 5-10 сделал ЭТО.

Для тестов такая штука вполне сгодилась.
Информация подгружалась динамически без перезагрузки страницы и все довольны.
Но стадия тестирования бетта версии подходила к концу и нужно было что-то делать с фронтендом этой штуки.
И пока получается вот что.

Самостоятельно потыкать кнопочки можно в развёрнутой демо-версии панели, которая находится тут

Сообщение Автоматика для гаража и не только появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/microcontrollers/avtomatika-dlja-garazha-i-ne-tolko/feed/ 0
Arduino и беспроводная связь при помощи NRF24L01 https://it-stories.ru/blog/microcontrollers/arduino-i-besprovodnaja-svjaz-pri-pomoshhi-nrf24l01/ https://it-stories.ru/blog/microcontrollers/arduino-i-besprovodnaja-svjaz-pri-pomoshhi-nrf24l01/#respond Tue, 23 Mar 2021 19:54:58 +0000 https://it-stories.ru/?p=299 Трудно переоценить удобство беспроводной связи. Можно управлять самодельными роботами, передавать на расстоянии звук, да и вообще любую информацию, и все это безо всяких идиотских проводов! В мире Arduino существует множество устройств беспроводной связи, вспомнить хотя бы XBee, APC220 / APC230,

Сообщение Arduino и беспроводная связь при помощи NRF24L01 появились сначала на Заметки айтишника.

]]>
Трудно переоценить удобство беспроводной связи. Можно управлять самодельными роботами, передавать на расстоянии звук, да и вообще любую информацию, и все это безо всяких идиотских проводов! В мире Arduino существует множество устройств беспроводной связи, вспомнить хотя бы XBee, APC220 / APC230, а также всевозможные Bluetooth и Wi-Fi модули. Но сегодня мы рассмотрим, пожалуй, одно из самых дешевых и широко распространенных решений на базе чипа NRF24L01.

Немного теории

NRF24L01 является полудуплексным устройством. В один момент времени оно может либо передавать, либо принимать информацию. Чтобы обеспечить двухстороннюю связь, нужно постоянно переключаться из одного режима в другой. Чип передает данные на частоте от 2.400 до 2.525 ГГц в зависимости от выбранного канала, которых в NRF24L01 доступно 126 (см ISM диапазон). То есть, шаг между соседними каналами составляет 1 МГц. Используется модуляция GFSK GFSK.

В устройстве реализованы контрольные суммы, подтверждение передачи пакетов и повторная посылка. Все это можно гибко настраивать. Например, можно указать, сколько раз и с какой частотой совершать повторную посылку, или изменить размер контрольной суммы. Используя один канал, устройство позволяет строить сети типа звезда 1:6. С микроконтроллером устройство общается по протоколу SPI.

Как ни странно, купить NRF24L01 проще в виде готового модуля, чем отдельного чипа. Модули эти выглядят как-то так:


Слева вы видите самый простой модуль с антенной, нанесенной прямо на плату. Он дешев, компактен и способен передавать данные на расстояние до 100 метров в пределах прямой видимости.

По центру находится модуль с разъемом RP-SMA и антенной к нему. Многие Wi-Fi роутеры используют такие же разъемы и антенны. Модуль несколько дороже и более громоздок, зато (в теории) способен передавать данные на расстояние до одного километра.

Наконец, справа — адаптер для модулей NRF24L01. Этот адаптер главным образом состоит из стабилизатора напряжения AMS1117-3.3. Дело в том, что NRF24L01 нужно 3.3 В стабилизированного напряжения. При этом он потребляет достаточно большой ток, который не может выдать гнездо Arduino на 3.3 В. В интернете есть много советов на тему как обойтись без этого адаптера — припаять к модулю конденсатор, использовать отдельный источник питания, обмотать модуль фольгой, и так далее. Я все это перепробовал, и пришел к следующему вердикту. Без стабилизатора напряжения у вас скорее всего ничего не заработает.

Перечисленные модули продаются во многих интернет-магазинах. Выше по тексту я привел ссылки на iarduino.ru, так как сам покупал в нем. На самом деле, все эти модули производятся в Китае, поэтому на AliExpress их можно купить намного дешевле. Но и доставка займет больше времени. Посылки из Китая в Россию идут около двух месяцев.

Дополнение: Как оказалось, существуют также модули NRF24L01 Mini (Chipster.ruAliExpress), предназначенные для пайки на плату.

Практика

Чем удобен адаптер, помимо того, что без его стабилизатора ничего не будет работать, это наличием подписей ко всем пинам. В своих экспериментах пины я подключал следующим образом:

  • IRQ — в данном посте не пригодится. Вообще может использоваться для прерываний;
  • VCC — к плюсу. Притом, поскольку это контакт стабилизатора, подключаем к 5 В, а не 3.3 В;
  • GND — земля;
  • SCK — к цифровому пину 13;
  • MISO, MOSI, CSN, CE — к пинам 12, 11, 10 и 9 соответственно;

Заметьте, что подключение MOSI, MISO и SCK приведено для Arduino Uno. На других версиях Arduino они могут подключаться иначе.

Fun fact! Хотя NRF24L01 и питается от 3.3 В, он понимает и корректно обрабатывает подачу на сигнальные пины напряжения в 5 В. Сделано так специально для удобства взаимодействия с микроконтроллером.

Для работы с NRF24L01 существует несколько готовых библиотек. Наиболее популярной и активно поддерживаемой, по всей видимости, является библиотека RF24 от TMRh20. Она основана на более ранней и ныне, похоже, заброшенной, одноименной библиотеки от maniacbug. Будьте внимательны, не возьмите по ошибке более старую библиотеку.

Пример использования библиотеки RF24 от TMRh20:

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(9, 10);

const int role_pin = A4;
const int led_pin = 2;
const int button_pin = led_pin;
const uint64_t addresses[] = { 0xAF1510009001LL, 0xAF1510009002LL };

bool isMaster = false;
uint8_t last_btn_state = HIGH;

void setup(void)
{
  Serial.begin(9600);

  pinMode(role_pin, INPUT);
  // enable internal pull-up resistor. keep this!
  digitalWrite(role_pin, HIGH);
  isMaster = (bool)digitalRead(role_pin);

  radio.begin();
  radio.setChannel(108);
  radio.setPALevel(RF24_PA_LOW);
  radio.setDataRate(RF24_250KBPS);

  if (isMaster)
  {
    radio.openWritingPipe(addresses[1]);
    // radio.openReadingPipe(1, addresses[0]); // not used yet

    pinMode(button_pin,INPUT);
  }
  else
  {
    // radio.openWritingPipe(addresses[0]); // not used yet
    radio.openReadingPipe(1, addresses[1]);

    radio.startListening();
    pinMode(led_pin,OUTPUT);
    digitalWrite(led_pin, HIGH);
  }
}

void loop(void)
{
  uint8_t state;

  delay(10);

  if (isMaster)
  {
    state = digitalRead(button_pin);

    if(state != last_btn_state)
    {
      Serial.println("Sending state: " + String(state));
      bool ok = radio.write( &state, sizeof(uint8_t) );
      if(ok) Serial.println("OK");
      else Serial.println("Failed!");
      last_btn_state = state;
    }
  }
  else
  {
    if(radio.available())
    {
      Serial.println("Data available, reading...");
      radio.read( &state, sizeof(state) );

      Serial.println("Received: " + String(state));
      digitalWrite(led_pin, state);
    }
  }
}

Этот код обеспечивает взаимодействие двух Arduino, первая из которых выглядит таким образом:

Вторая Arduino выглядит точно так же, только без провода между гнездом A4 и землей, а вместо светодиода к ней подключена кнопка. Если A4 ни к чему не подключен, устройство считается управляющим (мастером), а если подключен к земле — управляемым. Когда кнопка на мастере нажата, светодиод на втором устройстве гаснет. Если кнопка отпущена, светодиод горит.

Приведенный код на мой взгляд является довольно простым, поэтому не вижу необходимости подробно его объяснять.

Заключение

Все исходники к этой заметке вы найдете в этом репозитории на GitHub.

Много интересного по теме NRF24L01 вы найдете на GitHub’е уже упомянутого TMRh20. Помимо документации к библиотеке RF24 и дополнительных примеров ее использования там есть, например, наработки по передаче при помощи NRF24L01 звука, создании с его помощью сетей типа ZigBee, и не только.

Так случайно совпало, что код из этой заметки работает и с Joystick Shield. Кнопкой, подключенной к D2, у него является джойстик, он кликабельный. В шилде используется точно такой же стабилизатор напряжения, что и в описанных выше адаптерах.

А какие устройства беспроводной связи в это время суток предпочитаете вы?

Материал позаимствован с сайта eax.me

Сообщение Arduino и беспроводная связь при помощи NRF24L01 появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/microcontrollers/arduino-i-besprovodnaja-svjaz-pri-pomoshhi-nrf24l01/feed/0
Гаражный контроллер на NodeMCU (ESP8266)https://it-stories.ru/blog/microcontrollers/garazhnyj-kontroller-na-nodemcu-esp8266/Sun, 21 Mar 2021 19:47:16 +0000https://it-stories.ru/?p=42Надоела мне ардуинка в шкафу, мотающаяся на проводах. Да и от работы с контакторами она уходит на перезагрузку и может зависнуть. Решено было перейти на что то более интересное и выбор пал на NodeMCU с ESP8266 на борту. вот такая

Сообщение Гаражный контроллер на NodeMCU (ESP8266) появились сначала на Заметки айтишника.

]]>
Надоела мне ардуинка в шкафу, мотающаяся на проводах. Да и от работы с контакторами она уходит на перезагрузку и может зависнуть. Решено было перейти на что то более интересное и выбор пал на NodeMCU с ESP8266 на борту.

вот такая пердунька получилась

Программку написал за вечер, благо исходники от первой версии остались. Логика плюс минус такая же, но с доработками.

Компоновка получилась примерно такая.Контроллер в боксе внизу, силовая часть сверху

Все крышки закрыты, контроллер запущен

Для серверной части решил все полностью переработать. Осталось почти такая же только структура. Решил в этот раз не халтурить, а сделать все красиво. На ООП PHP все уместилось в один класс. Ну а с веб интерфейсом решил не мудрить, сделал примитивненько, для себя ж.

такое вот чудо-юдо

Для Вас, мои малочисленные читатели, я выложил все исходники на Github. Так что изучайте:)

Сообщение Гаражный контроллер на NodeMCU (ESP8266) появились сначала на Заметки айтишника.

]]>
Прошивка flash-памяти 25xxx через программатор USBasphttps://it-stories.ru/blog/microcontrollers/proshivka-flash-pamjati-25xxx-cherez-programmato/https://it-stories.ru/blog/microcontrollers/proshivka-flash-pamjati-25xxx-cherez-programmato/#respondSun, 21 Mar 2021 19:45:52 +0000https://it-stories.ru/?p=40Микросхемы флеш-памяти eeprom серии 25xxx широко применяются в микроэлектронике. В частности, в современных телевизорах и материнских платах в 25xxx хранится прошивка биоса. Перепрошивка 25xxx осуществляется по интерфейсу SPI, в чем и заключается отличие этих микросхем от флеш-памяти семейства 24xxx, которые шьются по

Сообщение Прошивка flash-памяти 25xxx через программатор USBasp появились сначала на Заметки айтишника.

]]>
Микросхемы флеш-памяти eeprom серии 25xxx широко применяются в микроэлектронике. В частности, в современных телевизорах и материнских платах в 25xxx хранится прошивка биоса. Перепрошивка 25xxx осуществляется по интерфейсу SPI, в чем и заключается отличие этих микросхем от флеш-памяти семейства 24xxx, которые шьются по i2c(квадратная шина).

Соответственно, для чтения/стирания/записи 25xxx нужен SPI-программатор. Одним из самых дешевых вариантов программаторов для этой цели является USBasp, который стоит смешные деньги- с доставкой всего около 2$ на ебее. В свое время я купил себе такой для программирования микроконтроллеров. Теперь мне понадобилось прошить не микроконтроллер, а SPI-флеш и решено было им воспользоваться.

Оказалось, что сам по себе USBasp с оригинальной прошивкой такую память не шьет, но отечественный программист с ником Tifa (низкий поклон ему и долгих лет жизни) модернизировал прошивку USBasp специально для обеспечения возможности работы с флеш-памятью. Постоянная ветка обсуждения альтернативной прошивки USBasp от Tifa, связь с автором и ссылки на файлы тут: http://forum.easyelectronics.ru/viewtopic.php?f=17&t=10947

Забегая вперед скажу, что прошивка от Tifa работает, микросхемы 25xxx шьются. Кстати, кроме 25xxx, модифицированный программатор рассчитан на работу с 24xxx и Microwire.

1. Перепрошивка USBasp

Сначала нужно замкнуть контакты J2:

Лично я не просто замкнул, а впаял в контакты переключатель:

При замкнутых контактах J2 (это у меня переключатель в положении вправо) USBasp переходит в режим готовности к перепрошивке.

Сам себя USBap перепрошить не может, поэтому нужен еще один программатор. USBasp как бы оказывается в положении хирурга, который не может сам себе вырезать аппендикс и просит друга помочь. Для перепрошивки USBasp я использовал самодельный программатор AVR910, но для одного раза можно по-быстрому за пару минут спаять программатор «5 проводков», который состоит всего-лишь  из одного разъема LPT и 5 резисторов.

Подключаем программатор к USBasp:



Теперь идем на форум альтернативной прошивки от Tifa, в самом верхнем посте находим и качаем архив с последней прошивкой  и ПО.

Находим там файл mega8.hex, это и есть альтернативная прошивка для USBasp.

Запускаем CodeVisionAvr (я использую версию 2.0.5), выставляем настройки программатора: Settings-> Programmer.

Устанавливаем настройки записи: Tools->Chip programmer. Выбираем чип Atmega8L, именно такой стоит на USBasp. Фьюзы не выставляем- те, что надо, уже прошиты в чипе. Остальные настройки оставляем по умолчанию.

Стираем старую программу USBasp: Program-> Erase chip.

Открываем файл прошивки mega8.hex: File-> Load flash.

Перепрошиваем USBasp: Program-> Flash.

Если прошла запись и не выдало сообщение об  ошибке, значит альтернативная прошивка благополучно прошита в USBasp. Теперь USBasp может не только шить AVR-микроконтроллеры, как раньше, но еще и работать с флеш-памятью. Размыкаем контакты J2, что бы USBasp снова перешел в режим программатора.

Теперь проверим, видит ли Windows 7 x86 этот программатор. Вставляем USBasp в USB и… система пишет «USBasp не удалось найти драйвер». Понятно, нужно установить драйвер. Но драйверов в скачанном на форуме архиве нет, их нужно скачать на родном сайте USBasp тут, оригинальные драйвера подходят и для модифицированного программатора. Скачали, установили, Win7 увидела программатор, все ок. Впрочем, я программирую микроэлектронику на ноутбуке с WinXP, она тоже после установки драйверов видит программатор.

 2. Площадка для подключения USBasp к микросхеме 25xxx DIP

Теперь нужно подготовить площадку для программирования 25xxx. Я это сделал на макетной плате по такой схеме:

3. Прошивка микросхем 25xxx через USBasp

Для прошивки 25xxx через модифицированный USBasp используется программа AsProgrammer, которая тоже есть в архиве.

Для примера, поработаем с микросхемой Winbond 25×40.  Запускаем AsProgrammer, ставим режим работы SPI и выбираем тип микросхемы: Микросхема-> SPI-> Winbond->…

… и видим, что W25X40 в списке нет. Что же, тогда заполним параметры микросхемы вручную. Находим мануал на Winbond 25X40 и там на странице 4 видим такие параметры:

Эти параметры вносим сюда:

Подключаем USBasp к компьютеру и микросхеме Winbond 25×40:

С помощью кнопок «прочитать», «записать», «стереть», проверяем работу программатора:

Все ок.

Только нужно учесть, что перед тем, как что-то записать в микросхему, сначала нужно выставить: Настройки-> Проверка записи, что бы после записи прошивки в микросхему была выполнена проверка на соответствие того, что писали тому, что в итоге записали. Это немаловажная вещь, потому что если прошивку делать не на очищенный чип, в него запишется чёрт-те что. Поэтому сначала нужно стереть микросхему, а затем только проводить ее запись.

Благодаря прошивке от Tifa дешевый китайский программатор USBasp теперь умеет работать с микросхемами flash-памяти eeprom 25xxx. Теоретически еще может работать c 24xxx и Microwire, но я проверил только работу с 25xxx.

UPD1:
Оказывается, такую же прошивку можно записать и в программатор AVR910. Тогда он тоже будет работать с flash-памятью 25xxx: Программатор ISP памяти из AVR910.

Материал взят с сайта http://plc-blog.com.ua/usbasp-flash-25xxx

Сообщение Прошивка flash-памяти 25xxx через программатор USBasp появились сначала на Заметки айтишника.

]]>
https://it-stories.ru/blog/microcontrollers/proshivka-flash-pamjati-25xxx-cherez-programmato/feed/0