static void GPIO_device_init_port(unsigned int port, unsigned int mode)
{
    unsigned int portMask = 0;
    switch(port) {
    case 0:
        portMask = GPIO_1;
        break;
    case 1:
        portMask = GPIO_2;
        break;
    case 2:
        portMask = GPIO_3;
        break;
    default:
        break;
    }

    if (mode == MODE_INPUT) {
        AT91F_PIO_CfgInput(AT91C_BASE_PIOA, portMask);
        AT91C_BASE_PIOA->PIO_PPUDR = portMask; //disable pullup
        AT91C_BASE_PIOA->PIO_IFER = portMask; //enable input filter
    } else {
        AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, portMask );
        AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, portMask );
    }
}
Exemple #2
0
/*
 * Disable the PIO assignments for the DBGU
 */
void AT91F_DBGU_Fini(void)
{
	((AT91PS_USART) AT91C_BASE_DBGU)->US_CR = AT91C_US_RXDIS | AT91C_US_TXDIS;
	AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, AT91C_PA10_DTXD);
	AT91F_PIO_CfgInput(AT91C_BASE_PIOA, AT91C_PA9_DRXD);
	// Maybe FIXME, do more? -- Henryk Plötz <*****@*****.**>
}
static void GPIO_device_init_pushbutton(void)
{
    AT91F_PIO_CfgInput(AT91C_BASE_PIOA, PIO_PUSHBUTTON_SWITCH);
    AT91C_BASE_PIOA->PIO_PPUER = PIO_PUSHBUTTON_SWITCH; //enable pullup
    AT91C_BASE_PIOA->PIO_IFER = PIO_PUSHBUTTON_SWITCH; //enable input filter
    AT91C_BASE_PIOA->PIO_MDER = PIO_PUSHBUTTON_SWITCH; //enable multi drain
}
void _init_func(void)
{
	DEBUGPCR("\r\n===> main_pwm <===\r\n");
	help();

	rc632_init();
	DEBUGPCRF("turning on RF");
	rc632_turn_on_rf(RAH);

	/* switch PA17 (connected to MFIN on board) to input */
	AT91F_PIO_CfgInput(AT91C_BASE_PIOA, AT91C_PIO_PA17);

	DEBUGPCRF("Initializing carrier divider");
	tc_cdiv_init();

	DEBUGPCRF("Initializing PWM");
	pwm_init();
	pwm_freq_set(0, 105937);
	pwm_start(0);
	pwm_duty_set_percent(0, 22);	/* 22% of 9.43uS = 2.07uS */
	rc632_modulate_mfin();

#ifdef SSC
	DEBUGPCRF("Initializing SSC RX");
	ssc_rx_init();
#endif
}
void nRFLL_Init(void)
{
    AT91F_PIO_SetOutput  (AT91C_BASE_PIOA,CSN_PIN);
    AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,        CE_PIN|MOSI_PIN|SCK_PIN);    
    AT91F_PIO_CfgOutput  (AT91C_BASE_PIOA,CSN_PIN|CE_PIN|MOSI_PIN|SCK_PIN);
    AT91F_PIO_CfgInput   (AT91C_BASE_PIOA,MISO_PIN);
}
Exemple #6
0
void ConfigureRFBus(void)
{
#if !defined(IR_RF_DEF)
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << ID_RfIntBUS);
    AT91F_PIO_CfgPullup(IR_PIO_BUS, ~RfIntBUS);
    AT91F_PIO_CfgInput(IR_PIO_BUS, RfIntBUS);
