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

 
 
 
Reply to this topicStart new topic
> Опять у mspgcc мозга за мозга заскакивает..., internal error: Segmentation fault
MrYuran
сообщение Nov 9 2009, 09:56
Сообщение #1


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Код
//------------------------------------------------------------------------
//      Ожидание готовности канала АЦП
//------------------------------------------------------------------------
//static
void WaitForReady(stADCStatus *ADC)
{
    GetRealTime(&RealTime);
    if((RealTime - ADC->StartTime) > ADC_CALIBR_DELAY)
        ADC->Phase = adcStartUp;
}

//----------------------------------------------------------------------
//      Калибровка АЦП по нулю
//----------------------------------------------------------------------
void ADC_ZeroCal(stADCStatus *ADC)
{
    if((ReadRegister(erMode) & 0x3) == 1)
    {
        Calibrate(adcFullCal, ADC->CurrentChannel);
        ADC->Phase = adcFullCal;
    }
    else
        WaitForReady(ADC);
}

Ошибка возникает в строке WaitForReady(ADC);
Непонятно, почему нельзя взять входной указатель на структуру и перекинуть его в вызываемую функцию.
Можно, конечно, заинлайнить эти несчастные 3 строчки по месту, но как-то неэстетично...
Да и с глюком нужно разобраться

Новые подробности:
заинлайнил, ничего не изменилось.

Опытным путём локализовал:
if((RealTime - ADC->StartTime) > ADC_CALIBR_DELAY)
Вот на это ругается.
StartTime - unsigned long

В чём дело? Всегда раньше работало...

#########

В общем, с помощью костылей и какой-то матери...

Код
void WaitForReady(stADCStatus *ADC)
{
    unsigned long temp = ADC->StartTime;
    GetRealTime(&RealTime);
    if((RealTime - temp) > ADC_CALIBR_DELAY)
        ADC->Phase = adcStartUp;
}


всё заработало. Что это было, в упор не понимаю.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Nov 9 2009, 10:17
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



ADC_CALIBR_DELAY как задефайнено с суффиксом UL?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 9 2009, 10:21
Сообщение #3


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(demiurg_spb @ Nov 9 2009, 13:17) *
ADC_CALIBR_DELAY как задефайнено с суффиксом UL?

#define ADC_CALIBR_DELAY 1000ul


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:01
Рейтинг@Mail.ru


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