Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Программа на C++ для МК PIC16F1824

Пн фев 15, 2016 16:06:13

Помогите написать программу на МК PIC16F1824. Схема передающего контура для беспроводой зарядки.
МК должен подовать на 6 и 5 выходы сигналы поочереди.Он будет задавать частоту колебания тока в цепи. Так же имеются две кнопки подключённые к входам 13 и 12, они будут менять частоту.
Изображение

Re: Программа на C++ для МК PIC16F1824

Пн фев 15, 2016 18:04:11

Здесь viewforum.php?f=53 точно помогут.

Re: Программа на C++ для МК PIC16F1824

Ср фев 17, 2016 21:39:27

otest писал(а):Здесь viewforum.php?f=53 точно помогут.

Та тут прога изи вообще. Мне хотя бы кусочек проги, чтоб было от чего оттолкнуться.

Re: Программа на C++ для МК PIC16F1824

Чт фев 18, 2016 09:47:41

Andrik)) писал(а):
otest писал(а):Здесь viewforum.php?f=53 точно помогут.

Та тут прога изи вообще. Мне хотя бы кусочек проги, чтоб было от чего оттолкнуться.


Вот тебе "...кусочек проги, чтоб было от чего оттолкнуться..." :

Код:
#include <xc.h>

#pragma config FOSC = INTOSC        // INTOSC oscillator: I/O function on CLKIN pin
#pragma config WDTE = ON      // WDT disabled
#pragma config PWRTE = ON      // Таймер задержки включения питания/Power-up Timer Enable
#pragma config MCLRE = ON      // MCLR/VPP pin function is digital input
#pragma config CP = OFF         // Program memory code protection is disabled
#pragma config CPD = OFF         // Data memory code protection is disabled
#pragma config BOREN = ON      // Brown-out Reset enabled/сброс по понижению питания включен
#pragma config CLKOUTEN = OFF      // CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin
#pragma config IESO = OFF      // Internal/External Switchover mode is disabled
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor is disabled

#pragma config WRT = ALL       // 000h to 7FFh write protected, no addresses may be modified by EECON control
#pragma config PLLEN = OFF       // 4x PLL enabled
#pragma config STVREN = OFF        // Stack Overflow or Underflow will not cause a Reset
#pragma config BORV = HI       // Brown-out Reset Voltage (VBOR) set to 2.7V
#pragma config LVP = OFF      // High-voltage on MCLR/VPP must be used for programming


void main( void )
{
while(1);
}

Ну а остальное сам допишешь, там - же "...изи вообще...", сам говоришь.

Re: Программа на C++ для МК PIC16F1824

Чт фев 18, 2016 12:27:50

Немного дополню :
Код:
while(1){

}
А то вдруг человек растеряется и не разберётся куда вставлять "команды" :)))

Re: Программа на C++ для МК PIC16F1824

Чт фев 18, 2016 15:38:06

И не забыть воткнуть в тело цикла - //To Do ... :))) :))) :)))

Re: Программа на C++ для МК PIC16F1824

Чт фев 18, 2016 20:08:30

shindax писал(а):Вот тебе "...кусочек проги, чтоб было от чего оттолкнуться..." :

Код:
#include <xc.h>

#pragma config FOSC = INTOSC        // INTOSC oscillator: I/O function on CLKIN pin
#pragma config WDTE = ON      // WDT disabled
#pragma config PWRTE = ON      // Таймер задержки включения питания/Power-up Timer Enable
#pragma config MCLRE = ON      // MCLR/VPP pin function is digital input
#pragma config CP = OFF         // Program memory code protection is disabled
#pragma config CPD = OFF         // Data memory code protection is disabled
#pragma config BOREN = ON      // Brown-out Reset enabled/сброс по понижению питания включен
#pragma config CLKOUTEN = OFF      // CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin
#pragma config IESO = OFF      // Internal/External Switchover mode is disabled
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor is disabled

#pragma config WRT = ALL       // 000h to 7FFh write protected, no addresses may be modified by EECON control
#pragma config PLLEN = OFF       // 4x PLL enabled
#pragma config STVREN = OFF        // Stack Overflow or Underflow will not cause a Reset
#pragma config BORV = HI       // Brown-out Reset Voltage (VBOR) set to 2.7V
#pragma config LVP = OFF      // High-voltage on MCLR/VPP must be used for programming


void main( void )
{
while(1);
}


