Jump to content
LiSiY5

Помогите стартонуть с Pic на Си

Recommended Posts

Ребята помогите, Я начинаю изучение Pic и не могу создать первую прогу. Сам программирую на LD, FBD, ASM, но тут не могу стартонуть, с выходами все получается, а вот с входами проблемка. Есть код на Си, подскажите в чем ошибка. Буду очень благодарен любой информации.


// PIC16F18877 Configuration Bit Settings

// 'C' source line config statements

// CONFIG1
#pragma config FEXTOSC = HS     // External Oscillator mode selection bits (HS (crystal oscillator) above 4MHz; PFM set to high power)
#pragma config RSTOSC = EXT1X   // Power-up default value for COSC bits (EXTOSC operating per FEXTOSC bits)
#pragma config CLKOUTEN = OFF   // Clock Out Enable bit (CLKOUT function is disabled; i/o or oscillator function on OSC2)
#pragma config CSWEN = ON       // Clock Switch Enable bit (Writing to NOSC and NDIV is allowed)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable bit (FSCM timer enabled)

// CONFIG2
#pragma config MCLRE = ON       // Master Clear Enable bit (MCLR pin is Master Clear function)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config LPBOREN = OFF    // Low-Power BOR enable bit (ULPBOR disabled)
#pragma config BOREN = ON       // Brown-out reset enable bits (Brown-out Reset Enabled, SBOREN bit is ignored)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (VBOR) set to 1.9V on LF, and 2.45V on F Devices)
#pragma config ZCD = OFF        // Zero-cross detect disable (Zero-cross detect circuit is disabled at POR.)
#pragma config PPS1WAY = ON     // Peripheral Pin Select one-way control (The PPSLOCK bit can be cleared and set only once in software)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will cause a reset)

// CONFIG3
#pragma config WDTCPS = WDTCPS_31// WDT Period Select bits (Divider ratio 1:65536; software control of WDTPS)
#pragma config WDTE = ON        // WDT operating mode (WDT enabled regardless of sleep; SWDTEN ignored)
#pragma config WDTCWS = WDTCWS_7// WDT Window Select bits (window always open (100%); software control; keyed access not required)
#pragma config WDTCCS = SC      // WDT input clock selector (Software Control)

// CONFIG4
#pragma config WRT = OFF        // UserNVM self-write protection bits (Write protection off)
#pragma config SCANE = available// Scanner Enable bit (Scanner module is available for use)
#pragma config LVP = ON         // Low Voltage Programming Enable bit (Low Voltage programming enabled. MCLR/Vpp pin function is MCLR.)

// CONFIG5
#pragma config CP = OFF         // UserNVM Program memory code protection bit (Program Memory code protection disabled)
#pragma config CPD = OFF        // DataNVM code protection bit (Data EEPROM code protection disabled)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>
#define _XTAL_FREQ 20000000


void main(void) {
    TRISB=0;
    PORTB=0;
    TRISA=11111111;
    PORTA=11111111;
    TRISA=11111111;
    if(PORTAbits.RA0 == 1) { RB0 = 1;}

    return;
}
 

Share this post


Link to post
Share on other sites

я дико извиняюсь , а вы вкуда по return выйти пытаетесь?.

первый раз вижу чтобы стартовали с F18877 .... у мня даже компилятор о нем не знает :)

а так любой код на Си

выглядит

void main(void)
{
  // секция инициализации МК
  // ....
  // ....
while(1)
{
  // здесь основной код
  // в бесконечном цикле
} // end while(1)
}// end main

if(PORTAbits.RA0 == 1) { RB0 = 1;}  записывается как

if(PORTbits.RA0) { LATBbits.LATB0=1;}

PS выкладывая код пользуйтесь тегами КОД:  <> на панели сообщений

Share this post


Link to post
Share on other sites

Приглашаем на вебинар «Инновационные технологии Analog Devices в области управления питанием» (11.08.2021)

В программе вебинара технология Silent Switcher® - сочетание высокого КПД и сверхмалого уровня ЭМИ, технология uModule® - высокоинтегрированные решения для источников питания, микро- и нанопотребляющие DC/DC-преобразователи, решения для резервного питания, цифровое управление системой питания (PSM), безоптронные изолированные обратноходовые преобразователи. В практической части вебинара будут продемонстрированы примеры работы с инструментами Analog Devices для проектирования источников питания.
Подробнее

Увы не получается, может у кого то есть код на данный контроллер на Си или ассемблере с конфигурационными байтами. Первый код хочу по входу А0 включается выход В0.

Share this post


Link to post
Share on other sites

