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

Поклонники продукции Microchip Technology Inc тусуются тут.
Andrik))
Родился
Сообщения: 15
Зарегистрирован: Пн янв 11, 2016 17:48:48

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

Сообщение Andrik)) »

Помогите написать программу на МК PIC16F1824. Схема передающего контура для беспроводой зарядки.
МК должен подовать на 6 и 5 выходы сигналы поочереди.Он будет задавать частоту колебания тока в цепи. Так же имеются две кнопки подключённые к входам 13 и 12, они будут менять частоту.
Изображение
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

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

Сообщение otest »

Здесь viewforum.php?f=53 точно помогут.
Andrik))
Родился
Сообщения: 15
Зарегистрирован: Пн янв 11, 2016 17:48:48

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

Сообщение Andrik)) »

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

Та тут прога изи вообще. Мне хотя бы кусочек проги, чтоб было от чего оттолкнуться.
Аватара пользователя
shindax
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Сб сен 19, 2009 07:02:19

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

Сообщение shindax »

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);
}

Ну а остальное сам допишешь, там - же "...изи вообще...", сам говоришь.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Немного дополню :

Код: Выделить всё

while(1){

}
А то вдруг человек растеряется и не разберётся куда вставлять "команды" :)))
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

И не забыть воткнуть в тело цикла - //To Do ... :))) :))) :)))
Andrik))
Родился
Сообщения: 15
Зарегистрирован: Пн янв 11, 2016 17:48:48

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

Сообщение Andrik)) »

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 раз.
Andrik))
Родился
Сообщения: 15
Зарегистрирован: Пн янв 11, 2016 17:48:48

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

Сообщение Andrik)) »

а что это за библиотека <xc.h>?
Аватара пользователя
anatol378
Мудрый кот
Сообщения: 1833
Зарегистрирован: Вс окт 04, 2009 13:23:12
Откуда: н. новгород

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

Сообщение anatol378 »

Паразиты! :))) И не лень издеваться над котенком? :cry:
Andrik)) писал(а):а что это за библиотека <xc.h>?
Когда найдешь её - ребята помогут.
Лучше умному тупить, чем тупому умничать
Andrik))
Родился
Сообщения: 15
Зарегистрирован: Пн янв 11, 2016 17:48:48

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

Сообщение Andrik)) »

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

Это для настройки под выбранный контроллер :)
Аватара пользователя
shindax
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Сб сен 19, 2009 07:02:19

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

Сообщение shindax »

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

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

Сообщение Andrik)) »

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

Ну это уже не изи :shock:
А какую частоту выбрать?
L.O.D
Встал на лапы
Сообщения: 139
Зарегистрирован: Чт фев 11, 2016 18:35:37

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

Сообщение L.O.D »

Andrik)) писал(а):А какую частоту выбрать?
Ту, на которой потери от перезаряда затворов Q1 и Q2 еще будут приемлемыми.
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
Аватара пользователя
Rediska
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Сб окт 30, 2010 09:31:51

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

Сообщение Rediska »

[uquote="shindax",url="/forum/viewtopic.php?p=2658914#p2658914"]
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);
}
Ну а остальное сам допишешь, там - же "...изи вообще...", сам говоришь.[/uquote]

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

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

Сообщение phalanx »

1. Сообщения об ошибках приведите.
2. PicKit3 в MPLABX-режим переводили?
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

Прям таки С++ да ещё и для PIC16!))
Даже не знаю кто такое умеет... IAR?
Видно что ТС не просто изи, а изи-изи-изи.))
Аватара пользователя
НовыйДень
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс апр 03, 2022 07:01:29

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

Сообщение НовыйДень »

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

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

Сообщение Rediska »

[uquote="phalanx",url="/forum/viewtopic.php?p=4214480#p4214480"]1. Сообщения об ошибках приведите.
2. PicKit3 в MPLABX-режим переводили?[/uquote]

А нет никаких ошибок, откуда им взяться, кода-то практически нет. Однако компиляется без малого 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:
phalanx
Нашел транзистор. Понюхал.
Сообщения: 158
Зарегистрирован: Сб апр 24, 2021 18:42:11

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

Сообщение phalanx »

Код для 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 раз.
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

[uquote="НовыйДень",url="/forum/viewtopic.php?p=4214664#p4214664"]Но эти ПИКи, особенно старых серий, это такая тягомотная тряхомудия, которую впору на асме прогать, как мы раньше и делали. Менее 400 байт ОЗУ, разделенные на банки - это такая лажа. Не, ну конечно ногодрыг для зарядки сделать - в самый раз, даже на дисплей 1602 хватит.[/uquote]
Ну почему же. Давеча склепал кухонный таймер на PIC16F877 и LCD от тестера. Дабы чайники не горели.) С часами, температурами, днями недели, будильниками... И ничё. Потребление мизер, а места ещё куча осталось.
Ответить

Вернуться в «PIC»