// Callbacks //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ //! \brief Callback invoked during the initialization of the USB driver //! //! Configures and enables USB controller and VBus monitoring interrupts //! \param pUsb Pointer to a S_usb instance //------------------------------------------------------------------------------ static void CBK_Init(const S_usb *pUsb) { // Configure and enable the USB controller interrupt AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, USB_GetDriverID(pUsb), AT91C_AIC_PRIOR_LOWEST, 0, //AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, ISR_Driver); AT91F_AIC_EnableIt(AT91C_BASE_AIC, USB_GetDriverID(pUsb)); #ifndef USB_BUS_POWERED // Configure VBus monitoring BRD_ConfigureVBus(USB_GetDriverInterface(pUsb)); // Configure and enable the Vbus detection interrupt AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_VBUS, AT91C_AIC_PRIOR_LOWEST, 0, //AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, ISR_VBus); AT91F_PIO_InterruptEnable(AT91C_PIO_VBUS, AT91C_VBUS); AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_VBUS); #else // Power up the USB controller USB_Attach(pUsb); #endif }
void GPIO_device_init_base(void) { // Enable the peripheral clock. AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, (1 << AT91C_ID_PIOA) | (1 << AT91C_ID_IRQ0)); portENTER_CRITICAL(); AT91PS_AIC pAic; pAic = AT91C_BASE_AIC; AT91F_PIO_InterruptEnable(AT91C_BASE_PIOA,PIO_PUSHBUTTON_SWITCH); AT91F_AIC_ConfigureIt ( pAic, AT91C_ID_PIOA, PUSHBUTTON_INTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, gpio_irq_handler); AT91F_AIC_EnableIt (pAic, AT91C_ID_PIOA); portEXIT_CRITICAL(); }
char SPI_RFM12_Execute(char *Buffer_Tx, char *Buffer_Rx) { int Order= Buffer_Tx[0] | Buffer_Tx[1]<<8; //Je�eli uk�ad RF12 w trakcie inicjalizacji pierwotnej--------------------- cztmp[0]=RF_SetFreqReg(0); if (RF_Status.Init) { RF_Status.Ch=0; if (Order==0x80E7) { if (RF_Status.EnRx) RF_Status.EnableRX(); else RF_Status.EnableTX(); } //Rozkaz: 0x80E7 - EL,EF,868band,12.0pF if ((Order==0x8299) || (Order==0x8239) ) { SPI_SendWord(0xA000 | RF_SetFreqReg(RF_Status.Ch),Cs_RF); } //Rozkaz: 0xA6xx Cz�stotliwo�� bazowa (Kana� 0) - oryginalnie by�o 0xA640 - 868,0Mhz if (Order==(0xA000 | RF_SetFreqReg(RF_Status.Ch))) { SPI_SendWord(0xC607,Cs_RF); } //Rozkaz: 0xC607 Szybko�� transmisji 43kb/s - oryginalnie by�o 0xC647 - 4,8kb/s if (Order==0xC607) { SPI_SendWord(0x94A0,Cs_RF); } //Rozkaz: 0x94A0 VDI,FAST,134kHz,0dBm,-103dBm if (Order==0x94A0) { SPI_SendWord(0xC2AC,Cs_RF); } //Rozkaz: 0xC2AC AL,!ml,DIG,DQD4 if (Order==0xC2AC) { SPI_SendWord(0xCA81,Cs_RF); } //Rozkaz: 0xCA81 FIFO8,SYNC,!ff,DR if ((Order==0xCA81) && (IntCA81Flag==0)) { SPI_SendWord(0xCED4,Cs_RF); IntCA81Flag=1; Order=0xFFFF;} //Rozkaz: 0xCED4 ustawienie s�owa synchronizacyjnego na 0x2DD4 if (Order==0xCED4) { SPI_SendWord(0xC493,Cs_RF); } //Rozkaz: 0xC493 @PWR, AFC:-80+75Khz ,!st,!fi,OE,EN - oryginalnie 0xC483 @PWR,AFC - NO RSTRIC,!st,!fi,OE,EN if (Order==0xC493) { SPI_SendWord(0x9850,Cs_RF); } //Rozkaz: 0x9850 !mp,dewiacja +-90kHz ,MAX OUT if (Order==0x9850) { SPI_SendWord(0xCC17,Cs_RF); } //Rozkaz: 0xCC17 OB1�COB0, LPX,�Iddy�CDDIT�C if (Order==0xCC17) { SPI_SendWord(0xE000,Cs_RF); } //Rozkaz: 0xE000 if (Order==0xE000) { SPI_SendWord(0xC800,Cs_RF); } //Rozkaz: 0xC800 if (Order==0xC800) { SPI_SendWord(0xC040,Cs_RF); } //Rozkaz: 0xC040 1.66MHz,2.2V if (Order==0xC040) { SPI_SendWord(0xCA81,Cs_RF); } //Rozkaz: 0xCA81 Start fifo RX if ((Order==0xCA81) && (IntCA81Flag==1)) { SPI_SendWord(0xCA83,Cs_RF); } //Rozkaz: 0xCA83 Restart fifo RX if (Order==0xCA83) { RF_Status.EnRx=1; RF_Status.Init=0; //ustawienie przerwania ConfigureRFBus(); // Configure and enable the Vbus detection interrupt AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, ID_RfIntBUS, RF_INT_PRIOR, //AT91C_AIC_PRIOR_LOWEST, AT91C_AIC_PRIOR_HIGHEST 3,//AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, RF_Int); AT91F_PIO_InterruptEnable(PIO_RfIntBUS, RfIntBUS); AT91F_AIC_EnableIt(AT91C_BASE_AIC, ID_RfIntBUS); } }//Aktywny RX --------------------------------------------------------------- else if ((RF_Status.EnRx) && (RF_Status.Init==0)) { if ((Order==0x0000) && (Buffer_Rx[1]&0x80)) { SPI_SendWord(0xB000,Cs_RF); } if (Order==0xCA81) { SPI_SendWord(0xCA83,Cs_RF); } if (Order==0xCA83) { SPI_SendWord(0x0000,Cs_RF); } if (Order==0xB000) { RF_ReciveByte(Buffer_Rx[0]); } }//Aktywny TX --------------------------------------------------------------- else if (RF_Status.EnTx) { /* if ((RF_Status.Transmit==0) && (Order==0x0000)) { RF_Status.Transmit=1; RF_transmit(); } */ if ((RF_Status.Transmit==0) && (Order==0x0000)) { //TRACE_INFO("Tx %X \n\r ", Buffer_Rx[1]); if (Buffer_Rx[1]&0x20) { SPI_SendWord(0x0000,Cs_RF); } else { RF_Status.Transmit=1; RF_transmit(); } } } //W��czenie Odbiornika else if ((RF_Status.EnRx==0) && (RF_Status.EnTx==0) && (Order==0x8299)) { RF_Status.EnRx=1; SPI_SendWord(0x0000,Cs_RF); } //W��czenie Nadajnika else if ((RF_Status.EnRx==0) && (RF_Status.EnTx==0) && (Order==0x8239)) { for (int aaa=0; aaa<0x5FF; aaa++) asm( "nop" ); //u�pienie ~200us - wymagany czas prze��czenia z odbiornika na nadajnik RF_Status.EnTx=1; if (RF_Tx.BytesToSend>0) { RF_transmit(); } } } _RF_Command *pRF_Command;