Easyelectronics.ru • Просмотр темы - mcp19111

Easyelectronics.ru

Электроника для всех
Текущее время: 19 авг 2018, 01:08

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: mcp19111
СообщениеДобавлено: 26 дек 2017, 00:41 
Заглядывает иногда

Зарегистрирован: 29 апр 2017, 21:52
Сообщения: 32
Здравствуйте! В общем имеется демонстрационная плата ADM00397 на контроллере mcp19111.Этот мк имеет внутри мощный mosfet драйвер, к которому подключаются 2 транзюка снаружи, которые соединяются на выводе PHASE.Как я понял мосфет драйвер тактируется от таймера 2 и подключать его к выходу самого драйвера программно не надо.Сам драйвер создает ШИМ на выходе PHASE со скважностью установленной через PWMRL.Про сам драйвер написано ,чтобы его включить надо обнулить регистр ATSTCON. Но, что то ничего не выходит.На выходе с PHASE всегда 1.23 вольта видимо обусловленные конденсаторами вне зависимости от скважности установленной через PWMRL.Таймер 2 работает.Проверял через мигание светодиодом.Видимо я чего то не понимаю.Может кто сталкивался с этим мк? Питаю от зарядки 12V на 1.5А.
Код:
#pragma config WDTE = OFF
#pragma config PWRTE = ON
#define _XTAL_FREQ 8000000
#include <xc.h>

void main(void) {

   
   // PE1 =0;
   //ABECON=0;
    BUFFCON=0;
    PR2=25;
    PWMRL=3;
    ATSTCON=0;

    T2CON=7;
   
    while(1){
    }

    return;
}



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 26 дек 2017, 11:15 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 858
Если я правильно понял даташит мельком глянув, PWMRL устанавливает максимальную скважность, но управляется оно обычной обратной связью, а не программно. Выходное напряжение задается OVCCON и OVFCON. А у вас они не задаются.
Цитата:
The PWM module does not continuously adjust the duty cycle to control the output voltage. This is accomplished by the analog control loop and associated circuitry.

Цитата:
The actual duty cycle on the HDRV and LDRV is controlled by the analog PWM control loop. However, this duty cycle cannot be greater than the value in the PWMRL register.

Цитата:
Note: The OVFCON<VOUTEN> bit must be set to enable the output voltage setting registers.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 26 дек 2017, 15:49 
Заглядывает иногда

Зарегистрирован: 29 апр 2017, 21:52
Сообщения: 32
Спасибо за помощь.Но это не помогло.Обрывов контактов нет, проверил.
Код:
#pragma config WDTE = OFF
#pragma config PWRTE = ON
#define _XTAL_FREQ 8000000
#include <xc.h>

void main(void) {

   
   // PE1 =0;
   //ABECON=0;
    BUFFCON=0;
    OVCCON=243;
    OVFCON=140;
    PR2=25;
    PWMRL=15;
    ATSTCON=0;
    T2CON=7;
   
    while(1){
    }

    return;
}



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 26 дек 2017, 17:22 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 858
Я о такой микрухе впервые слышу ) На сайте MC есть плагин под MPLABX: http://ww1.microchip.com/downloads/en/D ... supply.zip
Вроде как должен стартовый код интерактивно помогать генерить судя по описанию. Может его поставить и глянуть что он там предложить создать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 26 дек 2017, 17:55 
Заглядывает иногда

Зарегистрирован: 29 апр 2017, 21:52
Сообщения: 32
Я его пробовал,плагин то ставится ,но код с него не компилится. Если у кого есть готовый hex кода с этого плагина будет тоже не плохо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 27 дек 2017, 14:26 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 858
Элементарно убрать надо ненужные определения регистров и всё компилится. В файле init_part.h убрать строку
Код:
extern volatile unsigned int PMDAT @ 0x194;

В файле adc_monitor.h убрать строку:
Код:
extern volatile unsigned int ADRES @ 0x01C;

Просто эти адреса уже определили в хидерах XC8 (видимо добавили в более поздней версии, нежели плагин ориентирован). В архиве HEX собранный по идее на выдачу 3.3В (308 кГц @ 76% макс скважность).
Код:
PWMRL = 0x13;
BUFFCON = 0x03;
OVFCON = 0x91;
OVCCON = 0xCF;
OUVCON = 0X43;
OOVCON = 0xCF;
ABECON = 0x0F;
T2CON = 0x04;
PR2 = 0x19;


Вложения:
mcp19111.zip [10.26 Кб]
Скачиваний: 29
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 27 дек 2017, 20:32 
Заглядывает иногда

