Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
21602 Discussions

Switch on leds on DE2

Altera_Forum
Honored Contributor II
1,254 Views

Hey, im trying to switch on LEds on DE2. 

 

http://thalandinenop99.free.fr/image.jpg  

 

 

 

You can see here the system that i've generated. 

Leds is set in output with 8 bits and Switch set in input with 8 bits 

I've generated the system then i've programmed it to my DE2, then i've written this code in C with NIOS 2 IDE in oder to switch on the LED : 

# define SWITCHES_BASE_ADDRESS 0x00009010# define LEDR_BASE_ADDRESS 0x00009000 

int main(void) 

int * red_leds = (int *) LEDR_BASE_ADDRESS; /* red_leds is a pointer to the LEDRs */ 

volatile int * Switch = (int *) SWITCHES_BASE_ADDRESS; /* switches point to toggle switches */ 

printf("Hello from Nios II!\n"); 

while(1) 

*(red_leds) = *(Switch); /* Red LEDR[k] is set equal to SW[k] */ 

return 0; 

 

i've send this to DE2. i don't understand why, LED's doesn't want to switch on....any idea ?? is there any turorial of how i have to code in C if yes, where can i download this file...could you plus help me to solve this problem.  

Thanks
0 Kudos
2 Replies
Altera_Forum
Honored Contributor II
511 Views

If you have used Nios II full version, addresses below to 0x8000000 are cacheable, so you will experience problems accesing hardware in the way you're doing. I strongly suggest use the IORD and IOWR macros, they use I/O instructions. So according to your SOPC system 

 

 

# include "system.h" # include "io.h" ... while(1) { IOWR(LEDS_BASE,0,IORD(SWITCH_BASE,0)); } ......  

 

base address definitions are made on "system.h".
0 Kudos
Altera_Forum
Honored Contributor II
511 Views

thanks it works fine

0 Kudos
Reply