(http://img851.imageshack.us/img851/1415/design1n.png) | My profile essay for school is about an interface that connects a system board to the TI84+. As you can see I have made a design. This is the first design which consists of: -4 digital inputs -2 digital outputs -a special bus for power supply and ground to the system board. -I/0 port for communication. It slides over the TI84+. It has an embedded jackplug so you dont have to own a 83 linkcable. that I can fit all the electronics in such a small box :P This is an image of the systemboard I want to connect to the TI 84 +. (http://vavo.roc-nijmegen.nl/havo/natuurkunde/systeembord/plaatjes/systeembord-1.jpg) |
That sounds really cool. I wonder if schools would use it if it ever took off? (Then again, schools still use TI's 84+ emulator which they have to buy, when there is many free emulators available that do just as good a job.)
I guess so, but all I've seen teachers use it for is math, so basically any emulator is the same in that regard.That sounds really cool. I wonder if schools would use it if it ever took off? (Then again, schools still use TI's 84+ emulator which they have to buy, when there is many free emulators available that do just as good a job.)
Or better.
I have been doing some research. I already spent 40 hours on this project. My physics teacher told me that I might know more about electronics than he does when I have gone trough all stages of developement. I am learning a lot more than at school :pThat's what always happens when you have a project you really enjoy :D
Interesting. I like to see hardware-based calculator projects. :)And so do I. Thats why I decided to build hardware myself. I have always been a software guy, but it's about to change :)
Aah ok, but I hope this doesn't mean you are about to cancel all your software projects? O.ONo ofc not, but I will be focussing on hardware for a while :)
Ah ok, glad to hear you're not killing your projects. Herocore for example seemed pretty great :DIndeed, but a strange bug keeps reoccuring, so I stepped back for a while.
are you able to just connect a 84+ to the usb port and then receive the bytes from it? how do they get sent, while the calc doesn't recognize is as a calc, or does it?Nope. I do it the hard way :P ^pgup^ I use that interface. I will start designing the actual hardware as soon as possible.
do you have soms plans with it, or is it just for experimenting?
do you mean you can control the leds by you calc our by the panel and your software?Nope, just the leds on the experimental programmer with some demo code running on a PIC. I'm gonna download a suitable compiler and then write some code for it.
nice :) it's good to see progress on this, it might be very useful when finished..Yeah. I dunno if I'm gonna make it in time for our schools' deadline. I'm trying hard.
oh? when do you have to get it ready? that's a nice schoolproject.. what kind of studies are you doing?Secondary school :) I hope to graduate this year.
wow, great, i love it :) did you manage to make it ? (maybe you already said it somewhere, but i must have missed that if you did)Not yet. I got stuck. programming those microcontrollers is a little weird. I cant find working code examples for my compiler. I am still gonna build the thing. It is just gonna take some time :)
Oh ok I was sure it was pretty soon, like tomorrow, and that you already finished the prototype. :PI wish I had, but things went a little different.
#include <SPI.h>
int Data = 6; //Data or TIP or RED
int Clock = 7; //Clock or RING or WHITE
byte DRead = 0;
byte DataByte = 0;
void setup()
{
Serial.begin(9600);
delay(1000);
Serial.println("Awesome Sauce! :)");
}
void loop()
{
sendByte(127);
}
int sendByte(byte DataByte)
{
//initialize the contact with the mothership
pinMode(Data, OUTPUT);
pinMode(Clock, OUTPUT);
digitalWrite(Data, HIGH);
digitalWrite(Clock, HIGH);
delayMicroseconds(1000);
digitalWrite(Clock, LOW);
delayMicroseconds(9000);
digitalWrite(Data, HIGH);
digitalWrite(Clock, HIGH);
delayMicroseconds(52);
delayMicroseconds(110);
digitalWrite(Data, LOW);
digitalWrite(Clock, LOW);
delayMicroseconds(52);
digitalWrite(Data, HIGH);
digitalWrite(Clock, HIGH);
delayMicroseconds(42);
//send data now
int BitIncrement;
for(BitIncrement<=7; BitIncrement++;)
{
int SendBit;
bitRead(DataByte, BitIncrement);
digitalWrite(Data, SendBit);
delayMicroseconds(17);
digitalWrite(Clock, LOW);
delayMicroseconds(35);
digitalWrite(Data, HIGH);
digitalWrite(Clock, HIGH);
delayMicroseconds(52);
}
}
int recieveByte(void)
{
//initialize contact with the daughtership
pinMode(Data, INPUT);
pinMode(Clock, INPUT);
DRead = digitalRead(Data);
return DRead;
}
I, and many others, including you Keoni, have been wanting to interface the calculators serial with an Arduino. I've coded only sparsely in my life, just enough to get by. I use lots of example code to write programs, they're my crutch. So basically what I have right now is a Arduino program that sends a byte repeatedly through the link port using Kerm Martian's whitepaper on the Calcnet protocol to fix my timings. But the calc still receives nothing. I am using two programs on the calc to receive a byte. The built in GET command and my Omnicalc linkreceive() command. Neither of these get anything from my program on the Arduino. Here is my code:I borrowed a usb interface a while ago. I was able to recieve bytes with it from the TI-84+, so I'm trying to port the software to the arduino and hope it will work :)Code: [Select]#include <SPI.h>
int Data = 6; //Data or TIP or RED
int Clock = 7; //Clock or RING or WHITE
byte DRead = 0;
byte DataByte = 0;
void setup()
{
Serial.begin(9600);
delay(1000);
Serial.println("Awesome Sauce! :)");
}
void loop()
{
sendByte(127);
}
int sendByte(byte DataByte)
{
//initialize the contact with the mothership
pinMode(Data, OUTPUT);
pinMode(Clock, OUTPUT);
digitalWrite(Data, HIGH);
digitalWrite(Clock, HIGH);
delayMicroseconds(1000);
digitalWrite(Clock, LOW);
delayMicroseconds(9000);
digitalWrite(Data, HIGH);
digitalWrite(Clock, HIGH);
delayMicroseconds(52);
delayMicroseconds(110);
digitalWrite(Data, LOW);
digitalWrite(Clock, LOW);
delayMicroseconds(52);
digitalWrite(Data, HIGH);
digitalWrite(Clock, HIGH);
delayMicroseconds(42);
//send data now
int BitIncrement;
for(BitIncrement<=7; BitIncrement++;)
{
int SendBit;
bitRead(DataByte, BitIncrement);
digitalWrite(Data, SendBit);
delayMicroseconds(17);
digitalWrite(Clock, LOW);
delayMicroseconds(35);
digitalWrite(Data, HIGH);
digitalWrite(Clock, HIGH);
delayMicroseconds(52);
}
}
int recieveByte(void)
{
//initialize contact with the daughtership
pinMode(Data, INPUT);
pinMode(Clock, INPUT);
DRead = digitalRead(Data);
return DRead;
}
How much would this cost if it was finished ?! O.oThe cost of the arduino+some components and a casing is around 30-50 dollar. Of course it won't look as good as the design since I don't have a 3d printer :)
Do you have to finish the entire design itself (as in physically, not draft/picture) before the deadline too or if you just need the hardware done?Just the hardware is fine. I only have to write the software for the communication (which is a pain). I might be able to let BASIC users interface their calcs with the world using BASIC send/get commands. I already have a casing and everything, but the software issue is just a hard nut to crack.
Are you using the usb port or the link port? Axe's link commands only use the link port (the usb controller is a semi-undocumented monster)I use the IO link port. I think I'm gonna use the OS way of communication since there is better documentation of it and perhaps could be used with basic programs.
You should have a way to use the axe link commands, I mean it'd be cool to interface with external hardware with axe. Axe's protocol is very simple, tip is held low to initialize a transfer and ring is used for data transfer. (All times are assuming a 6mhz cpu) You have 10 µs to acknowledge the transfer and there is a delay of 12-18 µs for each bit. The linking routine is provided in commands.inc (which comes with axe) if you want to see exactly what it does. I tested this with a microcontroller I was able to send and receive bytes with axe.Are you using the usb port or the link port? Axe's link commands only use the link port (the usb controller is a semi-undocumented monster)I use the IO link port. I think I'm gonna use the OS way of communication since there is better documentation of it and perhaps could be used with basic programs.
That means that the timing is crucial. Can you describe using some sort of pseudocode how the TI handles byte transfer (Axe style)?You should have a way to use the axe link commands, I mean it'd be cool to interface with external hardware with axe. Axe's protocol is very simple, tip is held low to initialize a transfer and ring is used for data transfer. (All times are assuming a 6mhz cpu) You have 10 µs to acknowledge the transfer and there is a delay of 12-18 µs for each bit. The linking routine is provided in commands.inc (which comes with axe) if you want to see exactly what it does. I tested this with a microcontroller I was able to send and receive bytes with axe.Are you using the usb port or the link port? Axe's link commands only use the link port (the usb controller is a semi-undocumented monster)I use the IO link port. I think I'm gonna use the OS way of communication since there is better documentation of it and perhaps could be used with basic programs.
Are you going to share the hardware design/programs? I've been thinking about making some hardware interface for the calc (with spi and i2c ports for sd cards ect.) and it'd be nice if there was a common platform to work with.
Did you have a powerpoint or something? If so, could we see it?Yes, but it's written in Dutch which is not neccecarely a problem to you, but others might prefer a translated version.
Why wouldn't it be a problem to me??? I don't know dutch :PDid you have a powerpoint or something? If so, could we see it?Yes, but it's written in Dutch which is not neccecarely a problem to you, but others might prefer a translated version.
Whoops. Wrong Spyro :) (Yes there are more spyros) There are some visuals indeed. Download attached!Why wouldn't it be a problem to me??? I don't know dutch :PDid you have a powerpoint or something? If so, could we see it?Yes, but it's written in Dutch which is not neccecarely a problem to you, but others might prefer a translated version.
All components needed to make an arduino compatible system:
http://www.iprototype.nl/products/kits/barebone-arduino-kit
That's whats going in the newer model. It's gonna be a lot smaller and cheaper than an arduino.
Have you already made it with the atmega328P (Or w/e it was)?Yes. In fact this is the soundchip project which will eventually have some I/O as well. It is remarkably easy to make the interface when I got the soundchip all sorted. I will release multiple versions of the Nterface project. One being a barebone link protocol libary for the arduino and another one will only have the I/O. The first version to be released will be the soundchip TIMID.