Спасибо! Кокраз то что мне надо! Тело проги я думаю сам напишу. Просто фиг его знает откуда брать все эти параметры.
Последний раз редактировалось Andrik)) Чт фев 18, 2016 20:10:38, всего редактировалось 1 раз.

Re: Программа на C++ для МК PIC16F1824

Чт фев 18, 2016 20:09:32

а что это за библиотека <xc.h>?

Re: Программа на C++ для МК PIC16F1824

Пт фев 19, 2016 08:23:21

Паразиты! :))) И не лень издеваться над котенком? :cry:
Andrik)) писал(а):а что это за библиотека <xc.h>?
Когда найдешь её - ребята помогут.

Re: Программа на C++ для МК PIC16F1824

Пт фев 19, 2016 17:15:39

anatol378 писал(а):Паразиты! :))) И не лень издеваться над котенком? :cry:
Andrik)) писал(а):а что это за библиотека <xc.h>?
Когда найдешь её - ребята помогут.

Это для настройки под выбранный контроллер :)

Re: Программа на C++ для МК PIC16F1824

Сб фев 20, 2016 04:58:04

Так там совсем уже изи осталось. Почитать прочитать раздел 24 CAPTURE/COMPARE/PWM MODULES в целом и раздел 24.4.1 HALF-BRIDGE MODE в частности, рассчитать подходящую частоту, намотать в зависимости от частоты катушки индуктивности и всё попрёт. :)

Re: Программа на C++ для МК PIC16F1824

Пн фев 22, 2016 08:46:50

shindax писал(а):Так там совсем уже изи осталось. Почитать прочитать раздел 24 CAPTURE/COMPARE/PWM MODULES в целом и раздел 24.4.1 HALF-BRIDGE MODE в частности, рассчитать подходящую частоту, намотать в зависимости от частоты катушки индуктивности и всё попрёт. :)

Ну это уже не изи :shock:
А какую частоту выбрать?

Re: Программа на C++ для МК PIC16F1824

Пн фев 22, 2016 14:13:59

Andrik)) писал(а):А какую частоту выбрать?
Ту, на которой потери от перезаряда затворов Q1 и Q2 еще будут приемлемыми.

Re: Программа на C++ для МК PIC16F1824

Ср апр 13, 2022 16:27:57

Andrik)) писал(а):
otest писал(а):Здесь http://radiokot.ru/forum/viewforum.php?f=53 точно помогут.

Та тут прога изи вообще. Мне хотя бы кусочек проги, чтоб было от чего оттолкнуться.


Вот тебе "...кусочек проги, чтоб было от чего оттолкнуться..." :

Код:
#include <xc.h>

#pragma config FOSC = INTOSC        // INTOSC oscillator: I/O function on CLKIN pin
#pragma config WDTE = ON      // WDT disabled
#pragma config PWRTE = ON      // Таймер задержки включения питания/Power-up Timer Enable
#pragma config MCLRE = ON      // MCLR/VPP pin function is digital input
#pragma config CP = OFF         // Program memory code protection is disabled
#pragma config CPD = OFF         // Data memory code protection is disabled
#pragma config BOREN = ON      // Brown-out Reset enabled/сброс по понижению питания включен
#pragma config CLKOUTEN = OFF      // CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin
#pragma config IESO = OFF      // Internal/External Switchover mode is disabled
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor is disabled

#pragma config WRT = ALL       // 000h to 7FFh write protected, no addresses may be modified by EECON control
#pragma config PLLEN = OFF       // 4x PLL enabled
#pragma config STVREN = OFF        // Stack Overflow or Underflow will not cause a Reset
#pragma config BORV = HI       // Brown-out Reset Voltage (VBOR) set to 2.7V
#pragma config LVP = OFF      // High-voltage on MCLR/VPP must be used for programming


void main( void )
{
while(1);
}

Ну а остальное сам допишешь, там - же "...изи вообще...", сам говоришь.


А что делать, если все эти определения не работают, не находит среда их описания? Поставил MPLab X v6, ось Вин7, пустой проект компиляет 1,5 минуты, где всего один while(1) и больше нет ничего. Если вставляю этот кусок кода, то компиляция не проходит из-за отсутствия библиотеки с определениями этих битов. Работал до этого и с AVR, и с STM, не профи далеко, но блинк-то везде написать могу. А тут что-то затыка конская.
PIC16F886 юзаю, блинк написал, но биты конфигурации расставляю в ручную при программровании через тулзу пиккитовскую. Сам пиккит3 в среде не работает, хотя определяется. MPLab уже переустанавливал.

