/********************************************************************
* 名    称:InitPIO()
* 功    能:初始化LED_PIO为输出,KEY为输入,开中断,清边沿捕获寄存器
* 入口参数:无
* 出口参数:无
********************************************************************/
void InitPIO(void)
{ 
/* 初始化LED_PIO为输出,KEY为输入 */
IOWR_ALTERA_AVALON_PIO_DIRECTION(LED_PIO_BASE, LEDCON);
IOWR_ALTERA_AVALON_PIO_DIRECTION(KEY_PIO_BASE, 0x00);
/* 开KEY的中断 */
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_PIO_BASE, KEYCON);
/* 清边沿捕获寄存器 */ 
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_PIO_BASE, 0x00);
/* 注册中断服务子程序 */
alt_irq_register(KEY_PIO_IRQ, NULL, KeyDown_interrupts); 
}
void trigger_reset()
{
  /* Drive a 0 out to the configuration PLD reconfig_request pin. */
  IOWR_ALTERA_AVALON_PIO_DATA( RECONFIG_REQUEST_PIO_BASE, 0x0 );
  /* Set BIDIR PIO to drive out. */
  IOWR_ALTERA_AVALON_PIO_DIRECTION( RECONFIG_REQUEST_PIO_BASE, 1 );
  usleep ( 1000000 );
  /* Drive out a 1....probably won't reach this point!!! */
  IOWR_ALTERA_AVALON_PIO_DATA( RECONFIG_REQUEST_PIO_BASE, 0x1 );
}
Exemple #3
0
Fichier : SCCB.c Projet : wzw/D3
 /*   SDA _________--------
      SCL ____------------- */
void stopSCCB(void)
{
    IOWR_ALTERA_AVALON_PIO_DIRECTION(SDA_BASE, OUT);  
    SIO_D_CLR;
    usleep(DELAY_TIME);
    SIO_C_SET;
    usleep(DELAY_TIME);
    SIO_D_SET;
    usleep(DELAY_TIME);
}
Exemple #4
0
 int main() {
	int input = 'A';
	int i;

	while (input != 'E') {
		alt_putstr("\n");
		alt_putstr("\nTo READ type 'R' and press enter.\n");
		alt_putstr("\nTo WRITE type 'W' and press enter.\n");
		alt_putstr("\nTo exit the program, enter 'E'\n");
		input = alt_getchar();

		if (input == 'R') {
			*enable = 0x0;
			*readWrite = 0x1; // read
			for (i = 0; i < 128; i++) {
				IOWR_ALTERA_AVALON_PIO_DIRECTION(*data, 0xFF);
				(*address) = i;
				*leds = *data;
				alt_printf("%x \n", *data);
				usleep(1000);
			}
			input = 'A';
			alt_printf("Read complete\n");

		} else if (input == 'W') {
			*enable = 0x0;
			*readWrite = 0x0; // write
			IOWR_ALTERA_AVALON_PIO_DIRECTION(*data, 0x00000000);

			for (i = 0; i < 128; i++) {
				*address = i;
				*data = 0x00000000;
				*data = 127 - i;
				alt_printf("%x\n", *data);
			}
			input = 'A';
		}
	}

	return 0;
}
Exemple #5
0
Fichier : SCCB.c Projet : wzw/D3
void startSCCB(void)
{
    IOWR_ALTERA_AVALON_PIO_DIRECTION(SDA_BASE, OUT);
    SIO_D_SET;     //数据线高电平
    usleep(DELAY_TIME);
    SIO_C_SET;     //在时钟线高的时候数据线由高至低
    usleep(DELAY_TIME);
 
    SIO_D_CLR;
    usleep(DELAY_TIME);

    SIO_C_CLR;   //数据线恢复低电平,单操作函数必要
    usleep(DELAY_TIME);
}
Exemple #6
0
Fichier : SCCB.c Projet : wzw/D3
/*   SDA ____zzzzzzzzzzzzz
      SCL ____------_______ */
