Esempio n. 1
0
/**************************************************************************//**
\brief Startup initialization.
******************************************************************************/
void hwInitUsbFifo(void)
{
  // init decoder input pins
  GPIO_PD6_make_out();
  GPIO_PD7_make_out();
  // set pins to zero to select usb FIFO
  GPIO_PD6_clr();
  GPIO_PD7_clr();

  // setup default value
  GPIO_RD_set();
  GPIO_WR_set();
  // init R\W pins
  GPIO_RD_make_out();
  GPIO_WR_make_out();

  // init message pins
  GPIO_TXE_make_in();
  GPIO_RXF_make_in();

  USB_DATA_DDR = 0;
  //to avoid IAR warnings
  (void)GPIO_PD6_set;
  (void)GPIO_PD6_read;
  (void)GPIO_PD7_set;
  (void)GPIO_PD7_read;
  (void)GPIO_RD_read;
  (void)GPIO_WR_read;
  (void)GPIO_TXE_set;
  (void)GPIO_TXE_clr;
  (void)GPIO_TXE_make_out;
  (void)GPIO_RXF_set;
  (void)GPIO_RXF_clr;
  (void)GPIO_RXF_make_out;
}
Esempio n. 2
0
/**************************************************************************//**
\brief Receive byte from usb FIFO.

\param[out]
  p - pointer to byte memory;

\return
    true - there is received byte; \n
    false - there is not received byte;
******************************************************************************/
bool getByteUsbFifo(uint8_t *p)
{
  if (!GPIO_RXF_read())
  {
    GPIO_RD_clr();
    NOP;
    *p = USB_DATA_PIN;
    GPIO_RD_set();
    return true;
  }

  return false;
}
Esempio n. 3
0
/**************************************************************************//**
\brief Puts the byte received to the cyclic buffer.
******************************************************************************/
static void usbfifoRxBufferFiller(void)
{
  uint16_t           old;
  uint16_t           poW;
  uint16_t           poR;
  uint8_t           *buffer;
  HalUsartService_t *control;

  if (!usbfifoPointDescrip)
  { // unregistered intrrupt is occurred
    HAL_DisableIrq(IRQ_7);
    return;
  }

  control = &usbfifoPointDescrip->service;
  poW = control->rxPointOfWrite;
  poR = control->rxPointOfRead;
  buffer = usbfifoPointDescrip->rxBuffer;

  if (!buffer)
  {
    HAL_DisableIrq(IRQ_7);
    return;
  }

  old = poW;

  if (++poW == usbfifoPointDescrip->rxBufferLength)
    poW = 0;

  if (poW == poR)
  { // Buffer full.
    HAL_DisableIrq(IRQ_7);
    return;
  } // Buffer full.

  control->rxPointOfWrite = poW;
  GPIO_RD_clr();
  NOP;
  buffer[old] = USB_DATA_PIN;
  GPIO_RD_set();
  control->rxBytesInBuffer++;
  usbfifoPostTask(USB_FIFO_TASK_RX);
}
/**************************************************************************//**
\brief Startup initialization.
******************************************************************************/
void hwInitUsbFifo(void)
{
  // init decoder input pins
  GPIO_PD6_make_out();
  GPIO_PD7_make_out();
  // set pins to zero to select usb FIFO
  GPIO_PD6_clr();
  GPIO_PD7_clr();

  // setup default value
  GPIO_RD_set();
  GPIO_WR_set();
  // init R\W pins
  GPIO_RD_make_out();
  GPIO_WR_make_out();

  // init message pins
  GPIO_TXE_make_in();
  GPIO_RXF_make_in();

  USB_DATA_DDR = 0;
}
Esempio n. 5
0
/**************************************************************************//**
\brief Startup initialization.
******************************************************************************/
void usbfifoInit(void)
{
  // init decoder input pins
  GPIO_PC6_make_out();
  GPIO_PC7_make_out();
  // set pins to zero to select usb FIFO
  GPIO_PC6_clr();
  GPIO_PC7_clr();

  // setup default value
  GPIO_RD_set();
  GPIO_WR_set();
  // init R\W pins
  GPIO_RD_make_out();
  GPIO_WR_make_out();

  // register RXF interrupt
  HAL_RegisterIrq(IRQ_7, IRQ_LOW_LEVEL, usbfifoRxBufferFiller);
  // register TXE interrupt
  HAL_RegisterIrq(IRQ_6, IRQ_LOW_LEVEL, usbfifoTxBufferCleaner);

  USB_DATA_DDR = 0;
}