Концевые микропереключатели KLS – простая и надежная коммутация по оптимальной цене

На складе Компэл широко представлены нажимные переключатели от KLS в стандартных и миниатюрных корпусах с различными типами актуаторов. Микропереключатели серий KLS7-KW10 и KLS7-KW4-3Z соответствуют строгим стандартам электрической безопасности и эффективности, что гарантирует надежную коммутацию цепей управления.

Подробнее

3 часа назад, LiSiY5 сказал:

Увы не получается.

Что конкретно не получается? Если речь идет о первоначальном коде, то там написана ахинея. Вам сказали выше, что проверку нужно делать В БЕСКОНЕЧНОМ ЦИКЛЕ. Вы зачем то вставили return... Вы знаете что такое return в Си?

Share this post


Link to post
Share on other sites

Датчики STMicroelectronics – новые возможности систем умного дома ST

Согласно прогнозам аналитиков, в ближайшие пару лет будет наблюдаться заметный рост рынка датчиков движения и положения для умного дома. Компания STMicroelectronics предлагает одну из самых широких линеек MEMS-датчиков, включая акселерометры, гироскопы, цифровые компасы, модули IMU, микрофоны и датчики параметров окружающей среды. Рассмотрим применение датчиков и тенденции их развития.
Подробнее

5 часов назад, LiSiY5 сказал:

может у кого то есть код на данный контроллер на Си или ассемблере с конфигурационными байтами.

и что это Вам даст? конфигирация пишется под обвязку МК и применяемый программатор , в соответствии с описанием компилятора

можно конечно попробовать помочь , от Вас  html на МК с описанием битов конфигурации из папки доков компилятора, инклюд , схема обвязки МК , и модель программатора и метод програмирования.

Share this post


Link to post
Share on other sites
28.08.2020 в 18:49, IMXO сказал:

и что это Вам даст? конфигирация пишется под обвязку МК и применяемый программатор , в соответствии с описанием компилятора

можно конечно попробовать помочь , от Вас  html на МК с описанием битов конфигурации из папки доков компилятора, инклюд , схема обвязки МК , и модель программатора и метод програмирования.

Спрыгиваю на более простой МК PIC16F877A, использую програматор РicKit3, компилятор ХС8, программа MPLAB X IDE, биты конфигурации:

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (Power-up Timer is enabled)
#pragma config CP = OFF 

 

Хочу программу, при RA0==1 включается RB0=1.

Подскажите пожалуйста.

Edited by LiSiY5

Share this post


Link to post
Share on other sites
Скрытый текст

#include <xc.h>	// Required to interface with delay routines

// __CONFIG(LVPDIS & WDTEN & PWRTEN & BORDIS & HS);

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (Power-up Timer is enabled)
#pragma config CP = OFF  
#pragma config LVP = OFF
#pragma config BOREN = ON

//*******************************************************************
void init(void)
{
 INTCON = 0; 
 PIE1 = 0;
 ADCON1 = 0b00000111; // Цифровые выводы
 TRISA = 0b11111111; //входы
 TRISB = 0; // выходы
 TRISC = 0b11111111;
 TRISD = 0;
 PORTA = 0; 
 PORTB = 0; 
 PORTC = 0;
 PORTD = 0;
 OPTION = 0b00000000; 

}
//**********************************************************

//***************************************************************
void main (void)
{
init();
while(1)
    { 
      if(PORTAbits.RA0) 
	     { PORTBbits.RB0=1;} 
	   else 
	     { PORTBbits.RB0=0;} 
// можно еще так записать
      	PORTBbits.RB0= PORTAbits.RA0;
	} // end while(1)

}

 

 

Share this post


Link to post
Share on other sites

Задачка стала по-сложнее, надо организовать АЦП преобразователь, кто то работал? Подскажите, а то с Google не могу договориться. Исходные конфигурационные данные и обвязку прилагаю(работа: по изменению потенциала на AN0 меняются выходы RB0-RB7). Всем спасибо за помощь.


// PIC16F877A Configuration Bit Settings

// 'C' source line config statements

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = ON        // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = ON         // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>

#define _XTAL_FREQ 20000000

 

ADC.PDF

Edited by LiSiY5

Share this post


Link to post
Share on other sites

Надо не с Гуглом договариваться, а даташит читать. Тем более, что на этот МК он есть и на русском.

Share this post


Link to post
Share on other sites
4 часа назад, LiSiY5 сказал:

работа: по изменению потенциала на AN0 меняются выходы RB0-RB7

шикарное описание... Вы точно программист?

Скрытый текст