Зарегистрирован: 29 апр 2017, 21:52
Сообщения: 32
Спасибо. hex файл действительно выдает 3.3v. Правда приведенный исходный код всего лишь 0.7v и меняться не хочет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 28 дек 2017, 09:26 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 858
Значит что-то еще нужно, это я просто куски кода из сгенеренного выдрал. Видимо не достаточно, там еще много всякого. Сгенерите плагином сами, я написал что поправить, чтобы код компилировался - просто 2 строчки удалить надо. И там уже потихоньку можно выдирать значения регистров и разобраться чего не хватает в вашем коде, чтобы работало.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 28 дек 2017, 14:13 
Заглядывает иногда

Зарегистрирован: 29 апр 2017, 21:52
Сообщения: 32
Вы просто сгенерировали проект ничего не меняя?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 28 дек 2017, 14:26 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 858
В коде - только удалил 2 строки, о которых писал. В самом плагине ес-но выставил параметры (напряжение, частота, скважность и т.д.). При изменении параметров в плагине, он всего 1 хидер меняет, где значения для регистров в виде #define'ов задаются.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 28 дек 2017, 14:48 
Заглядывает иногда

Зарегистрирован: 29 апр 2017, 21:52
Сообщения: 32
Если разберусь напишу, где собака зарыта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 30 дек 2017, 20:17 
Заглядывает иногда

Зарегистрирован: 29 апр 2017, 21:52
Сообщения: 32
В общем вот ,что минимально нужно, чтобы напряжение на выходе более менее правдоподобно менялось.

Код:



#include <xc.h>
#pragma config MCLRE = ON 
#pragma config CP    = OFF
#pragma config PWRTE = OFF
#pragma config WDTE  = OFF
#pragma config WRT   = OFF
#define _XTAL_FREQ 8000000L

void main() {
     PE1 =0;
     OPTION_REG = 4;
     PWMPHL = 0;
     CMPZCON = 13;
     ABECON = 27;
     BUFFCON = 3;
     ATSTCON = 0X80;
     OVCCON= 224;
     OVFCON = 128;
   //  HDLYBY=1;
   //  LDLYBY=1;
   //  DEADCON=19;
     HIDIS = 1;
     
     PWMRL = 25;
     PR2 = 50;
     T2CON = 4;
     
 
    HIDIS = 0;
    PUEN = 0;

    while(1){
       
    }
   
    return;
}






Но это не точно ,напряжение на выходе чуть больше всегда.С чем это связано не знаю.Предполагаю там есть еще коэффициенты обратной связи и система компенсации,но это я еще не настраивал.Непонятно почему ATSTCON = 0X80.Когда этот бит в регистре вообще зарезервирован.И не понятно как тут затусовался OPTION_REG ,который устанавливает предделитель TMR0, но без него не работает.Если убрать CMPZCON = 13 начинает жутко пищать дросель,тоже пока не очень понял на, что этот регистр физически влияет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: mcp19111
СообщениеДобавлено: 02 янв 2018, 02:32 
Заглядывает иногда

Зарегистрирован: 29 апр 2017, 21:52
Сообщения: 32
В общем можно сказать, что я более менее разобрался как выставить заданное напряжение на выходе.Теперь остался один вопрос это про калибровочные слова.Калибровки разрабы сами зашили в отладочную плату или они зашиты в любом контроллере и их надо всегда подгружать? Ну в общем без них нормально не работает да и еще непонятные регистры требует, которые к делу не относятся.Вот,что получилось Выставляю 3.3В на выходе 3.35В Можно еще покоректировать обратной рампой думаю (slope compensation).Вот код.

Код:



#include <xc.h>
#pragma config MCLRE = ON 
#pragma config CP    = OFF
#pragma config PWRTE = OFF
#pragma config WDTE  = OFF
#pragma config WRT   = OFF
#define Vout 208
#define _XTAL_FREQ 8000000L


void main() {
   
    PMADRH = 0x20; CALSEL = 1;
    PMADRL = 0x80; RD = 1; NOP(); NOP(); DOVCAL = PMDATH; OSCCAL = PMDATL;
    PMADRL = 0x81; RD = 1; NOP(); NOP(); TTACAL = PMDATH; BGRCAL = PMDATL;
    PMADRL = 0x82; RD = 1; NOP(); NOP(); VROCAL = PMDATH; ZROCAL = PMDATL;
     
     PE1 =0;
     HIDIS = 1;
   //  OPTION_REG = 4;
     PWMPHL = 0;
     
     PWMRL = 19;
     PR2 = 25;
     T2CON = 4;
     
     
     CMPZCON = 13;
    // SLPCRCON=50;
    // SLVGNCON=0;
     
    // CSGSCON=5;
    // VZCCON=128;
    // CSDGCON = 0;
     
     
     ABECON = 27;//27
     BUFFCON = 3;
     ATSTCON = 0X80;
     OVCCON= Vout;
     OVFCON = 128;
     

     
    // HDLYBY=1;
    // LDLYBY=1;
    // DEADCON=19;

     HIDIS = 0;
   

    while(1){
       
    }
   
    return;
}





Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB