View previous topic :: View next topic |
Author |
Message |
SveinR
Joined: 04 Aug 2005 Posts: 9
|
REally newbie question. Led flashing |
Posted: Sat Aug 06, 2005 5:32 pm |
|
|
Hi!
I want to flash/blink with 3 or 4 leds, but the rythm om the third(or 4th) should be different than the two first one.
Example: I want to switch between the two first led with in a delay at 100ms, and on/off the third(or between the 4th) every 180ms.
So my question is how to solve this, maybe use a timer???
Thanks for all help
Regards |
|
|
SherpaDoug
Joined: 07 Sep 2003 Posts: 1640 Location: Cape Cod Mass USA
|
|
Posted: Sat Aug 06, 2005 7:35 pm |
|
|
I think I would set up a timer to cycle every 20ms. Every cycle I would run one counter from 1 to 5 for the first two LEDs and another counter from 1 to 9 for the third LED.
If you are using one of the smaller PICs like I do you could even pack the two counters into a single byte to save RAM, but that is a subject for Advanced Newbies. ;-) _________________ The search for better is endless. Instead simply find very good and get the job done. |
|
|
SveinR
Joined: 04 Aug 2005 Posts: 9
|
|
Posted: Sun Aug 07, 2005 2:29 am |
|
|
But how to do that in code??
I manage all of this except the timer stuff.
Can anyone write down a short code for me
Thanks
(I'm using for the moment 12F629 , but I normally use 16f628. So I can switch between A,B and GPIO ports ) |
|
|
Humberto
Joined: 08 Sep 2003 Posts: 1215 Location: Buenos Aires, La Reina del Plata
|
|
Posted: Sun Aug 07, 2005 6:48 pm |
|
|
Code: |
#include <16F628.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
#FUSES MCLR //Master Clear pin enabled
#FUSES NOLVP //No low voltage prgming, B3(PIC16)
#FUSES NOCPD //No EE protection
#use delay(clock=4000000) // Change accordingly
#use fast_io(b)
int8 RL1_counter, RL2_counter, YL1_counter, YL2_counter;
#define Red_Led_1 PIN_B7
#define Red_Led_2 PIN_B6
#define Yel_Led_1 PIN_B5
#define Yel_Led_2 PIN_B4
// LEDs blinking-time constants
#define Red_Led_1_blink 12 (12 * 8.1ms = 97ms)
#define Red_Led_2_blink 12 (12 * 8.1ms = 97ms)
#define Yel_Led_1_blink 22 (22 * 8.1ms = 178ms)
#define Yel_Led_2_blink 44 (44 * 8.1ms = 356ms)
//____________________________________________________________
#int_RTCC
RTCC_isr()
{
RL1_counter--;
if( !RL1_counter )
{ RL1_counter = Red_Led_1_blink;
output_toggle(Red_Led_1); }
RL2_counter--;
if( !RL2_counter )
{ RL2_counter = Red_Led_2_blink;
output_toggle(Red_Led_2); }
YL1_counter--;
if( !YL1_counter )
{ YL1_counter = Yel_Led_1_blink;
output_toggle(Yel_Led_1); }
YL2_counter--;
if( !YL2_counter )
{ YL2_counter = Yel_Led_2_blink;
output_toggle(Yel_Led_2); }
}
//____________________________________________________________
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32); // every 8.1 ms
RL1_counter = Red_Led_1_blink;
RL2_counter = Red_Led_2_blink;
YL1_counter = Yel_Led_1_blink;
YL2_counter = Yel_Led_2_blink;
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
do
{
//.....
// Your can do anything here while
// your Leds are blinking in background
//.....
}while(1);
}
//____________________________________________________________
|
Humberto |
|
|
SveinR
Joined: 04 Aug 2005 Posts: 9
|
|
Posted: Tue Aug 09, 2005 4:17 pm |
|
|
THANKS |
|
|
Guest
|
|
Posted: Thu Dec 01, 2005 3:45 pm |
|
|
Hi all, I have just started to learn programming, and want to play with this led flashing code above. I have access to the CCS complier and a programmer but do not understand this 12f629.h file part.
Can someone explain this or can someone please send me the .c file and .h file for a flashing led so I can start.
I have searched the internet for hours and no such luck.
Many thanks for any help in advance.
[email protected] |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Thu Dec 01, 2005 3:54 pm |
|
|
Quote: | I have searched the internet for hours and no such luck. |
This I don't believe. I searched for less than a minute using Google
and found it. |
|
|
Guest
|
|
Posted: Thu Dec 01, 2005 4:07 pm |
|
|
What did you search for?
I have been searching for hours and its come to posting on the forum as last resort!
I can find the c source code but don't understand this .h part? |
|
|
James909
Joined: 01 Dec 2005 Posts: 3
|
|
Posted: Thu Dec 01, 2005 4:12 pm |
|
|
OK. thanks for making me think. I found the file on the computer i am working on
Is it a definition file?
More question i am sure will follow!
It compiled so lets see if it works.
Thanks again
James |
|
|
jecottrell
Joined: 16 Jan 2005 Posts: 559 Location: Tucson, AZ
|
|
Posted: Thu Dec 01, 2005 4:30 pm |
|
|
(I just read your response prior to posting, you've started to show some hope.... )
A couple of suggestions that may lead to a warmer response from the experts here that offer up a lot of their valuable time to help others:
1. Register and log-in. (Demonstrates that you are sincere and are truley interested in learning, not just a "drive by poster looking for homework answers.)
2. Explain (with some detail) what you have attempted so far and what the result has been. "I've searched for hours" doesn't provide much background.
3. Read the forum etiquette at the top of the forum. It will provide some details that I won't waste my time re-typing.
4. If you are going to essentially start a new thread, then start a new thread. Don't exhume a dead one. Simply start a new thread and refer back to the thread in question with a link to make it easier for the experts to access it.
With that gentle admonishment complete, it appears your first problem is explaining exactly what your problem is.
All I could gather is that you need some files and you don't understand the 12f629.h file.
If you need the header file for the 12f629 part, then it will be in your devices directory. If it isn't there your version of the compiler probably won't support that part.
You shouldn't need the .c file. Humberto was generous enough to write and post that for the previous person. Simply copy and paste and save it.
Understanding the header file can be as complex as you'd like to make it. It is merely part specific information that makes writing your program easier. Lots of defines to make accessing ports more readable, set up information, etc. Read the compiler manual and ask specific questions. "I don't understand" is quite a broad statement to try to address for someone trying to help you while sitting at a keyboard.....
Good luck,
John |
|
|
James909
Joined: 01 Dec 2005 Posts: 3
|
|
Posted: Thu Dec 01, 2005 4:52 pm |
|
|
Thanks for your reply John, I will try and follow the forum rules in the future, I did register but for some reason it posted under the guess member. That�s all sorted now.
Thanks for the information concerning the .h file. I now understand at face value what it does.
Until yesterday I had never heard of pic and today with only the internet as support I have managed to program my first pic to flash a led! All credit has to go to the author of the code tho.
My goal is to program a Motorola PLL using a 629 pic. So I am on a long mission, but having enough fun flashing led's at the moment!
My next hurdle is to get the PIC using a 4mhz crystal as its clock and not the internal one. |
|
|
|