Re: Программа на C++ для МК PIC16F1824

Чт апр 14, 2022 07:07:58

1. Сообщения об ошибках приведите.
2. PicKit3 в MPLABX-режим переводили?

Re: Программа на C++ для МК PIC16F1824

Чт апр 14, 2022 09:05:39

Прям таки С++ да ещё и для PIC16!))
Даже не знаю кто такое умеет... IAR?
Видно что ТС не просто изи, а изи-изи-изи.))

Re: Программа на C++ для МК PIC16F1824

Чт апр 14, 2022 15:00:38

Ох, ёёё... Ногодрыг - на С++? От це хлопец приколистъ :))) А полиморфизьмъ в полной мере изпользьвать, али какъ? :)
Кой-кто с STM32 уже слезает и пробуется на PIC16. Но эти ПИКи, особенно старых серий, это такая тягомотная тряхомудия, которую впору на асме прогать, как мы раньше и делали. Менее 400 байт ОЗУ, разделенные на банки - это такая лажа. Не, ну конечно ногодрыг для зарядки сделать - в самый раз, даже на дисплей 1602 хватит.

Re: Программа на C++ для МК PIC16F1824

Чт апр 14, 2022 18:45:36

1. Сообщения об ошибках приведите.
2. PicKit3 в MPLABX-режим переводили?


А нет никаких ошибок, откуда им взяться, кода-то практически нет. Однако компиляется без малого 2 минуты. Малейшую правку вносишь-2 минуты компиляешь. Жесть.

Код:
#include <xc.h>

void main( void )
{
while(1);
}


Код:
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Mplab/Project/886_2.X'
make  -f nbproject/Makefile-default.mk dist/default/production/886_2.X.production.hex
make[2]: Entering directory 'C:/Mplab/Project/886_2.X'
"C:\Program Files\Microchip\xc8\v2.36\bin\xc8-cc.exe"  -mcpu=16F886 -c   -mdfp="C:/Program Files/Microchip/MPLABX/v6.00/packs/Microchip/PIC16Fxxx_DFP/1.3.42/xc8"  -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=default  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mdefault-config-bits   -std=c99 -gdwarf-3 -mstack=compiled:auto:auto     -o build/default/production/main.p1 main.c
::: advisory: (2049) C99 compliant libraries are currently not available for baseline or mid-range devices, or for enhanced mid-range devices using a reentrant stack; using C90 libraries
"C:\Program Files\Microchip\xc8\v2.36\bin\xc8-cc.exe"  -mcpu=16F886 -Wl,-Map=dist/default/production/886_2.X.production.map  -DXPRJ_default=default  -Wl,--defsym=__MPLAB_BUILD=1   -mdfp="C:/Program Files/Microchip/MPLABX/v6.00/packs/Microchip/PIC16Fxxx_DFP/1.3.42/xc8"  -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mdefault-config-bits -std=c99 -gdwarf-3 -mstack=compiled:auto:auto      -Wl,--memorysummary,dist/default/production/memoryfile.xml -o dist/default/production/886_2.X.production.elf  build/default/production/main.p1     
::: advisory: (2049) C99 compliant libraries are currently not available for baseline or mid-range devices, or for enhanced mid-range devices using a reentrant stack; using C90 libraries
:3558:: warning: (1311) missing configuration setting for config word 0x2007; using default
:3558:: warning: (1311) missing configuration setting for config word 0x2008; using default

Memory Summary:
    Program space        used     Bh (    11) of  2000h words   (  0.1%)
    Data space           used     2h (     2) of   170h bytes   (  0.5%)
    EEPROM space         used     0h (     0) of   100h bytes   (  0.0%)
    Configuration bits   used     2h (     2) of     2h words   (100.0%)
    ID Location space    used     4h (     4) of     4h bytes   (100.0%)

make[2]: Leaving directory 'C:/Mplab/Project/886_2.X'
make[1]: Leaving directory 'C:/Mplab/Project/886_2.X'

BUILD SUCCESSFUL (total time: 1m 48s)
Loading code from C:/Mplab/Project/886_2.X/dist/default/production/886_2.X.production.hex...
Program loaded with pack,PIC16Fxxx_DFP,1.3.42,Microchip
Loading completed


PS. Убрал вообще всё, оставил только цикл
Код:
void main( void )
{
while(1);
}


