An open API service indexing awesome lists of open source software.

https://github.com/andrejchoo/usb-pic-programmer-on-arduino

Open USB Programmer project for PIC MCU based on Arduino (ATMEGA328)
https://github.com/andrejchoo/usb-pic-programmer-on-arduino

arduino linux pic programmer qt usb

Last synced: 8 months ago
JSON representation

Open USB Programmer project for PIC MCU based on Arduino (ATMEGA328)

Awesome Lists containing this project

README

          

# USB_PIC_Programmer_on_Arduino
Open USB Programmer project for PIC MCU based on Arduino (ATMEGA328)

Программатор для микроконтроллеров PIC, основанный на atmega328 (arduino nano/uno) с минимальной внешней обвязкой.

![screenshot](https://github.com/AndrejChoo/USB-PIC-Programmer-on-Arduino/blob/main/software/soft.png)

Есть возможность добавления новых моделей самостоятельно, для этого необходимо редактировать файл "pic.xml". Он состоит из однотипных структур типа:

```

0x23A0
7
32768
1
256
0
00F000
2
008007
008008
none
none
none
none
none
008009
00800A
none
3
3FFF

```
Для добавления нового чипа - копируем одну структуру от "name" до "/name" и исправляем значения тегов. Где:

>id - devid + revid
>
>type - семейство однотипно программируемых моделей pic, номера взяты абсолютно произвольно, просто находим по даташиту похожую по алгоритму программирования модель из уже поддерживаемых
>
>f_size - размер code сегмента в байтах!
>
>f_psize - размер страницы флеша
>
>ee_size - размер eeprom в байтах
>
>f_start - адрес начала code сегмента (обычно всегда равно нулю)
>
>ee_start - адрес начала data (eeprom) сегмента памяти
>
>ee_type - тип расположения данных eeprom в hex файле (1 - подряд, 2 - через пустой байт)
>
>conf1-conf7 - адреса смещения данных conf битов в hex файле (несуществующие conf должны иметь значение "none")
>
>oscal1-oscal3 - адреса смещения байтов калибровки генератора, аналогично conf
>
>delay - задержка программирования слова/страницы
>
>word - маска слова флеш памяти: 16 бит - FFFF, 14 бит - 3FFF и так далее.

Обратная связь приветствуется. Если у Вас есть модели pic, не поддерживаемые на данный момент, пишите мне: andrejchukov@yandex.ru. Буду пробовать добавлять, а Вы - тестировать.

# 06.02.2023
На данный момент поддерживаются следующие модели PIC:

-PIC12: PIC12F1840,PIC12F629/675,PIC12F635,PIC12F683

-PIC16: PIC16F1512,PIC16F1513,PIC16F1516,PIC16F1517,PIC16F1518,PIC16F1519,PIC16F1526,
PIC16F1527,PIC16F1847,PIC16F1933,PIC16F1934,PIC16F1936,PIC16F1937,PIC16F1938,PIC16F1939,
PIC16F1946,PIC16F1947,PIC16F627A,PIC16F628A,PIC16F648A,PIC16F676/630,PIC16F631,
PIC16F636,PIC16F639,PIC16F677,PIC16F684,PIC16F685,PIC16F687,PIC16F688,PIC16F689,
PIC16F690,PIC16F73,PIC16F74,PIC16F76,PIC16F77,PIC16F84A

-PIC18: PIC18F2510,PIC18F2525,PIC18F2550,PIC18F2585,PIC18F25K80,PIC18F2610,PIC18F2620,
PIC18F2680,PIC18F26K80,PIC18F4515,PIC18F4525,PIC18F4550,PIC18F45K80,PIC18F4585,PIC18F4610,
PIC18F4620,PIC18F4680,PIC18F46K80

Тестирую обычно 1-2 модели PIC из линейки однотипно программируемых, остальные просто
добавляю. Так что могут быть ошибки непротестированных моделей. Надо пробовать.

# 10.02.2023
Изменён алгоритм записи со стороны хоста, теперь не нужно предварительно стирать чип перед записью. Добавлены некоторые оптимизации.
Добавлена новые модели PIC:
PIC10: PIC10F200, PIC10F202, PIC10F204, PIC10F206
PIC12: PIC12F510
PIC16F: PIC16F505, PIC16F506, PIC16F54, PIC16F57, PIC16F59

# 17.02.2023
Исправлен крупный баг софта при чтении микроконтроллеров с объёмом FLASH 16KW и более.
Добавлена и протестирована поддержка новых линеек PIC:
PIC16F183xx
Добавлены новые модели без тестирования:
PIC10F32x, PIC16F150x, PIC16F88x

# 29.03.2023
На этот раз были добавлены семейства:
PIC16F170X, PIC16F18XX, PIC16F183XX, PIC16F184XX, PIC18FXXK22, PIC18FXXQ10 (у последней серии некоррекно читается или записывается EEPROM, проверить мне не чем).

# 23.02.2024
Переписал софт на Qt. Теперь программа стала кроссплатформенной. Работа проверена на Windows x64, Linux Fedora 39 x64, Ubuntu 22.04 aarch64, FreeBSD 14.1 x64. Внешний вид программы и функционал остались прежними.

![screenshot1](https://github.com/AndrejChoo/USB-PIC-Programmer-on-Arduino/blob/main/software/soft_Qt.png)

Список поддерживаемых моделей расположен всё в том же файле "pic.xml". Для обеих версий программы файлы идентичны.
Для работы на Linux потребуется установить QSetialPort (libqt6-serialport-dev) и qt6-base-dev, возможно ещё какие-либо пакеты. Проверить можно при запуске из терминала.
Если не появится или не будет доступа к /dev/ttyUSB0, то необходимо его предоставить: "sudo chmod a+rw /dev/ttyUSB0". На Ubuntu могут конфликтовать драйверы ch340 и brltty, поэтому последний можно удалить "sudo apt autoremove brltty".
Qt версия для Windows скомпилирована со статическими библиотеками, должна работать "из коробки".

# 7.03.2024

В С# и Qt версии программы добавлена функция сохранения ранее выбранной модели PIC. Теперь после закрытия или аварийной остановки программы нет необходимости выбирать модель снова из длинного списка.

# 12.03.2024

Добавил поддержку PIC16F871/872/873/874/876/877 без проверки работоспособности. Тестируйте.

# 14.03.2024

Добавил поддержку PIC16F873A/874A/876A/877A без проверки работоспособности.
Теперь, чтобы не обновлять архивы с разными версиями программ, свежие файлы "pic.xml" буду выкладывать в папку software/new_devices. Достаточно просто скопировать этот файл в папку с программой (саму программу в ближайшее врямя менять не планирую).

# 15.03.2024

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

# 19.03.2024

Добавил поддержку PIC16F627/628(без А). Протестировано пользователем под ником sollaris. Ему отдельное спасибо.

# 25.03.2024

Внёс небольшие доработки в схему, изменения в прошивку. Добавил диод от вывода A4 (PC4) arduino к сигналу VPP (см. схему в папке hardware, диод любой, например 4148, но лучше шоттки). Теперь после программирования на выводе VPP программатора появляется логическая единица, а на вывод VDD программатора подаётся питание. Таким образом сигналы программатора не мешают запуску прошиваемого микроконтроллера.
Платы без доработки также будут работать с новой прошивкой. Рисунок печатной платы обновлён.

# 4.04.2024

Ради интереса переписал проект для STM32F030 (см. папку "firmware"). Подключение сигналов смотрите в файле "gpio.h". Для проверки использовал свою платку формата arduino nano с stm32f030k6t6 на борту (см. фото в папке "hardware"). Работает также как и с атмегой. Правда, места прошивка в STM-ке занимает намного больше (чуть болше 25 Кб), возможно, потому что проект написан с использованием SPL.