// Termin 3 Aufgabe 2 #include "../h/aic.h" #include "../h/pmc.h" #include "../h/pio.h" #define CYCLE_COUNT_MAX 1000 #define NB_CYCLES 2 int main(void) { StructPMC* pmcbase = PMC_BASE; // Basisadresse des PMC StructPIO* piobaseB = PIOB_BASE; // Basisadresse der PIOB pmcbase->PMC_PCER = 1 << PIOB_ID; // Peripheral Clock Enable Register fuer Status-Abfrage piobaseB->PIO_PER = ALL_LEDS; piobaseB->PIO_OER = ALL_LEDS; piobaseB->PIO_SODR = ALL_LEDS; // clear all LEDs piobaseB->PIO_CODR =LED1; // set LED DS1 (linke LED) at91_reg actStutusReg_pioB = piobaseB->PIO_ODSR; // read Output Data Status Register unsigned int actCount = 0; int i = 0; for (i = 0; i < NB_CYCLES ; ) { actCount++; if ( 0 == actCount%CYCLE_COUNT_MAX ) // reached max cycle count { // set LED piobaseB->PIO_CODR = LED1; // read Output Data Status Register actStutusReg_pioB = piobaseB->PIO_ODSR; // reset cycle count actCount = 0; // increment cycles i++; } if ( CYCLE_COUNT_MAX/2 == actCount%CYCLE_COUNT_MAX ) // reached half cycle count { // clear LED piobaseB->PIO_SODR = LED1; // read Output Data Status Register actStutusReg_pioB = piobaseB->PIO_ODSR; } } return 0; }