Go to Post If you don't have anything nice to say, don't say it all. I mean, I know we all get frustrated during build season, but we still need to make an effort to be polite and helpful. - Karthik [more]
Home
Go Back   Chief Delphi > Technical > Technical Discussion
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
 
 
Thread Tools Rate Thread Display Modes
Prev Previous Post   Next Post Next
  #6   Spotlight this post!  
Unread 03-02-2004, 12:52
Mark McLeod's Avatar
Mark McLeod Mark McLeod is offline
Just Itinerant
AKA: Hey dad...Father...MARK
FRC #0358 (Robotic Eagles)
Team Role: Engineer
 
Join Date: Mar 2003
Rookie Year: 2002
Location: Hauppauge, Long Island, NY
Posts: 8,883
Mark McLeod has a reputation beyond reputeMark McLeod has a reputation beyond reputeMark McLeod has a reputation beyond reputeMark McLeod has a reputation beyond reputeMark McLeod has a reputation beyond reputeMark McLeod has a reputation beyond reputeMark McLeod has a reputation beyond reputeMark McLeod has a reputation beyond reputeMark McLeod has a reputation beyond reputeMark McLeod has a reputation beyond reputeMark McLeod has a reputation beyond repute
Re: IR Sensor-tracker.zip

Quote:
Originally Posted by dmellich
Now the question is, how do we get the tracker code integrated with the default code so that all systems (drive, pneumatics, other motors) can operate simultaneously with IR? Are there certain files from tracker code (*.c, *.h) that need to be placed into the FRCcode to allow them to be compiled and linked?
Add these to your MPLAB project.
tracker.c
tracker.h

Use the routines in the tracker s/w as a guide to changes in the rest of the code.
Add in user_routines.c:
Code:
#include "receiver.h"
#include "tracker.h"
in User_Initialization()
Code:
Initialize_Receiver(); /* not required as it's also called by Initialize_Tracker() */
Initialize_Tracker();
In user_routines_fast.c add the whole "// external interrupts 3 through 6" interrupt section for the IR sensor interrupts.
Code:
	else if (INTCONbits.RBIF) // external interrupts 3 through 6
	{
		Port_B = PORTB; // remove the "mismatch condition" by reading port b            
		INTCONbits.RBIF = 0; // clear the interrupt flag
		Port_B_Delta = Port_B ^ Old_Port_B; // determine which bits have changed
		Old_Port_B = Port_B; // save a copy of port b for next time around
	 
		if(Port_B_Delta & 0x10) // did external interrupt 3 change state? - IR sensor 1
		{
			Int_3_Handler(Port_B & 0x10 ? 1 : 0); // call the interrupt 3 handler (in receiver.c)
		}

		if(Port_B_Delta & 0x20) // did external interrupt 4 change state? - IR sensor 2
		{
			Int_4_Handler(Port_B & 0x20 ? 1 : 0); // call the interrupt 4 handler (in receiver.c)
		}

		if(Port_B_Delta & 0x40) // did external interrupt 5 change state? - IR sensor 3
		{
			Int_5_Handler(Port_B & 0x40 ? 1 : 0); // call the interrupt 5 handler (in receiver.c)
		}
		
		if(Port_B_Delta & 0x80) // did external interrupt 6 change state? - IR sensor 4
		{
			Int_6_Handler(Port_B & 0x80 ? 1 : 0); // call the interrupt 6 handler (in receiver.c)

		}
	}
And add the tracker servo processing in Process_Data_From_Local_IO()

Code:
	static unsigned int Old_Clock = 0;

	if (Clock > Old_Clock) // stay synchronized to beacon data updates (this is important)
	{
		Track_Beacon(LEFT); // allow the left beacon tracker state machine to run
		Track_Beacon(RIGHT); // allow the right beacon tracker state machine to run
		
		if ((Tracker_Data[left].Status == BOTH_IN_VIEW) &&
			(Tracker_Data[right].Status == BOTH_IN_VIEW))
		{
			// both trackers have an angular solution; calculate beacon vector
			// here using the known baseline distance between the trackers and
			// angles derived from the two Tracker_Data[].Position variables

			// calculate new drive motor PWM values here

		}
	// finally, update the servo motor positions
	LEFT_TRACKER_SERVO = Tracker_Data[left].Position;
	RIGHT_TRACKER_SERVO = Tracker_Data[right].Position;
	
	Old_Clock = Clock; // take a snapshot of the clock
	}
__________________
"Rationality is our distinguishing characteristic - it's what sets us apart from the beasts." - Aristotle

Last edited by Mark McLeod : 03-02-2004 at 14:31.
 


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 03:14.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi