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)
- Host: GitHub
- URL: https://github.com/andrejchoo/usb-pic-programmer-on-arduino
- Owner: AndrejChoo
- License: other
- Created: 2023-02-06T06:04:00.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-28T10:30:55.000Z (about 1 year ago)
- Last Synced: 2025-03-28T02:05:23.435Z (9 months ago)
- Topics: arduino, linux, pic, programmer, qt, usb
- Language: C
- Homepage:
- Size: 40.3 MB
- Stars: 11
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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) с минимальной внешней обвязкой.

Есть возможность добавления новых моделей самостоятельно, для этого необходимо редактировать файл "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. Внешний вид программы и функционал остались прежними.

Список поддерживаемых моделей расположен всё в том же файле "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.