void init_ADC_AN0 (void)
{
	TRISA |= (1<<0); // RA0 = input;
	ADCON1 0b10001110; // RA0(AN0) = analog input;
	ADCON0 = 0b11000001; // Fadc=Fosc/32; AN0; ADC=ON;    	
}

unsigned int ReadADC_AN0(void)
{ static unsigned char s_ucCount;
  static unsigned int  m_TempResalt[32];
  static unsigned int  s_uiSymm;
  
  s_ucCount++;
  s_ucCount&=0b00011111;
  s_uiSymm -= m_TempResalt[s_ucCount];
  __delay_us(20);  
  ADCON0bits.GO_DONE=1;
  while(ADCON0bits.GO_DONE) continue;
  __delay_us(5); 
  m_TempResalt[s_ucCount] = ADRESH;
  m_TempResalt[s_ucCount]<<=8;
  m_TempResalt[s_ucCount]+= ADRESL;
  s_uiSymm += m_TempResalt[s_ucCount];
  return s_uiSymm/32;	
}

 

 

Share this post


Link to post
Share on other sites

Разрешите объяснить, Я хочу полный код под мои конфигурационные биты на Pic16f877a. Мне необходимо получить переменную, назовем ADC, которая меняет значение от 0 до 1023, при изменении напряжения на входе AN0 от 0В до 5В. Далее сравнивая переменную с задаными const постараюсь получить на выходе то что задумано. Не судите строго, после перенесенного менингита сложно все вспоминаеться...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Можно подумать, что печатная пропаганда чем то отличается от тырнотовской и прочей дрочи.  И если издана давно, то поэтому автоматически носит статус правдивой?  -так по твоему?  Ну так ты не ответил, по каким таким заслугам,  Черчилль или Рузвельт должны были высказывать особое почтение Сталину?  Объяснить вразумительно можешь? Или можешь только книжкой махать?
    • @Серж Вамп  Скоро узнаем. Радиатор с 72-мя светодиодами уже готов   Пока взялся БП переделывать на 20В.
    • Какие нах слухи!?Эта книга давно издана!,до тырнетов и прочей дрочи!!Ты даже этого не знаешь!!!Охуеть!!!О чём с тобой базарить?!
    • собрать 2х такт с нормальными выходными трансами, тогда и бас будет. это ваш первый усилитель , на нем вы должны понять что к чему, набить руку , думаю вы уже поняли что если собирать типовые обкатанные схемы - то на самом деле ничего сложного тут нет .Главное быть внимательным. первая слабее старее и дороже стоит, вторая мощнее. 
    • Понятно. Слухами и легендами питаешься.  Эти патриотические  сказания предназначались сугубо для внутреннего пользования. ))  Думаешь, что Рузвельт тоже слышал эти сказки с небылицами и поэтому проникся чрезвычайным уважением к Сталину? Со Сталиным не шибко сильно считались, только по острой необходимости. Даже вторую часть Нюрнбергского процесса провели уже без участия СССР. Типа на хyй его послали.  А ты говоришь, что все вставали по стойке смирно!
    • важного на этой флешке ничего нет, она стоит в экшен камере которую я катаю на шлеме мотоцикла, приезжаю если чего интересного было вырезается а остальное в помойку
    • Явно не из википедрии!!!Если буду рассказывать про Сашу Матросова,и т.д и т.п...у вас уши повянут!!! Намек понял,не?!  
  • Similar Content

    • By LiSiY5
      Работаю в Mplab X 5.40, написал основной код программы для Pic16 на Си и есть небольшой код на ассемблере. Так вот, подскажите как правильно сделать переход на подпрограмму с Си на ассемблер и назад. Может на каком либо примере где-то есть. Заранее всем спасибо.
    • By Ilya Gray
      Доброго времени суток!
      В целом, имеется опыт разработки малых устройств, что-то понимаю, в общем, старательно читаю даташиты, даже понимаю их, но на звание серьёзного инженера (пока что) не претендую.
      Я пытаюсь использовать I2C на 8-битном PIC16F18326. Сижу в даташитах. Всё понимаю, всё делаю, на мой неопытный взгляд, правильно. Даже копирую полностью рабочие примеры (я даже купил такой же микроконтроллер, как в примере, скопировал код, контролируя, что он делает. Но всё равно не работает - SCL/SDA на 5в и всё тут).
      Так вот: PIC16F18326 on breadboard (прошу прощения, я хз как это по-русски) на внутреннем 32мгц кристалле. Чип пашет, без проблем моргаю LEDкой. Ну, думаю, щас быстренько подниму I2C. В итоге SCL SDA сидят на 5в без движения. Я использую LED для отладки. Судя по LED, код заloopливается в месте, где проверяется while PIR1bits.SSP1IF==0. Я уже везде был, кучу форумов перерыл. Уже попробовал всё, что мог представить. Я довольно новый в мире PIC, хотел попробовать их, а они ужасно сопротивляются. Уже 2 недели долблюсь безуспешно.
      Подтяжки 10к, проблем с ними никогда не было.
      Собственно, вот код (я уже там попробовал повыключать ADC, вычитал про баг, что сначала I2C пины надо делать OUTPUT LOW, а потом уже INPUT из-за бага MSSP, но ничего не помогло).
      // PIC16F18326 Configuration Bit Settings // 'C' source line config statements // CONFIG1 #pragma config FEXTOSC = OFF // FEXTOSC External Oscillator mode Selection bits (Oscillator not enabled) #pragma config RSTOSC = HFINT32 // Power-up default value for COSC bits (HFINTOSC with 2x PLL (32MHz)) #pragma config CLKOUTEN = OFF // Clock Out Enable bit (CLKOUT function is disabled; I/O or oscillator function on OSC2) #pragma config CSWEN = ON // Clock Switch Enable bit (Writing to NOSC and NDIV is allowed) #pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled) // CONFIG2 #pragma config MCLRE = ON // Master Clear Enable bit (MCLR/VPP pin function is MCLR; Weak pull-up enabled) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config WDTE = OFF // Watchdog Timer Enable bits (WDT disabled; SWDTEN is ignored) #pragma config LPBOREN = OFF // Low-power BOR enable bit (ULPBOR disabled) #pragma config BOREN = ON // Brown-out Reset Enable bits (Brown-out Reset enabled, SBOREN bit ignored) #pragma config BORV = LOW // Brown-out Reset Voltage selection bit (Brown-out voltage (Vbor) set to 2.45V) #pragma config PPS1WAY = ON // PPSLOCK bit One-Way Set Enable bit (The PPSLOCK bit can be cleared and set only once; PPS registers remain locked after one clear/set cycle) #pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will cause a Reset) #pragma config DEBUG = OFF // Debugger enable bit (Background debugger disabled) // CONFIG3 #pragma config WRT = OFF // User NVM self-write protection bits (Write protection off) #pragma config LVP = ON // Low Voltage Programming Enable bit (Low Voltage programming enabled. MCLR/VPP pin function is MCLR. MCLRE configuration bit is ignored.) // CONFIG4 #pragma config CP = OFF // User NVM Program Memory Code Protection bit (User NVM code protection disabled) #pragma config CPD = OFF // Data NVM Memory Code Protection bit (Data NVM code protection disabled) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include <xc.h> #include <htc.h> #include <stdio.h> #include <stdint.h> #define _XTAL_FREQ 32000000 void i2c_is_idle(void){ //while(!PIR1bits.SSP1IF); //while(SSPCON2bits.SEN==1 || SSPCON2bits.RSEN==1 || SSPCON2bits.PEN==1 || SSPCON2bits.RCEN==1 || SSPCON2bits.ACKEN==1 || SSPSTATbits.R_nW==1){}; while(PIR1bits.SSP1IF == 0){ PORTCbits.RC2=1; }; // SSP1IF is set when operation complete PORTCbits.RC2=0; PIR1bits.SSP1IF = 0; // clear interrupt flag } void i2c_start(void){ i2c_is_idle(); SSPCON2bits.SEN = 1; } void i2c_rep_start(void){ i2c_is_idle(); SSPCON2bits.RSEN = 1; } void i2c_stop(void){ i2c_is_idle(); SSPCON2bits.PEN = 1; } void i2c_write(uint8_t i2c_data){ i2c_is_idle(); SSPBUF = i2c_data; while(SSPSTATbits.BF != 0); while(SSPCON2bits.ACKSTAT != 0); } uint8_t i2c_read(uint8_t ack){ uint8_t recieve =0; i2c_is_idle(); SSPCON2bits.RCEN = 1; while(SSPSTATbits.BF != 1); recieve = SSPBUF; SSPCON2bits.ACKEN = ack; return recieve; } void i2c_init(void){ TRISCbits.TRISC0 = 1; TRISCbits.TRISC1 = 1; SSPSTATbits.SMP = 1; SSPSTATbits.CKE = 0; SSPCONbits.SSPM = 0x08; SSPADD = 79; SSPCONbits.SSPEN = 1; } void main(void) { ANSELCbits.ANSC0 = 0; //ADC RC0 OFF ANSELCbits.ANSC1 = 0; //ADC RC1 OFF TRISCbits.TRISC2=0; //LED PIN TRISCbits.TRISC0=0; //MSSP bug counter TRISCbits.TRISC1=0; //MSSP bug counter //__delay_ms(5); LATCbits.LATC1=0; //MSSP bug counter LATCbits.LATC0=0; //MSSP bug counter //__delay_ms(5); INTCONbits.GIE=1; //global interrupt en INTCONbits.PEIE=1; //peripheral interrupt en ADCON0bits.ADON=0; //unpower adc just in case i2c_init(); //THIS SETS TRISC BITS FOR SCL SDA while(1){ i2c_start(); i2c_write(0x3C); i2c_stop(); } return; } Задача: просто увидеть коммуникацию на SCL SDA, я уже потом по даташитам таргет девайсов без проблем напишу дрова. Не получается именно осуществлять коммуникацию.
      Подскажите, пожалуйста, я не понимаю, где я дурак, а между тем волос на голове становится всё меньше, а те, что остались, стремительно приобретают серый окрас, ибо 2 недели я долбаюсь с одной проблемой. Благодарю за ваши советы. Спасибо.
       
    • By Анариза Блоодхаст
      Доброго дня. Загорелась идеей создать автоматическую кормушку для своей кошки. Поискав в интернете, нашла готовые решения для Ардуино, но мой преподаватель не приемлет его использование, поэтому я здесь.
      Я планирую сделать кормушку, отсыпающую некоторую дозу сухого корма через определённый промежуток времени после включения в сеть или же ориентируясь на реальное время. Поскольку я только учусь подобному, мне нужны советы как что делать и с чего начать.
      Я хочу знать:
      какой пик лучше подобрать;
      какие потребуются модули и как их подключить к МК;
      из чего сделать конструкцию кормушки;
      можно ли адаптировать и оптимизировать код, который предлагается для готовых решений на Ардуино (ссылка на одно из них: http://wiki.amperka.ru/slot-box:three-automatic-animal-feeder )
      В работе с пиками использую MPLAB, Proteus 7, а также софт для прошивки МК. Если нужен дополнительный софт, пожалуйста, поделитесь им и кратко опишите схему работы с ним.

    • By perec200
      Добрый день, в программирование контроллеров я ничего не смыслю, знаю только ассемблер, С++.
      Мне необходимо реализовать систему автополива, у меня есть 5 выходов RA каждый из которых отвечает за открытия крана.
      У каждого порта есть время срабатывания и длительность полива. Как мне в заданное время подать на нужный выход RA логическую единицу и держать этот уровень определенное время.
      Пример: время срабатывания RA1 в 12:15 логическая единица должна быть установлена на 5 минут после истечения этого времени выход выдаёт сигнал 0.
      Может посоветуете свои варианты как лучше сделать к примеру делать полив через заданные промежутки времени.
      Основной вопрос: как создать таймер, который в заданное время сработает и подаст сигнал на порт RA?

    • By wabbit
      Уважаемые форумчане, добрый день!
      Прошу вашего совета,
      Стоит задача снять с устройства(домофон) на базе PIC16F886-I/SO код набираемый на цифровой клавиатуре устройства:
      схема:
      shema_principialnaya_SM100R.pdf
      Насколько я понимаю сигнал(CMOS) подается на RB3 и затем уходит по выводу Ek устройства напряжением 14 Вольт.
      Есть также устройство,(коммутатор домофона БК100), тоже на базе PIC16F57-I/SO , которое этот сигнал умеет успешно принимать и распознавать.
      схема:
      shema_principialnaya_БК100.pdf
      Если я правильно понимаю то сигнал приходит на ножки OSC1 и TOCKI?
      Вопрос такой, можно ли как-то этот сигнал передаваемый на БК100 параллельно получить на ПК(или GPIO Rasberry) и распознать?
      В случае Rasberry можно получить этот сигнал понизив напряжение до 3.3вольта с 14в, чтобы не спалить плату? Хватит ли скорости чтения GPIO для распознания всех битов или нужен какой-то серийный интерфейс аля UART?
      На компьютере на RS232 наверное подключить не получиться, так как там напряжение от +12 до -12 вольт используется? Есть ли какие-то другие порты на обычном ПК, которые смогли бы распознать такой ввод с контроллера (извините за глупость, может Aux или Mic?)
      Пожалуйста подскажите куда копать, чтобы решить такую задачу, если она решаема.
      Спасибо
      shema_principialnaya_SM100R.pdf
      shema_principialnaya_БК100.pdf
×
×
  • Create New...