ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
2 июня
239429 Топик полностью
VLAD (17.02.2011 10:54, просмотров: 1) ответил VLAD на Пытаюсь сделать обработку сообщений с uart через очереди uc/Os-II на NiOS II. В очередь кладутся верные значения,а вот извлекают сообщения "0", хотя их количество уменьшается после извлечения. Например по прерываниям от uart пришли
Пытаюсь сделать обработку сообщений с uart через очереди uc/Os-II. В очередь кладутся верные значения,а вот извлекают сообщения "0", хотя их количество уменьшается после извлечения. Например по прерываниям от uart пришли сообщения 45 B0 F1, всего 3 сообщения. при чтении из очереди я 3 раза прочитаю 0. Подскажите что делаю не так.#include #include #include #include #include #include "includes.h"#include "alt_ucosii_simple_error_check.h"#include "altera_avalon_pio_regs.h"#include "altera_avalon_sgdma_regs.h"#include "altera_avalon_sgdma.h"#include "altera_avalon_sgdma_descriptor.h"#include "altera_avalon_uart_regs.h"/* Definition of Task Stacks */#define TASK_STACKSIZE 2048OS_STK receive_uart_task_stk[TASK_STACKSIZE];/* Definition of Task Prioities */#define INITIALIZE_TASK_PRIORITY 6#define RECEIVE_UART_PRIORITY 12/* Definition of Message Queue */#define MSG_QUEUE_SIZE 30 /*Size of message queue used in example*/OS_EVENT *msgqueue; /*Message queue pointer */void *msgqueueTbl[MSG_QUEUE_SIZE];/*Storage for messages*//* Local Function Prototypes */int initOSDataStructs(void);int initCreateTasks(void);void uart_send_task(void* pdata){INT8U return_code = OS_NO_ERR;unsigned int msg = 0;OS_Q_DATA queue_data;unsigned short status;status = IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE);if( status & ALTERA_AVALON_UART_CONTROL_RRDY_MSK) {msg = IORD_ALTERA_AVALON_UART_RXDATA(UART_0_BASE);return_code = OSQQuery(msgqueue, &queue_data);alt_ucosii_check_return_code(return_code);printf("in msg=%x, num=%d\n",msg,queue_data.OSNMsgs);if(queue_data.OSNMsgs