The VEXpro ARM9 Microcontroller is now available for purchase. P/N: 217-2180 Price: USD$349.99 - CDN$369.99
The ARM9 Microcontroller, aimed at universities and the research market, provides the power and sophistication that the most advanced VEX users want.
The product is a redesign of the popular Qwerk designed by Charmed Labs. The ARM9 Microcontroller uses standard 802.11b/g communication. This will allow (with programming) highly configurable communication to PC’s and wireless networks. The Carnegie Mellon Telepresence Robot Kit (TeRK) project provides a powerful feature to the ARM9 Microcontroller allowing robot control and video feedback across the internet. The controller can be operated from PC and Linux machines.
Will the ARM9 ever become Vex competition legal, or is it going to be strictly used for research/hobby purposes only? The answer will dictate how many we decide to invest in.
I’m hoping the I²C port is controllable without jumping through too many hoops. Looking through the libqwerk HAL reference, though, I don’t see any mention of the I²C port. Will I need to drive it by accessing registers through the C9302Hardware class directly? Any hints you can offer would be appreciated.
Anybody that is interested in the internals of the VEXpro, I just put up a wiki page.
Please feel free to add to the page or correct anything you see wrong.
Got it going and have run a few quickie programs. It is very nice to have a full multitasking OS running on the microcontroller, complete with a shell, rich libraries, and standard TCP/IP comms.
Now I’ve got to spend some time learning the classes in libqwerk, and figure out what other libraries are available (and work).
Just FYI, there appear to be five PTC fuses on the motor ports as follows:[INDENT][LIST]*]motors 1 through 4
*]motors 5 through 8
*]motors 9 through 12
*]motors 13 and 14
*]motors 15 and 16
[/LIST][/INDENT]You can read the voltage and breaker state for each of these groups. You can also read the main battery voltage, backup battery voltage, as well as internal and external 5V busses.
Any Amperage Readings??? They could be added with some External Sensors and some Analog Inputs, but internal would be great, just so you could know how close you are to reaching the limit of the PTCs…
Any other cool features?? It sounds like the VexPro will be pretty Wide Open to experimentation…
That would be very handy, but I don’t see any direct way to do that. I suspect you could look at the voltage drop between the main battery and the motor port. I don’t know how accurate that would be, but it might be a useful approximation.
It’ll take me a while to go through the libraries, but it seems to have all the obvious stuff. You can read and set all the various ports, write to the LCD, and play sounds through the speaker.
A few nice things are text-to-speech (speech synthesis), and the Four 2-wire motor ports seem pretty advanced. They support back-EMF position sensing, full PID control, and probably other goodies.
I don’t see any mention of the UART port, but I suspect that is driven through standard linux libraries and not something in libqwerk. Also, I don’t see any mention of quadrature encoder support, but that is simple enough to implement. Sadly, I haven’t seen any mention of I²C, but I’ve just started to look so hopefully it is just hidden.
The user guide says I2C is future. Does anyone know what pins on the EP9302 it connects to? The EP9302 datasheet says it has an EEDAT & EECLK pins (for serial EEPROM I2C I/F) and that would be a natural place to hook into - it’s the only I2C controller I saw in the chip. If not there, must be intended to bitbang GPIOs. I want it for a compass.
Nice disassembly pix Quazar. We could use an FAQ page, IMHO, to collect facts on this baby (like the serial & I2C pinout). The SW is a really nice integrated package based on eclipse.
I’m poking around, but I don’t have any hard info yet. My guess is that the I²C is either bit-banged through GPIOs, or is wired to the FPGA for a firmware/hardware assist.
Thanks!
We can add to the Notes section at the bottom of the teardown page, or start a new page altogether. Whatever folks prefer. I’ll add whatever I figure out (starting with power distribution details), and I encourage others to do so as well.
(Please don’t hesitate to edit one of the pages I’ve posted if you have something to add - the wiki is communal resource and nobody owns any page).
Agreed. I notice that they don’t claim to support Mac OS X, though Eclipse works fine on Mac, so I’m hoping that it won’t be a huge reach to port the IDE to Mac.
Is the HDL for the Xilinx open source ? Is it available ?
I installed the IDE today just for fun, looks pretty straightforward for development, I noticed there is a distinct difference between control for motors 1 through 12, which are treated as servos, and 13 through 16 which have more capability.
Not that I’ve found, though I haven’t looked all that hard yet.
Yep. It seems like the motors and servos are all run through the FPGA (makes sense to avoid waisting CPU time on PWM generation), but the analog and digital I/Os are straight out of the CPU (gleaned from examining the source to libqwerk).
It is becoming more common for MCUs to include peripheral IP like Timers,
which can be set to provide a PWM signal (variable duty cycle at fixed frequency) directly, without further CPU control. Not sure if this chip is one of those.