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

 
 
> Проблема с dspic33FJ128MC706A, не работает в Release режиме опрос PORTB
Cursedsmite
сообщение Aug 19 2013, 14:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 21-09-11
Пользователь №: 67 320



Здравствуйте, столкнулся с такой проблемой при программирование микроконтроллера dspic33FJ128MC706A на вот этой плате Digilent Cerebot MC7 https://www.digilentinc.com/Products/Detail...rod=CEREBOT-MC7.
На плате встроенный внутрисхемный отладчик, программирую я через MPLAB 8.90 компилятор C30. Писал прогу всё отладил в debug моде, начал переводить её в release режим чтобы МК запускался уже самостоятельно а не из под отладчика и тут функция опроса кнопки перестала работать. Я что только не делал, менял переменные, прописывал их в volatile, static extern и прочее. Смотрел что с моим портом происходит. В режиме отладки всё прекрасно видно как во время прерывания по брейкпоинту в порте RB8 выставляется единичка и всё работает правильно, но как только программирую в release режиме - всё, как будто порт перестаёт видеть высокий сигнал на RB8. Я смотрел осцилографом всё в порядке, напряжение есть на пине при нажатие кнопки, ничего на плате не отвалилось. К этому пину в dspic33FJ128MC706A привязано всего 2 модуля - UART и АЦП, АЦП я ещё при отладке отсоединил от этого пина, так чтобы при отладке всё работало, а насчёт UART не уверен, но проглядев ref.manual по UART я понял ну что там нечему мешать работе регистра PORTB, потому что я его и програмного отключил тоже, хотя он по умолчанию выключен. Кидаю часть своего кода, может кто скажет где у меня ошибка или нелепость какая-та, которую я просто из-за замыленности мозга уже не могу найти.
Код
...
#define    BTN1                    PORTBbits.RB8
#define    BTN2                    PORTBbits.RB14    
#define BUTTON_FILTER            200            
...
/*Variables*/
...
int buttonPressed;
int button2Pressed;
int buttonCounter;
int button2Counter;
...

/*----------------------------------------------------------------------------*/
//Begin
int main (void)
{
...
initPeripherals();
...
    buttonPressed = 0;
    button2Pressed = 0;
    buttonCounter = 0;
    button2Counter = 0;
...
/************************************ Infinite Loop *********************************/

    while(1)                        //Main Infinitive loop
    {
        if(BTN1)                        //button 1 is pressed
        {
            //keep counting if button pressed and debounce value not reached
            if(++buttonCounter > BUTTON_FILTER)
            {
                buttonCounter = BUTTON_FILTER+1;    //limit the counter to avoid overflows
                if( buttonPressed == 0)             //button pressed and debounced
                {
                    buttonPressed = 1;                    //set button presseed flag
                }
            }
        }
        else                                        //button is not pressed
        {
            buttonCounter = 0;                      //clear counter and flag
            buttonPressed = 0;
        }
        ...
    }
...
}

void initPeripherals(void)
{
    //Настройка портов ADC модуля как цифровые (=1 - цифровые; =0 - аналоговые) и регистра TRISB,
    //чтобы работали кнопки на плате
    AD1PCFGLbits.PCFG8 = 1;
    Nop();
    AD1PCFGLbits.PCFG14 = 1;
    Nop();
    TRISBbits.TRISB8 = 1;
    Nop();
    TRISBbits.TRISB14 = 1;
    Nop();
...
}


Сообщение отредактировал Cursedsmite - Aug 19 2013, 14:49
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Cursedsmite
сообщение Aug 21 2013, 07:41
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 21-09-11
Пользователь №: 67 320



"Главное: непонятно, как Вы узнали о том, что "функция опроса кнопки перестала работать"."
Ну из под внутрисхемного отладчика всё работало при запуске программы через MPLAB - я нажимал кнопку, двигатель крутился, я нажимал снова - двигатель переставал крутиться. Перевёл программу в Release режим, и просто такое ощущние создалось что МК перестал воспринимать port B.
Попробывал этот цикл, да всё получается - жму кнопку в debug режиме из под внутрисхемного отладчика, зажигается светодиод на плате, отпускаю тухнет. Всё как и должно быть. - запускаю тот же код в release режиме - ничего не происходит.
Я не знаю какую информацию ещё дать. Все настройки хоть как-нибудь причастные к данной проблеме я привёл в коде в своём посте. Суть проблемы описал - код работает всё нормально в debug режиме в MPLAB, хочу сделать так чтобы МК сам по себе работал, как я понимаю надо просто перевести в MPLAB режим с debug в release и прошить МК под меню Programmer а не под Debugger. Вот и всё.
Я просто надеялся может кто-нибудь программировал уже dsPIC и встречался с подобной проблеммой. Может в UARTе что-нибудь подкрутить надо что я просто из-за неопытности не могу определить, или с АЦП какая-та проблемма в release режиме? Других модулей к этой ноге не привязано и я сомневаюсь что в чём-нибудь другом проблемма.

Сообщение отредактировал Cursedsmite - Aug 21 2013, 07:52
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Aug 21 2013, 11:19
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(Cursedsmite @ Aug 21 2013, 10:41) *
Я не знаю какую информацию ещё дать. Все настройки хоть как-нибудь причастные к данной проблеме я привёл в коде в своём посте. Суть проблемы описал - код работает всё нормально в debug режиме в MPLAB, хочу сделать так чтобы МК сам по себе работал, как я понимаю надо просто перевести в MPLAB режим с debug в release и прошить МК под меню Programmer а не под Debugger. Вот и всё.

Хм. А программатор после программирования отключать пробовали? если да и все равно не работает, то....

проблемы либо в WDT, или в других установках Fuse регистров. или в ногах, которые в ICD подключаются. Без схемы и полного проекта не разобраться. Дайте МПЛАБ проект целиком, причем с релиз режимом включенным. И версию MPLAB укажите.
Схему будем пока считать условно рабочей и попробуем проверить программу.
Go to the top of the page
 
+Quote Post



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

 


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


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