Время компиляции 2 минуты 43 секунды. :shock:

Re: Программа на C++ для МК PIC16F1824

Пт апр 15, 2022 09:23:51

Код для PIC16F886 + XC8 2.32
Код:
#include <xc.h>
#pragma config FOSC = INTRC_CLKOUT
#pragma config WDTE = OFF
#pragma config PWRTE = ON
#pragma config MCLRE = OFF
#pragma config CP = OFF
#pragma config CPD = OFF
#pragma config BOREN = OFF
#pragma config IESO = OFF
#pragma config LVP = OFF
#pragma config BOR4V = BOR21V
#pragma config WRT = OFF

void main( void )
{
    while(1);
}

В настройках проекта: XC8 Global Options :
C standard -> выбрать C 90
XC8 Linker -> Link C Library -> выбрать C90

Я обычно этого не делаю, MPLABX сам подставляет, что нужно, это просто чтобы не выводились предупреждения

Вывод компилятора:
Код:

CLEAN SUCCESSFUL (total time: 81ms)
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'D:/YandexDisk/Electronics/Projects/886/Test.X'
make  -f nbproject/Makefile-default.mk dist/default/production/Test.X.production.hex
make[2]: Entering directory 'D:/YandexDisk/Electronics/Projects/886/Test.X'
"C:\Program Files\Microchip\xc8\v2.32\bin\xc8-cc.exe"  -mcpu=16F886 -c   -mdfp="C:/Program Files/Microchip/MPLABX/v5.50/packs/Microchip/PIC16Fxxx_DFP/1.2.33/xc8"  -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=default  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall   -std=c90 -gdwarf-3 -mstack=compiled:auto:auto     -o build/default/production/main.p1 main.c
"C:\Program Files\Microchip\xc8\v2.32\bin\xc8-cc.exe"  -mcpu=16F886 -Wl,-Map=dist/default/production/Test.X.production.map  -DXPRJ_default=default  -Wl,--defsym=__MPLAB_BUILD=1   -mdfp="C:/Program Files/Microchip/MPLABX/v5.50/packs/Microchip/PIC16Fxxx_DFP/1.2.33/xc8"  -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -std=c90 -gdwarf-3 -mstack=compiled:auto:auto      -Wl,--memorysummary,dist/default/production/memoryfile.xml -o dist/default/production/Test.X.production.elf  build/default/production/main.p1     
Non line specific message::: advisory: (1492) using updated 32-bit floating-point libraries; improved accuracy might increase code size

Memory Summary:
    Program space        used     Bh (    11) of  2000h words   (  0.1%)
    Data space           used     2h (     2) of   170h bytes   (  0.5%)
    EEPROM space         used     0h (     0) of   100h bytes   (  0.0%)
    Configuration bits   used     2h (     2) of     2h words   (100.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)

make[2]: Leaving directory 'D:/YandexDisk/Electronics/Projects/886/Test.X'
make[1]: Leaving directory 'D:/YandexDisk/Electronics/Projects/886/Test.X'

BUILD SUCCESSFUL (total time: 2s)
Loading code from D:/YandexDisk/Electronics/Projects/886/Test.X/dist/default/production/Test.X.production.hex...
Program loaded with pack,PIC16Fxxx_DFP,1.2.33,Microchip
Loading completed

Откройте файл c:\Program Files\Microchip\xc8\v2.32\docs\chips\16f886.html
Там все подробно расписано. Еще по битам конфигурации здесь:
https://microchipdeveloper.com/mplabx:v ... ation-bits
и в файлах 16f886.cfgmap и 16f886.cfgdata

Время сборки видно из лога.
Последний раз редактировалось phalanx Пт апр 15, 2022 10:37:36, всего редактировалось 7 раз(а).

Re: Программа на C++ для МК PIC16F1824

Пт апр 15, 2022 09:33:56

Но эти ПИКи, особенно старых серий, это такая тягомотная тряхомудия, которую впору на асме прогать, как мы раньше и делали. Менее 400 байт ОЗУ, разделенные на банки - это такая лажа. Не, ну конечно ногодрыг для зарядки сделать - в самый раз, даже на дисплей 1602 хватит.

Ну почему же. Давеча склепал кухонный таймер на PIC16F877 и LCD от тестера. Дабы чайники не горели.) С часами, температурами, днями недели, будильниками... И ничё. Потребление мизер, а места ещё куча осталось.
Ответить