/*============================================================================== System : INTRA S/W Copyright 2008.. ================================================================ BRUSAG, Sensorik & messtechn. ph: +41 44 926 74 74 Entwicklungen, fx: +41 44 926 73 34 Chapfwiesenstr. 14 em: rbrusa@brusag.ch CH-8712 Staefa (Switzerland) http://www.brusag.ch ================================================================================ SWSystem: eCOS and toolchain arm-elf-gcc (GCC) 3.2.1 (eCosCentric) Target: INTRA Controller with AT91SAM7X-256 Abstract: Definitions for the INTRA-target und initialization routine for the ports and peripherals as used by the INTRA-target. See also /from_eva/PIOs_1.ods for more details. -------------------------------------------------------------------------------- Edit history: 23-Sep-08 RWB: Creation - based on Olis input 15-Okt-08 RWB: clock for TC1 added */ // Board-Initialization routine. It configures pins as used by the INTRA-target. //#include #include "ihw.h" bool done = false; // cyg_uint32 mist; void Iniihw( void ) { if ( done ) return; done = true; // enable peripheral clocks HAL_WRITE_UINT32(AT91_PMC + AT91_PMC_PCER, AT91_PMC_PCER_PWMC | AT91_PMC_PCER_PIOA | AT91_PMC_PCER_PIOB); // HAL_WRITE_UINT32(AT91_PMC + AT91_PMC_PCER, AT91_PMC_PCER_PIOA | AT91_PMC_PCER_PIOB); #if PROTOB HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_PPUDR,~0x00030000); //nicht pullup HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_PPUER, 0x00030000); //pullup #else HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_PPUDR,~0x00000000); //nicht pullup HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_PPUER, 0x00000000); //pullup #endif // set output data register HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_CODR, ~0x00000000); //out low HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_SODR, 0x00000000); //out high // select output enable of PIO-controlled pins HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_ODR, ~0x4000080C); //PIO out dis HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_OER, 0x4000080C); //PIO out ena // select peripheral a or b - actually all non-PIO on A are peripheral a HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_ASR, 0x20071063); //peripherie A // HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_BSR, 0x00000000); //peripherie B // select which goes out: PIO or peripheral a/b HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_PDR, 0x20071063); //nicht PIO HAL_WRITE_UINT32(AT91C_BASE_PIOA + AT91_PIO_PER, ~0x20071063); //PIO HAL_WRITE_UINT32(AT91C_BASE_PIOB + AT91_PIO_PPUDR,~0x00000000); //not pullup HAL_WRITE_UINT32(AT91C_BASE_PIOB + AT91_PIO_PPUER, 0x00000000); //pullup HAL_WRITE_UINT32(AT91C_BASE_PIOB + AT91_PIO_CODR, 0x00000000); //out low HAL_WRITE_UINT32(AT91C_BASE_PIOB + AT91_PIO_SODR, 0x00000000); //out high HAL_WRITE_UINT32(AT91C_BASE_PIOB + AT91_PIO_ODR, ~0x00780000); //not out HAL_WRITE_UINT32(AT91C_BASE_PIOB + AT91_PIO_OER, 0x00780000); //OUT HAL_WRITE_UINT32(AT91C_BASE_PIOB + AT91_PIO_ASR, 0x02FBFFFF); //peripherie A // HAL_WRITE_UINT32(AT91C_BASE_PIOB + AT91_PIO_BSR, 0x00000000); //peripherie B HAL_WRITE_UINT32(AT91C_BASE_PIOB + AT91_PIO_PDR, 0x02FBFFFF); //nicht PIO HAL_WRITE_UINT32(AT91C_BASE_PIOB + AT91_PIO_PER, ~0x02FBFFFF); //PIO } // end Iniihw