#endif
}
Exemple #7
0
void
PtCmdInit (void)
{
	/* enable firmware defaults button */
	AT91F_PIO_CfgInputFilter (EXT_BUTTON_PIO, EXT_BUTTON_PIN);
	AT91F_PIO_CfgInput (EXT_BUTTON_PIO, EXT_BUTTON_PIN);

	/* enable power LED */
	led_set_red (1);

	xTaskCreate (vCmdTask, (signed portCHAR *) "CMD", TASK_CMD_STACK, NULL,
				 TASK_CMD_PRIORITY, NULL);
}
unsigned char nRFCMD_Init(void)
{
    volatile int dummy;
    const int SCBR = ((int)(MCK / 8e6) + 1)&0xFF;
    
    nRFCMD_Macro=nRFCMD_MacroResult=NULL;

    vSemaphoreCreateBinary(xnRF_SemaphoreDMA);
    vSemaphoreCreateBinary(xnRF_SemaphoreACK);
    if(!(xnRF_SemaphoreDMA && xnRF_SemaphoreACK))
	return 1;

    xSemaphoreTake(xnRF_SemaphoreDMA,0);
    xSemaphoreTake(xnRF_SemaphoreACK,0);

    AT91F_SPI_CfgPMC();
    AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, NRF_SPI_PINS_PERIPHERAL_A, NRF_SPI_PINS_PERIPHERAL_B);
    AT91F_PIO_CfgInput(AT91C_BASE_PIOA, IRQ_PIN);
    AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, CE_PIN);
    AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, CE_PIN);  

    portENTER_CRITICAL();
    
    /* CPOL = 0, NCPHA = 1, CSAAT = 0, BITS = 0000, SCBR = <8MHz, 
     * DLYBS = 0, DLYBCT = 0 */
    AT91C_BASE_SPI->SPI_MR = AT91C_SPI_MSTR | AT91C_SPI_PS_FIXED;
    AT91F_SPI_CfgCs(AT91C_BASE_SPI, 0, AT91C_SPI_BITS_8|AT91C_SPI_NCPHA|(SCBR<<8));
    AT91F_SPI_Enable(AT91C_BASE_SPI);

    AT91F_AIC_ConfigureIt(AT91C_ID_SPI, 4, AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE, nRFCMD_ISR_DMA );
    AT91C_BASE_SPI->SPI_IER = AT91C_SPI_ENDTX;

    /* Enable PIO interrupt for IRQ pin */
    AT91F_AIC_ConfigureIt(AT91C_ID_PIOA, 3, AT91C_AIC_SRCTYPE_HIGH_LEVEL, nRFCMD_ISR_ACK );    
    /* reset IRQ status */
    dummy = AT91C_BASE_PIOA->PIO_ISR;
    AT91C_BASE_PIOA->PIO_IER = IRQ_PIN;
    
    AT91C_BASE_AIC->AIC_IECR = (0x1 << AT91C_ID_SPI) | (0x1 << AT91C_ID_PIOA) ;
    
    portEXIT_CRITICAL();
    
    return 0;
}
static inline void prvSetupHardware (void)
{
    /*	When using the JTAG debugger the hardware is not always initialised to
	the correct default state.  This line just ensures that this does not
	cause all interrupts to be masked at the start. */
    AT91C_BASE_AIC->AIC_EOICR = 0;

    /*	Enable PIOA outputs. */
    AT91F_PIO_CfgInput ( AT91C_BASE_PIOA, IRQ_PIN  );
    AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_MASK );
    AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_MASK );

    /*	Enable the peripheral clock. */
    AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA;
    AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOB;

    unsigned char nid[5] = DEFAULT_NID;
    ob_init( 1, 2, DEFAULT_CHANNEL, nid );

    /* Initialization done - Turn on green LED */
    AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_GREEN );
    AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_RED );
}
Exemple #10
0
//*--------------------------------------------------------------------------------------
//* Function Name       : Main
//* Object              : Software entry point
//* Input Parameters    : none.
//* Output Parameters   : none.
//*--------------------------------------------------------------------------------------
int main(void)
{
    char data[MSG_SIZE];
    unsigned int length;
    int stepCnt = 0;
    unsigned char str[10];

    /**** System init ****/
    //InitFrec();
    Init_CP_WP();
    //chek for CP and WP
    //CP - card present
    while(((AT91C_BASE_PIOA->PIO_PDSR) & BIT15)) { /*put your card present event here*/  }
    //WP - write protect
    //while(((AT91C_BASE_PIOA->PIO_PDSR) & BIT16)) { /*put your write protect event here*/ }

    if (initMMC() == MMC_SUCCESS)
    {
        //card_state |= 1;
        memset(&mmc_buffer,0,512);
        mmcReadRegister (10, 16);
        mmc_buffer[7]=0;
    }


    flashInit();

    Init_PWM();

    // Enable User Reset and set its minimal assertion to 960 us
    AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5<<24);
    // Led init
    // First, enable the clock of the PIOB
    AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ;
    //* to be outputs. No need to set these pins to be driven by the PIO because it is GPIO pins only.
    AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, OUTPUT_MASK );
    //* Clear the LED's.
    /*
    AT91F_PIO_SetOutput( AT91C_BASE_PIOA, OUTPUT_MASK );
    AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, OUTPUT_MASK );
    */


    // Init USB device
    AT91F_USB_Open();
    AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, OUTPUT_MASK );
    // Init USB device
    // Wait for the end of enumeration
    setForce(40000);
    int pCDCEnablingCounter = 0;
    while (!pCDC.IsConfigured(&pCDC) && pCDCEnablingCounter < 2500000){ pCDCEnablingCounter++; };

    if (pCDCEnablingCounter < 2500000)
    {
        CDC = 1;
    }

    setForce(0);

    // Set Usart in interrupt
    //Usart_init();

    //Read and set settings
    memcpy(settings, OUR_FLASH_ADDR, 128);
    int i;memset(&mmc_buffer, 0x00, 512);
    int j;
    char *settingsBlocks[50];
    char settingsDelim[] = "~";
    char *settingsParts = strtok( settings, settingsDelim );
    i = 0;
    while( settingsParts != NULL )
    {
      settingsBlocks[i++] = settingsParts;
      settingsParts = strtok( NULL, settingsDelim );
    }
    for (j = 0; j < i; j++)
    {
       parseSettings(settingsBlocks[j]);
    }

    InitADC();

    Init_PWM();

    AT91F_PIO_CfgInput(AT91C_BASE_PIOA, SW1_MASK);
    AT91F_PIO_CfgInput(AT91C_BASE_PIOA, SW2_MASK);

    AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_GREEN);
    AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_YELLOW);
    setForce(0);

    //startBlinking(250000);

    /**** MMC CARD ****/

    init_extint();


    while (1)
    {
        cnt++;
        if (cnt > 50000)
        {
            cnt = 0;
            printTrace("COUNTER RESET\n");
        }
    }
}