реклама на сайте
подробности

 
 
> PIC32MZ, почти ничего не пашет
andreichk
сообщение Oct 12 2014, 21:01
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Привет народ, попалась мне в руки демо плата с новым 200 мегагерцным PIC32MZ. Переписал старый проект под него, ПИК шьётся и даже что-то там дрыгает ножками. Но у меня такое впечатление, что половина внутренностей там просто ниразу не пашет. пробовал настраивать ремапинг - тишина. УАРТ - тоже самое, частоту переферии - ничего не меняет, прерывания тоже непонятно. Может кто из знающих подсказать, правильно ли я вообще там всё настраиваю. вот кусок кода настроек:
Код
CFGCONbits.JTAGEN=0;//1 = JTAG is enabled //0 = JTAG is disabled
PRECONbits.PREFEN=3;
//11 = Enable predictive prefetch for any address
//10 = Enable predictive prefetch for CPU instructions and CPU data
//01 = Enable predictive prefetch for CPU instructions only
//00 = Disable predictive prefetch

//---------------- НАСТРОЙКА ЛИНИЙ ПОРТОВ --------------------------------------
  ANSELBCLR = 0b1111111111111111;// НЕ УДАЛЯТЬ !!! цифровой ПОРТ B(MZ)
   TRISB = 0b1111111111111111;// читаем данные с SPARTAN6 A,B на PORTB
    LATB = 0b1111111111111111;// защёлка чтоб не прощёлкать

  ANSELCCLR = 0b1111111111111111;//
   TRISC = 0b1111111111111101;// RC14-частотомер вход ,  доп. RC1 выход
   PORTC = 0b1111111111111101;//
    LATC = 0b1111111111111101;// защёлка чтоб не прощёлкать

  ANSELDCLR = 0b1111111111111111;//
   TRISD = 0b0110011111011011;// RD9-частотомер вход, RD14 CMDASK вход, выходы 2 , 5, 11, 12, доп.15вых.
   PORTD = 0b0110011111011011;//
    LATD = 0b0110011111011011;// защёлка чтоб не прощёлкать

  ANSELECLR = 0b1111111111;
   TRISE = 0b0000000000;      // порт RE на выход, данные на ТФТ-ПРОВОДНИК 8 bit. RE8,9доп вых.
   PORTE = 0b0000000000;      //
    LATE = 0b0000000000;      // защёлка чтоб не прощёлкать

  ANSELFCLR = 0b1111111111111111;//
   TRISF = 0b1111111111001111;// вход автосинхронизации RF0 A и RF2 B, выходы RF4 и RF5 read FIFO
   PORTF = 0b1111111111001111;//
    LATF = 0b1111111111001111;// защёлка чтоб не прощёлкать

  ANSELGCLR = 0b1111111111111111;//
   TRISG = 0b1010111001111111;// порт RG 7,8 на вых.  RG 12,14 LEDs
   PORTG = 0b1010111001111111;//
    LATG = 0b1010111001111111;// защёлка чтоб не прощёлкать
//--------------- ПЕРЕНАПРАВЛЕНИЕ ЛИНИЙ ПОРТОВ ---------------------------------

  CFGCONbits.IOLOCK = 0;//Unlock Sequence
  CFGCONbits.PMDLOCK = 0;
   INT2R = 0; //to RPD9
   U1RXR = 3; //to RPD10
  CFGCONbits.IOLOCK = 1;//Lock Sequence
  CFGCONbits.PMDLOCK = 1;
//CFGCON = 0b0010000000000000;//Lock Sequence
//OSCCON = 0b0010000000000000;

  //------------------ НАСТРОЙКА ЧАСТОТЫ ПЕРИФЕРИИ -----------------------------
PB5DIVbits.ON = 1;//FLASH
PB5DIVbits.PBDIV = 4;//40 MHz

PB4DIVbits.ON = 1;//порты
PB4DIVbits.PBDIV = 2;//50 MHz

PB3DIVbits.ON = 1;//таймеры
PB3DIVbits.PBDIV = 2;//50 MHz

PB2DIVbits.ON = 1;//UART1
PB2DIVbits.PBDIV = 11;//Peripheral Bus Clock: 18.432 MHz

//---------------------- НАСТРОЙКА UART1 ---------------------------------------
uchar BaudRate = ((FPB/115200)/16) - 1;//=9
  U1BRG = BaudRate; //Set Baud rate
  U1STA = 0;
  U1MODE = 0b1000000000000110;// 0x8006; //Enable UART for 9-bit data
  U1MODEbits.ON    = 1;   //UARTx is enabled
  U1MODEbits.PDSEL = 3;   //9-bit data, no parity
  U1MODEbits.BRGH  = 0;   //BRGH: High Baud Rate Enable bit
                          //1 = High-Speed mode – 4x baud clock enabled
                          //0 = Standard Speed mode – 16x baud clock enabled
  U1STASET = 0b1010000000000;//0x1400; //Enable Transmit and Receive
//настройка модуля UART и его прерываний
//вкл. прерывание по приему, приоритет 1, подприоритет 3
  U1MODE = 0b0001000000000110;
  IPC28bits.U1RXIS = 3;//подприоритет 3
  IPC28bits.U1RXIP = 1;//приоритет 1,
//================================================================================
==========================
//--------------------------- НАСТРОЙКА ТАЙМЕРОВ -------------------------------
//таймер считает кол-во пришедших на измерительный вход импульсов. T1CK pin74
T1CON = 0b1000000000000010;//T1_ON | T1_SOURCE_EXT | T1_PS_1_1
PR1 = 0xFFFF;//0xFFFF
IPC1bits.T1IS = 0;//T1_INT_SUB_PRIOR_0
IPC1bits.T1IP = 1;//T1_INT_PRIOR_1
IEC0bits.T1IE = 1;//T1_INT_ON
//время 100 мсек будет отсчитываться отдельным 32-х битным таймером
T2CON = 0b1000000000001000; //T23_ON | T23_SOURCE_INT | T23_PS_1_1 | T23_32BIT_MODE_ON,
PR3 = 0x007A; PR2 = 0x1200;//0x7A1200
IPC2bits.T2IS = 1;//T23_INT_SUB_PRIOR_1
IPC2bits.T2IP = 1;//T23_INT_PRIOR_1
IEC0bits.T2IE = 1;//T23_INT_ON
//------------------  ИНИЦИАЛИЗАЦИЯ INPUT CAPTURE ------------------------------
//Enable the IC2 module in 32-bit mode, capturing every rise edge.  //EnableIntIC2;
IC2CON = 0b0000001110000000;//IC_OFF | IC_CAP_32BIT | IC_TIMER2_SRC | IC_INT_1CAPTURE | IC_EVERY_RISE_EDGE
IPC2bits.IC2IS = 2;//IC_INT_SUB_PRIOR_2
IPC2bits.IC2IP = 1;//IC_INT_PRIOR_1
IEC0bits.IC2IE = 1;//IC_INT_ON
//----------------------------------------------------------------------------OK
   INTCONbits.MVEC = 1;   // включить мультивекторный режим


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 17:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016