Hi all, I'm having a real pain in the ass trying to just READ a button input from the Olimex at91sam7s256 proto board! Here is the simple code! volatile AT91PS_PIO pPIO = AT91C_BASE_PIOA; // pointer to PIO data structure #define output_low(mask) (pPIO->PIO_CODR=mask) #define output_high(mask) (pPIO->PIO_SODR=mask) #define input(mask) (pPIO->PIO_PDSR & mask) //#define input(mask) (pPIO->PIO_ODSR & mask) #define HIGH 1 #define LOW 0 int main() { int x; LowLevelInit(); // Set up the LEDs pPIO->PIO_PER=LED_MASK|SW_MASK; // bits 17,18 | 19,20 pPIO->PIO_OER=LED_MASK; // bits 17, 18 pPIO->PIO_SODR=LED_MASK; // bits 17, 18 pPIO->PIO_ODR=SW_MASK; pPIO->PIO_PER=SW_MASK; // turn off LEDs output_low(LED1); output_low(LED2); while(1) { if(input(SW1)!=LOW) { output_high(LED1); output_low(LED2); } else { output_low(LED1); output_high(LED2); } } while(1); return 0; } Any thoughts?! ~Kam (^8*
Got it! I was missing the following line in the init... pPMC=AT91C_BASE_PMC; //enable the clock of the PIO pPMC->PMC_PCER = 1 << AT91C_ID_PIOA; ~Kam (^8*
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.