Микроконтроллер pic18f25k20 – работает от 3 В (1.8-3.6 В), поэтому на свой самодельный JDM программатор на вход питания к pic18f25k20 поставил стабилитрон на 3 В.
Прошиваем микроконтроллер pic18fx5k20 самодельным JDM программатором (“gameforstreet.ru/pic-jdm-prostejshij-programmator-dlya-pic-mk/”) и программой winpicpgm_v1570 (скачать можно здесь gameforstreet.ru/proshivaem-pic-v-linux/”) на Linux и Windows.
Программировать будем на С в MPLAB X IDE на Linux.
Схема программатора для прошивки микроконтроллеров на 3 В:
Как установить MPLAB X IDE 5.35 на Linux Rosa Fresh R12:
“rutube.ru/video/3a48602b8d5ca8e23c0bcd4c483c52ed/”
“web.archive.org/web/20200724202813/https://www.microchip.com/development-tools/pic-and-dspic-downloads-archive”
@xc8-v2.05@
“disk.yandex.ru/d/A_HAnG7ksiG80w”
@xc8-v2.10@
“disk.yandex.ru/d/Yw4YFmq-lr9XRw”
@mplab5.35@
“disk.yandex.ru/d/dI3Z36N89NjfEA”
Давайте сначала просто зажжём светодиоды на pic18f25k20 код на С будет следующий (светодиоды будут гореть на ножках RC0,RC1,RC2,RC3,RC4,RC5 – так как PORTC = 0b00111111):
#include <xc.h> /* * CONFIG1H @ 0x300001 * * Internal oscillator with I/O function on RA6 & RA7 */ #pragma config FOSC = INTIO67 /* * CONFIG2L @ 0x300002 * * Brown Out Reset disabled * Power Up Timer enabled */ #pragma config BOREN = OFF, PWRT = ON /* * CONFIG2H @ 0x300003 * * Watchdog Timer disabled */ #pragma config WDTEN = OFF /* * CONFIG4L @ 0x300006 * * Low Voltage Programming disabled * Reset on stack over/underflow disabled */ #pragma config LVP = OFF, STVREN = OFF #define _XTAL_FREQ 16000000 void main(void) { OSCCON = 0b01110000; //16MHz Fosc PORTC = 0b00111111; //PORTC RC0-RC5 led on TRISC = TRISC & 0b11000000; //RC0 output drivers enabled }
Скачать файлы hex и с – зажигаем светодиоды на ножках RC0-RC5:
– скачать в формате tar.gz
– скачать в формате zip
Теперь давайте заставим светодиод мигать.
Код для мигания светодиода на ножке RC0 на С:
#include <xc.h> /* * CONFIG1H @ 0x300001 * * Internal oscillator with I/O function on RA6 & RA7 */ #pragma config FOSC = INTIO67 /* * CONFIG2L @ 0x300002 * * Brown Out Reset disabled * Power Up Timer enabled */ #pragma config BOREN = OFF, PWRT = ON /* * CONFIG2H @ 0x300003 * * Watchdog Timer disabled */ #pragma config WDTEN = OFF /* * CONFIG4L @ 0x300006 * * Low Voltage Programming disabled * Reset on stack over/underflow disabled */ #pragma config LVP = OFF, STVREN = OFF #define _XTAL_FREQ 16000000 void main(void) { OSCCON = 0b01110000; //16MHz Fosc PORTC = 0x00; //clear PORTC latch можно записать ещё так PORTC = 0b00000000; TRISC = TRISC & 0b11111110; //RC0 output drivers enabled while(1) { PORTC = PORTC ^ 0b00000001; //toggle LED /* * 1/2 second flash rate */ for(char i = 0; i < 10; i++) { __delay_ms(49); } } }
Здесь параметр OSCCON = 0b01110000 отвечает за частоту мигания, в инструкции (даташит) к pic18f25k20 на странице 28 можно посмотреть как можно установить разную частоту работы внутреннего генератора, так:
OSCCON = 0b01110000; – 16 МГц
OSCCON = 0b01100000; – 8 МГц
OSCCON = 0b01000000; – 2 МГц
OSCCON = 0b00110000; – 1 МГц
OSCCON = 0b00100000; – 500 кГц
OSCCON = 0b00010000; – 250 кГц
OSCCON = 0b00000000; – 31 кГц (поэтому если не прописать параметр OSCCON в main, то частота микроконтроллера будет – 31 кГц)
Скачать файлы hex и с – мигаем светодиодом на ножке RC0 на pic18f25k20:
– скачать в формате tar.gz
– скачать в формате zip