vak: (Default)
[personal profile] vak
Первым микроконтроллером, с которым мне довелось иметь дело, был PIC17C43. На нём мы в Крониксе сделали одну из ранних разработок, а именно конвертер E1-L/B. Позже его переделали на процессор ATmega, но в середине 90-х альтернатив Микрочипу не было. Фирменный компилятор Си тогда у Микрочипа был ужасный: генерил такой код, что смотреть было противно. Мне пришлось соорудить свой собственный компилятор, ассемблер и симулятор. Но сам процессор оказался крайне удачным, и конвертер имел успех (руководство пользователя, PDF).

С тех пор многое изменилось в мире микроконтроллеров: пришёл Atmel AVR, TI MSP430, потом ARM7 и Cortex-M, MIPS PIC32 и другие. Однако понадобилось мне подобрать для транзисторного измерителя простой DAC/ADC, и оказалось, что кроме PIC16 выбора нету. В результате остановился на PIC16F1705: восьмибитный DAC, восемь каналов 10-битного ADC и впридачу пара встроенных операционных усилителей. Остальная периферия типа UART, SPI и I2C тоже при нём. Внешний кварц не нужен. Всё добро в 14-ногом корпусе за цену меньше доллара.

Свой компилятор Микрочип с тех пор выкинул на свалку и купил фирму Hi-tech Software с их замечательным компилятором для микроконтроллеров. Позже это превратилось в компилятор Microchip XC8, бесплатный в базовой версии.

Прошивается процессор посредством фирменого софта Microchip MDB, который входит в состав бесплатного MPLAB X IDE. Нужен USB-адаптер PICkit3, клон которого можно недорого купить на Aliexpress. Втыкаем чип в макетную плату, добавляем один резистор на сигнал Reset, подсоединяем PICkit3 и UART-USB адаптер:



Сооружаем простой пример, который принимает символы от UART и отсылает обратно: uart.c. Компилируем, получаем uart.hex. Чтобы прошить чип, нужно составить скрипт pickit3.cfg для утилиты MDB, типа такого:
device pic16f1705
set system.disableerrormsg true
hwtool pickit3 -p
program "./uart.hex"
reset mclr
quit
Прошиваем:
$ /opt/microchip/mplabx/v4.15/mplab_ide/bin/mdb.sh pickit3.cfg

device pic16f1705

set system.disableerrormsg true

hwtool pickit3 -p
Mar 09, 2018 2:33:16 PM com.microchip.mplab.mdbcore.RealICETool.RIMessages OutputMessage
INFO: 

*****************************************************

Connecting to MPLAB PICkit 3...

Currently loaded firmware on PICkit 3
Firmware Suite Version.....01.51.08
Firmware type..............Enhanced Midrange

Target voltage detected
Target device PIC16F1705 found.
Device ID Revision = 2002

program "./uart.hex"
Programming target...

Device Erased...

Programming...

The following memory area(s) will be programmed:
program memory: start address = 0x0, end address = 0x81f
configuration memory
Programming/Verify complete
Program succeeded.

reset mclr

Resetting...
Target reset

quit
Готово. Процесс выглядит заметно проще, чем 20 лет назад, когда приходилось стирать чип ультрафиолетом и прошивать специальным дорогим программатором.

Date: 2019-09-14 18:55 (UTC)
From: [personal profile] mcler
Простой ADC- DAC есть еще в XMEGA A серии и E5. Правда подороже и корпус не DIP. Зато памяти побольше, есть DMA и, не побоюсь этого слова, EBI.

Date: 2019-09-16 18:42 (UTC)
From: [personal profile] mcler
А, например, ATtiny1614/1616/1617 подошла бы?