void noAck(void)
{
    IOWR_ALTERA_AVALON_PIO_DIRECTION(SDA_BASE, IN);
    
    SIO_D_SET;
    usleep(DELAY_TIME);
    
    SIO_C_SET;
    usleep(DELAY_TIME);
    
    SIO_C_CLR;
   usleep(DELAY_TIME);
    
    SIO_D_CLR;
    usleep(DELAY_TIME);
}
int main()
{
	IOWR(SEVENSEG0_BASE, 0, 0);

	I2C_init(I2C0_BASE, ALT_CPU_CPU_FREQ, 400000);

	// Initialize Audio CODEC
	write_wm(0xF, 0);  // reset
	write_wm(2, 0x79 << 0); // L volume +6db
	write_wm(3, 0x79 << 0); // R volume +6db
	write_wm(4, (1 << 1) | (1 << 4)); // mic mute, DAC select
	write_wm(5, 0); // no DAC mute
	write_wm(6, 0);  // power up
	write_wm(7, 2 | (1 << 6) | (0 << 2) | (2 << 0)); // I2S, 16 bit, Master
	write_wm(8, 1 | (1 << 1) | (8 << 2) | (1 << 0)); // usb mode, 272fs, 44.1 Khz
	write_wm(9, 1); // activate

	// build waveform template (two periods of sine wave)
	int fs = 12000000/272; // 44.1k
	int t = 0;
	int f = 1000;
	int w = 2*31415*f / 10000;
	int A = 16000;
	int offset = 0;

	IOWR(AUDIO0_BASE, 4, 0); // CMD_ADDR - fifo_clear

	for(t=0; t<MAX_SAMPLES; t++)
	{
		// t en periodos de sampling
		// t * 1/fs es tiempo
		int y = (int)(A*sinf(w*t/(float)fs)) + offset;
		wave[t] = y;
	}

	// Fill SDRAM
	size_t block = 7*1024*1024;
	uint8_t* ptr = (uint8_t*)malloc(block); // 7MB

	for(t=0; t<block; t+=4)
	{
		uint32_t* p = (uint32_t*)(ptr + t);
		*p = (uint32_t)(wave[t/4] << 16) | wave[t/4];
	}

	IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO0_BASE, ALTERA_AVALON_PIO_DIRECTION_INPUT);

	t = 0;
	while(true)
	{
		if((IORD(PIO0_BASE, 0) & 0x1) == 0)
		{
			IOWR(SEVENSEG0_BASE, 0, 1);

			if( IORD(AUDIO0_BASE,5) & 0x1 ) continue; // STATUS_ADDR

			if(t >= MAX_SAMPLES) t = 0;
			int y = wave[t++];
			IOWR(AUDIO0_BASE, 0, y); // DAC_LFIFO_ADDR
			IOWR(AUDIO0_BASE, 1, y); // DAC_RFIFO_ADDR
		}
		else
		{
			IOWR(SEVENSEG0_BASE, 0, 2);
		}
	}

	return 0;
}
Exemple #8
0
void vParTestInitialise( void )
{
	IOWR_ALTERA_AVALON_PIO_DIRECTION( LED_PIO_BASE, ALTERA_AVALON_PIO_DIRECTION_OUTPUT );
	ulLedStates = 0;    
}
/*****************************************************************************
*                                                                            *
* Function    : Initilise_Keypad                                             *
* Author      : Queron Williams                                              *
* Date        : 02/03/2014                                                   *
* Inputs      : N/A                                                          *
* Outputs     : N/A                                                          *
* Description : Sets up the keypad ready for use by enabling PORTA to        *
*               be used as an input                                          *
*                                                                            *
******************************************************************************/
void Initilise_Keypad()
{
	/* set portA to be used as an input */
	IOWR_ALTERA_AVALON_PIO_DIRECTION(PORT_A_BASE, ALTERA_AVALON_PIO_DIRECTION_INPUT);
}