Hello all
I am quite new to Keil STR9 Series. I was just learning the whole thing by going through and trying some small examples with it. I want to know how to control just one LED ( say 7.0) to blink at a time.
while (1) { for (n = 0x01; n <= 0xFF; n <<= 1) { GPIO7->DR[0x3FC] = n; } }
This piece of code turns on the all 8 LEDS at the same time. How can i blink just one LED (7.0) every 1 second?
Thanks
Your first post is I think correct (all you need to insert is the wait() in the for loop) and it looks like it was taken from the Blinky example. This app makes the LED blink rate controlled by the ADC. You should try to rotate the potentiometer and see if you can see the LED blink. I think on the extreme fast side, the LED "seems" to turn on ALL LED (the eye is too slow to notice the actual blinking).
The STR9 chip is unique, i.e. there is a mask register for the port. You can either control the mask (0x3FC is all bits go through) or control the data to toggle the port bit. It is up to you to choose. The blinky example controls the data with the mask = 0x3FC.
The mask is there so you don't have to do a read-modify-write. It makes the code simpler and faster.
It's been a while since I worked on the STR9.
"The STR9 chip is unique, i.e. there is a mask register for the port."
That isn't unique. A number of NXP chips has it too, and not unlikely other manufacturers too. You may take a look at the GPIO registers for the NXP LPC23xx chips, but several NXP product lines has mask registers.
wow... that really an easy method.
I did it like this
while(1) { RTC_GetTime(BINARY,&time); if (old_time != time.seconds) { old_time = time.seconds; GPIO_Write(GPIO7, old_time &0x1); } }
but how is the port bit organised ?? Is it LED 7.0 = bit 1,LED 7.1 = bit 2,... and so on ?
when i gave 0x1 , LED 7.0 blinked every 1 second. It was jus a random guess. How does it work with other LEDs? what is the port bit for other LEDs?
thnx
There is a schematic that you can check for connections - you should check it before writing your code. I believe it is in the Keil folder when you installed the s/w. Normally, I would make a summary of connections for easy lookup.
IC6 74LVC244 P7.7 => LED7 (1 = ON) P7.6 => LED6 (1 = ON) P7.5 => LED5 (1 = ON) P7.4 => LED4 (1 = ON) P7.3 => LED3 (1 = ON) P7.2 => LED2 (1 = ON) P7.1 => LED1 (1 = ON) P7.0 => LED0 (1 = ON)
I was referring to a general concept of uC vs the STR9 - I probably should have worded it carefully. But you are right, the NXP's have also the port mask reg.