Go to Post Screws come even smaller, #0000 - 160 at Small Parts.They're about $4 each, and made by elves. - DonRotolo [more]
Home
Go Back   Chief Delphi > Other > FIRST Tech Challenge
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
Thread Tools Rating: Thread Rating: 8 votes, 5.00 average. Display Modes
  #1   Spotlight this post!  
Unread 21-07-2005, 19:45
dababyjebus dababyjebus is offline
Greg Echelberger
FRC #0097
Team Role: Mentor
 
Join Date: Jan 2005
Rookie Year: 2003
Location: VA
Posts: 6
dababyjebus will become famous soon enough
Programming Vex w/ MPLab

To program the Vex robot for this coming year you will need to buy a programming module (which aren't coming out until mid-august) or to make your own. The software that is going to be put out for programming it is called easyC which is very similar to FLL block programming. This is, for the time being, the only way officially supported for vex programming. EasyC installs in all the libraries and files that you will need to program in MPLab though. It installs the mcc18 compiler under easyC\mcc18\ (imagine that) and all the libs, headers, objects, and linkers under easyC\VeX\.

In order to program in MPLab, you will need to start by creating a new project under Project\Project Wizard and choose PIC18f8520 as your device. This can be found by checking the default linker script found in easyC\VeX\Linker\18f8520user.lkr. Next you must choose microchip C18 ToolSuite. Any tools in the content window with an X next to it should be found in easyC\MCC18. Then choose a name for your project and place to save it. (It is almost always good to keep projects in MPLab very close to your hard drive root directory because it refuses to compile files with location names longer than (62 chars?)) Then add UserAPI.h from easyC\UserAPI\ to the headers in your project. Do the same with 18f8520user.lkr, all the object files, and Vex_library.lib.

Everything should be configured correctly now, but there is one more catch. Before you can start coding your main function you must implement void IO_Initialization() with DefineControllerIO(4, etc...). EasyC puts this implementation in $projname + IO.c and the main function implementation in $projectname + .c. The 4 refers to how many of the first inputs are analog, and the rest are 16 1s for input or 0s for output. With all this done, your project should compile perfectly and then just use the ifi vex loader supplied with easyC or downloaded from http://www.vexlabs.com/vex-robotics-downloads.shtml.

Brad Miller should be putting up his own library for programming the VeX robots on http://sf.net at some point which is similar but more advanced than the one provided by easyC and will remove any reliance on easyC.

Last edited by dababyjebus : 21-07-2005 at 19:51.
Reply With Quote
  #2   Spotlight this post!  
Unread 21-07-2005, 20:29
foobert foobert is offline
Registered User
no team
 
Join Date: May 2005
Location: oakland, ca
Posts: 87
foobert is a jewel in the roughfoobert is a jewel in the roughfoobert is a jewel in the rough
Re: Programming Vex w/ MPLab

actually there is information on the vexlabs download about ordering a prototype programmer. there are also downloads of the code for the robot and a simplified source code file which may be modified, compiled with mcc18 and loaded to the vex controller.

it's not hard. i've done it my own self.

even without the programmer the simplified source file is useful to understand how the vex kit uses its hardware resources. of course, without the prorammer, who really cares. it's a worthwhile investment at $99, and comes with the cbot environment that i guess is used in the first program.
Reply With Quote
  #3   Spotlight this post!  
Unread 21-07-2005, 21:44
billbo911's Avatar
billbo911 billbo911 is offline
I prefer you give a perfect effort.
AKA: That's "Mr. Bill"
FRC #2073 (EagleForce)
Team Role: Mentor
 
Join Date: Mar 2005
Rookie Year: 2005
Location: Elk Grove, Ca.
Posts: 2,356
billbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond repute
Re: Programming Vex w/ MPLab

Quote:
Originally Posted by foobert
... there are also downloads of the code for the robot and a simplified source code file which may be modified, compiled with mcc18 and loaded to the vex controller.

it's not hard. i've done it my own self.

even without the programmer the simplified source file is useful to understand how the vex kit uses its hardware resources. .... it's a worthwhile investment at $99, and comes with the cbot environment that i guess is used in the first program.

I couldn't agree more!

I didn't have to jump through all the hoops mentioned by dababyjebus, but then again, I was not using Easy-C. I just used the exact same tools I used for FRC in 2005 with the exception of the newer IFI Loader.

You can set anywhere from 0 to 16 channels as Analog inputs, with 2 being the default. Look through the default code, you will see what I mean.
Reply With Quote
  #4   Spotlight this post!  
Unread 21-07-2005, 21:48
dababyjebus dababyjebus is offline
Greg Echelberger
FRC #0097
Team Role: Mentor
 
Join Date: Jan 2005
Rookie Year: 2003
Location: VA
Posts: 6
dababyjebus will become famous soon enough
Re: Programming Vex w/ MPLab

yes, its true that you can download the simplified vex source code which is essentially the same as the FRC code from vexlabs, but the purpose of my post was to show how to get mplab to work with the wrapper library of easyC. Radioshack decided that the "simplified vex code" was still too complex for the user base that they were trying to reach with vex and contracted intelitek to create easyC. It does much the same thing as the FRCish code, but is much simpler and easier to code with. The library that Brad is working on is very similar except with a few more advanced features. It really doesn't matter at all which code or libraries one uses -- to each his own.
Reply With Quote
  #5   Spotlight this post!  
Unread 22-07-2005, 00:07
foobert foobert is offline
Registered User
no team
 
Join Date: May 2005
Location: oakland, ca
Posts: 87
foobert is a jewel in the roughfoobert is a jewel in the roughfoobert is a jewel in the rough
Re: Programming Vex w/ MPLab

so are there any further details? project name?

the default code does seem a little weird to me. they seem to use only two interrupts, the spi to communicate between the user and master controllers and timer0 which is used only to keep the pwm generating code from running at the same time as the master and user are doing their communicating. this means that the pwm sisgnals are generated in a timing loop that eats up two out of every 18.5ms. there is not, however, a whole lot of information available as to how this stuff happens.

some nice well documented libraries would not be so painful to have.

Last edited by foobert : 22-07-2005 at 00:08. Reason: flaky markup
Reply With Quote
  #6   Spotlight this post!  
Unread 10-04-2006, 17:45
GlennGraham's Avatar
GlennGraham GlennGraham is offline
Registered User
AKA: Glenn Graham
FLL #0006 (Shark Bait!)
Team Role: Coach
 
Join Date: Jan 2006
Rookie Year: 2003
Location: Beaverton, Oregon
Posts: 20
GlennGraham is an unknown quantity at this point
Re: Programming Vex w/ MPLab

First, a big THANKS for this thread. I was able to set up the MPLAB IDE and start programming without too much effort. Well done!

At first, without knowing anything else about the VEX uController I used the displayed C code from a simple EasyC program as a model and wrote my own main() routine in MPLAB, compiled, linked, (using the supplied user_routines.o and user_routines_fast.o) and downloaded it to the robot. It ran as expected. After that, I continued exploring the message threads and found that another approach is to not use your own main() but instead use a pre-coded main() and re-implement User_Initialization(), Process_Data_From_Master_uP(), User_Autonomous_Code(), and Process_Data_From_Local_IO(). Could someone please compare and contrast these two approaches? From what I have read, using the later approach you can have code that is limited in how often it is executed by the Master uP data transfer verses code that isn't. What does that mean when I use the former approach and place all of my code inside my own main() routine? Is there a lot of overhead making multiple GetRxInput() and SetPWM() calls from my main()?

Thanks!
Reply With Quote
  #7   Spotlight this post!  
Unread 12-04-2006, 20:33
intellec7's Avatar
intellec7 intellec7 is offline
108 programmer
AKA: Gustavo
FRC #0108 (SigmaC@ts)
Team Role: Programmer
 
Join Date: Sep 2005
Rookie Year: 2006
Location: Hollywood, Florida
Posts: 65
intellec7 is on a distinguished road
Send a message via AIM to intellec7 Send a message via MSN to intellec7
Re: Programming Vex w/ MPLab

I am using MPLAB 7.31 and using all the bin executables that came with the CD (their Librarian: mplib.exe , Linker: mplink.exe and Compiler: mcc18.exe ) when I attempt to compile I get the message
Code:
MPLINK 3.90, Linker
Copyright (c) 2004 Microchip Technology Inc.
Error - Coff file 'C:MCC18lib/c018i.o' does not appear to be a valid COFF file.
Errors    : 1
or

Code:
MPLINK 3.90, Linker
Copyright (c) 2004 Microchip Technology Inc.
Error - Coff file 'AARG.O' does not appear to be a valid COFF file.
Error - Could not build member 'AARG.O' in library file 'C:MCC18lib/clib.lib'. 
Errors    : 2
it depends which line I comment out on 18f8520user.lkr
Code:
// $Id: 18f8520i.lkr,v 1.4 2003/03/13 05:02:23 sealep Exp $
// File: 18f8520i.lkr
// Sample linker script for the PIC18F8520 processor

LIBPATH .

//FILES c018i.o
FILES clib.lib
FILES p18f8520.lib

I know for a fact that I had the C18 compiler already installed from other PIC stuff that I do, but I don't know if when I installed the easy-c CD if it installed over that. My question is WHY is it looking there? in 18f8520user.lkr there is reference to the file name only (clib.lib OR c018i.o, you comment out which one, by default it is clib.lib). According to the linker read me this error arises when you are reading a new COFF file with the old linker. Where can I find an old clib.lib and how can I change the reference to it? Thanks in advance.
Reply With Quote
  #8   Spotlight this post!  
Unread 13-04-2006, 09:52
Mark McLeod's Avatar
Mark McLeod Mark McLeod is online now
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,803
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: Programming Vex w/ MPLab

Check the version of C18 you have installed and are using.
e.g., C:/mcc18/README.C18

The COFF mismatch is common when attempting to use the newest version (3.0 or greater) of the C18 compiler with the IFI object files or libraries (which were compiled under the older version 2.4).
There was a change in the format of the COFF with version 3 that's incompatible with the older object files. You have to use C18 version 2.4 (or earlier).
__________________
"Rationality is our distinguishing characteristic - it's what sets us apart from the beasts." - Aristotle
Reply With Quote
  #9   Spotlight this post!  
Unread 13-04-2006, 15:38
intellec7's Avatar
intellec7 intellec7 is offline
108 programmer
AKA: Gustavo
FRC #0108 (SigmaC@ts)
Team Role: Programmer
 
Join Date: Sep 2005
Rookie Year: 2006
Location: Hollywood, Florida
Posts: 65
intellec7 is on a distinguished road
Send a message via AIM to intellec7 Send a message via MSN to intellec7
Re: Programming Vex w/ MPLab

Well, the C18 compiler in C:\mcc18 is version :
Release Notes for MPLAB(R) C18, PICmicro(R) 18Cxx C Compiler
v3.02
3 February 2006
But I tell MPLAB to use the tools in C:\Program Files\Intelitek\easyC\Mcc18\bin
Reply With Quote
  #10   Spotlight this post!  
Unread 13-04-2006, 16:21
Mark McLeod's Avatar
Mark McLeod Mark McLeod is online now
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,803
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: Programming Vex w/ MPLab

I see, so you are using the v2.4 compiler under the easyC directory but pulling the object file 'C:MCC18lib/c018i.o' from the newer version 3.02 directory which will give you the mismatched COFF error. Your MCC18lib environment variable might be set from installing the 3.02 compiler.

In MPLAB under Project -> Build Options... -> Project
what paths do you have for Include and Library?

Are they set to:
C:\Program Files\Intelitek\easyC\Mcc18\h
and
C:\Program Files\Intelitek\easyC\Mcc18\lib

You'll find older versions of both clib.lib and c018i.o under the easyC/Mcc18/lib directory.
__________________
"Rationality is our distinguishing characteristic - it's what sets us apart from the beasts." - Aristotle

Last edited by Mark McLeod : 13-04-2006 at 17:23.
Reply With Quote
  #11   Spotlight this post!  
Unread 13-04-2006, 23:35
intellec7's Avatar
intellec7 intellec7 is offline
108 programmer
AKA: Gustavo
FRC #0108 (SigmaC@ts)
Team Role: Programmer
 
Join Date: Sep 2005
Rookie Year: 2006
Location: Hollywood, Florida
Posts: 65
intellec7 is on a distinguished road
Send a message via AIM to intellec7 Send a message via MSN to intellec7
Re: Programming Vex w/ MPLab

Your help is much appreciated, it works fantastically.
Reply With Quote
  #12   Spotlight this post!  
Unread 30-04-2006, 19:35
NoSilverman NoSilverman is offline
Registered User
no team
 
Join Date: Apr 2006
Location: NYC
Posts: 2
NoSilverman is an unknown quantity at this point
Re: Programming Vex w/ MPLab

Hi all! I just got started programing with vex, and quickly decided to use MPLab because I have some programming experience. I got everything set up following the directions in the first post, but keep getting compile errors:

Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" /l"C:\Program Files\Intelitek\easyC\Mcc18\lib" "C:\Program Files\Intelitek\easyC\VeX\Linker\18f8520user.lkr" "N:\MPLab\Test.o" "C:\Program Files\Intelitek\easyC\VeX\Object\ifi_startup.o" "C:\Program Files\Intelitek\easyC\VeX\Object\ifi_utilities.o" "C:\Program Files\Intelitek\easyC\VeX\Object\interrupts.o" "C:\Program Files\Intelitek\easyC\VeX\Object\printf_lib.o" "C:\Program Files\Intelitek\easyC\VeX\Object\Start.o" "C:\Program Files\Intelitek\easyC\VeX\Object\user_api.o" "C:\Program Files\Intelitek\easyC\VeX\Object\user_routines.o" "C:\Program Files\Intelitek\easyC\VeX\Object\user_routines_fas t.o" "C:\Program Files\Intelitek\easyC\VeX\Library\Vex_library.lib" /m"Vex Test.map" /o"Vex Test.cof"
MPLINK 4.02, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - Coff file format for 'N:\MPLab\Test.o' is out of date.
Errors : 1

Why is the format for Test.o out of date, and how do I fix this (the main file is named test.c)?

Thank you!
Reply With Quote
  #13   Spotlight this post!  
Unread 30-04-2006, 20:12
foobert foobert is offline
Registered User
no team
 
Join Date: May 2005
Location: oakland, ca
Posts: 87
foobert is a jewel in the roughfoobert is a jewel in the roughfoobert is a jewel in the rough
Re: Programming Vex w/ MPLab

looks like your project is set up to use easyc. if you're not going to use easyc i'd guees that you need to select c18. i'm am not currently at my accursed windows machine, but i believe this is accomplished under the project menu, one of the last submenus down there somewhere...

really, i guess i don't know.

Quote:
Why is the format for Test.o out of date, and how do I fix this (the main file is named test.c)?

Thank you!
Reply With Quote
  #14   Spotlight this post!  
Unread 01-05-2006, 16:15
Mark McLeod's Avatar
Mark McLeod Mark McLeod is online now
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,803
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: Programming Vex w/ MPLab

Quote:
Originally Posted by NoSilverman
MPLINK 4.02, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - Coff file format for 'N:\MPLab\Test.o' is out of date.
Errors : 1

Why is the format for Test.o out of date, and how do I fix this (the main file is named test.c)?
This also looks like you have a new version of the C18 compiler (>v2.40). That doesn't work with the pre-compiled Vex object libraries. What is your C18 version?
__________________
"Rationality is our distinguishing characteristic - it's what sets us apart from the beasts." - Aristotle
Reply With Quote
  #15   Spotlight this post!  
Unread 02-05-2006, 00:36
budgiekid budgiekid is offline
Registered User
AKA: Katie Banks
FRC #0694
 
Join Date: May 2006
Rookie Year: 2006
Location: Brooklyn, NY
Posts: 4
budgiekid is an unknown quantity at this point
Re: Programming Vex w/ MPLab

I have the same problem as NoSilverman, but I've checked and the version of C18 I'm using is 2.40 (not using the one wrapped into easyC), and the paths are set correctly. I'm also using v7.31 IDE, if that makes a difference.

Thanks for the help!
Reply With Quote
Reply


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

Similar Threads
Thread Thread Starter Forum Replies Last Post
how to build a VEX programming module bblack7489 FIRST Tech Challenge 78 09-06-2011 16:03
Programming - Getting Started Mark McLeod Programming 80 16-04-2008 23:37
VEX programming Gene F Programming 14 08-08-2006 22:21
Vex bot programming Q's BaldwinNYRookie Programming 6 09-10-2005 17:45
Vex Programming foobert FIRST Tech Challenge 3 24-06-2005 01:09


All times are GMT -5. The time now is 13:07.

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