Помогите написать программу на МК PIC16F1824. Схема передающего контура для беспроводой зарядки. МК должен подовать на 6 и 5 выходы сигналы поочереди.Он будет задавать частоту колебания тока в цепи. Так же имеются две кнопки подключённые к входам 13 и 12, они будут менять частоту.
Та тут прога изи вообще. Мне хотя бы кусочек проги, чтоб было от чего оттолкнуться.
Вот тебе "...кусочек проги, чтоб было от чего оттолкнуться..." :
Код:
#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); }
Ну а остальное сам допишешь, там - же "...изи вообще...", сам говоришь.
Вот тебе "...кусочек проги, чтоб было от чего оттолкнуться..." :
Код:
#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 раз.
Так там совсем уже изи осталось. Почитать прочитать раздел 24 CAPTURE/COMPARE/PWM MODULES в целом и раздел 24.4.1 HALF-BRIDGE MODE в частности, рассчитать подходящую частоту, намотать в зависимости от частоты катушки индуктивности и всё попрёт.
Так там совсем уже изи осталось. Почитать прочитать раздел 24 CAPTURE/COMPARE/PWM MODULES в целом и раздел 24.4.1 HALF-BRIDGE MODE в частности, рассчитать подходящую частоту, намотать в зависимости от частоты катушки индуктивности и всё попрёт.
Та тут прога изи вообще. Мне хотя бы кусочек проги, чтоб было от чего оттолкнуться.
Вот тебе "...кусочек проги, чтоб было от чего оттолкнуться..." :
Код:
#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 уже переустанавливал.
Ох, ёёё... Ногодрыг - на С++? От це хлопец приколистъ А полиморфизьмъ в полной мере изпользьвать, али какъ? Кой-кто с STM32 уже слезает и пробуется на PIC16. Но эти ПИКи, особенно старых серий, это такая тягомотная тряхомудия, которую впору на асме прогать, как мы раньше и делали. Менее 400 байт ОЗУ, разделенные на банки - это такая лажа. Не, ну конечно ногодрыг для зарядки сделать - в самый раз, даже на дисплей 1602 хватит.
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%)
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%)
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 раз(а).
Но эти ПИКи, особенно старых серий, это такая тягомотная тряхомудия, которую впору на асме прогать, как мы раньше и делали. Менее 400 байт ОЗУ, разделенные на банки - это такая лажа. Не, ну конечно ногодрыг для зарядки сделать - в самый раз, даже на дисплей 1602 хватит.
Ну почему же. Давеча склепал кухонный таймер на PIC16F877 и LCD от тестера. Дабы чайники не горели.) С часами, температурами, днями недели, будильниками... И ничё. Потребление мизер, а места ещё куча осталось.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения