|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.06.2012, 13:11 | #1 |
Регистрация: 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; } } } Последний раз редактировалось Stasy_BMT; 09.06.2012 в 20:26. |
09.06.2012, 14:24 | #2 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
Код сюда выкладываем, а не прикрепляем файлом.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
почему вылетает игра? | 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 |