Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2012, 13:11   #1
Stasy_BMT
 
Аватар для Stasy_BMT
 
Регистрация: 06.06.2012
Сообщений: 3
Восклицание Почему программа вылетает? [C]

Не могу найти ошибку, почему программа вылетает после каждого измерения!
Программа для микроконтроллера блока управления шаговыми двигателями автоматизированного микроскопа


// вводим использование расширения ключевых слов
#pragma language=extended

#include <inavr.h>

#ifndef ENABLE_BIT_DEFINITIONS
#define ENABLE_BIT_DEFINITIONS

#endif

#include <iom128.h>

#include "PUM4LIB.h"
#include "PUM4LIB.c"

#include "Interrupts.c"

// The showstopper

// Основная программа, руководящая моделированием прерывания.
void main()
{

Uart0_Init();
Timer0_Init();
Timer1_Init();
Timer3_Init(); // Для получения случайного числа.
Drives_Init();
SensorsInit();
// RAND2L++;
// RAND2H+=2;

__enable_interrupt();

// бесконечный цикл
while (1)
{
__enable_interrupt();

// Полученные пакеты должны быть обработаны
if ( Packet_Prcssing_Task_Flag_Ch == 1 )
{
Packet_Processig();
__enable_interrupt();
Command_Processing();
__enable_interrupt();
//очистка процессинга задачи для полученной задачи
Packet_Prcssing_Task_Flag_Ch = 0;
}

__enable_interrupt();

//драйвер 1
//при достижении конца датчика
if ( Dvr1_Flag_Reg_Ch != 0 )
{
// подготовка пакета к передаче
Transmited_Data_Bytes_ArrCh[ dbtDrivNum ] = 1;
if ( Dvr1_Flag_Reg_Ch == evntEndSensStopping )
{ Transmited_Data_Bytes_ArrCh[ dbtCommndCode ] =
Received_Data_Bytes_ArrCh[ dbtCommndCode ]; // cmdMoveToEndSnsr;
Transmited_Data_Bytes_ArrCh[ dbtDataAmount ] = 1;

if (Received_Data_Bytes_ArrCh[ dbtCommndCode ] == cmdMoveXSteps )
{
Transmited_Data_Bytes_ArrCh[ dbtFirstData ] = erHWSensor; // 01 - граничный геркон
}
else
{
if ( End_Sens_flag_Reg_uSh & Dvr1_HWSens_Mask_Sh )
{
Transmited_Data_Bytes_ArrCh[ dbtFirstData ] = erHWSensor; // 01 - граничный геркон
}
else
{
Transmited_Data_Bytes_ArrCh[ dbtFirstData ] = erNoError;

}
} // не по шагам ехали
}
else
//evntStepStopping
{ Transmited_Data_Bytes_ArrCh[ dbtCommndCode ] =
cmdMoveXSteps;
Transmited_Data_Bytes_ArrCh[ dbtDataAmount ] = 1;
Transmited_Data_Bytes_ArrCh[ dbtFirstData ] = 0;
}
Response_Formation( erNoError );

// очистка процессинга задачи для полученной задачи
Dvr1_Flag_Reg_Ch = 0;
}

__enable_interrupt();


//driver 3
// при достижении конца датчика
if ( Dvr3_Flag_Reg_Ch > 0 )
{
// подготовка пакета к передаче
Transmited_Data_Bytes_ArrCh[ dbtDrivNum ] = 3;
if ( Dvr3_Flag_Reg_Ch == evntEndSensStopping )
{ Transmited_Data_Bytes_ArrCh[ dbtCommndCode ] =
Received_Data_Bytes_ArrCh[ dbtCommndCode ]; // cmdMoveToEndSnsr;
Transmited_Data_Bytes_ArrCh[ dbtDataAmount ] = 1;

if (Received_Data_Bytes_ArrCh[ dbtCommndCode ] == cmdMoveXSteps )
{
Transmited_Data_Bytes_ArrCh[ dbtFirstData ] = erHWSensor; // 01 - граничный геркон
}
else
{
if ( End_Sens_flag_Reg_uSh & Dvr3_HWSens_Mask_Sh )
{
Transmited_Data_Bytes_ArrCh[ dbtFirstData ] = erHWSensor; // 01 - граничный геркон
}
else
{
Transmited_Data_Bytes_ArrCh[ dbtFirstData ] = erNoError;

}
} // не по шагам ехали
// Transmited_Data_Bytes_ArrCh[ dbtCommndCode ] =
// cmdMoveToEndSnsr;
}
else
//evntStepStopping
{ Transmited_Data_Bytes_ArrCh[ dbtCommndCode ] =
cmdMoveXSteps;
Transmited_Data_Bytes_ArrCh[ dbtDataAmount ] = 1;
Transmited_Data_Bytes_ArrCh[ dbtFirstData ] = 0;
}
Response_Formation( erNoError );
// очистка процессинга задачи для полученной задачи
Dvr3_Flag_Reg_Ch = 0;
}

__enable_interrupt();

// при пропускании задачи устанавливается флаг
if ( Packet_Trans_Task_Flag_Ch == 1 )
{
//передача пакета
Transmit_Packet();
// очистка процессинга задачи для полученной задачи
Packet_Trans_Task_Flag_Ch = 0;
}

}

}
Вложения
Тип файла: doc PUM4.doc (46.5 Кб, 6 просмотров)

Последний раз редактировалось Stasy_BMT; 09.06.2012 в 20:26.
Stasy_BMT вне форума Ответить с цитированием
Старый 09.06.2012, 14:24   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Код сюда выкладываем, а не прикрепляем файлом.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему вылетает игра? blacktener Общие вопросы C/C++ 5 21.07.2011 23:50
Почему вылетает ошибка Read beyond end of file? KoBRaAndrey Общие вопросы Delphi 4 24.01.2010 11:24
почему вылетает ошибка при передачи файлов через цокет leonw Работа с сетью в Delphi 6 19.01.2010 22:16
не могу найти почему вылетает прога Андрей Куб Общие вопросы Delphi 19 28.04.2009 06:54
Не могу понять почему вылетает 3 процедурка, помогите Taisja Помощь студентам 2 04.06.2008 21:28