I have a TI-84+. It seems to be plugged in okay, but i will check to make sure.

Edit: Just checked with my caliper and it's .7mm too wide to fit, i will try to cut some off.
lyron wrote:
I have a TI-84+. It seems to be plugged in okay, but i will check to make sure.

Edit: Just checked with my caliper and it's .7mm too wide to fit, i will try to cut some off.
Glad you have the right tools to check that sort of thing. Smile For future reference, please Edit your post instead of double-posting, if it has been fewer than twenty-four hours since your last post. I merged your posts for you.
Okay, i've trimmed some off but still it won't do anything
lyron wrote:
Okay, i've trimmed some off but still it won't do anything
And the calculator's cursor continues to blink normally, without staying on longer than usual? I will give your code a try later and see if we can sleuth out the issue.
Okay, thanks for the tip about the jack, now my IR remote accessoire works!
lyron wrote:
Okay, thanks for the tip about the jack, now my IR remote accessoire works!
That's great! After you Introduce Yourself, if you didn't already get a chance to do so, would you mind posting a Your Projects topic with more information about this project? It sounds intriguing.
KermMartian wrote:
That's great! After you Introduce Yourself, if you didn't already get a chance to do so, would you mind posting a Your Projects topic with more information about this project? It sounds intriguing.


After all your help and quick responses, i think the least i could do is do those things.
Oh and by the way, you don't need these three lines:


Code:

void resetLines();
static int par_put(uint8_t *data, uint32_t len);
static int par_get(uint8_t *data, uint32_t len);
(at the top)
lyron wrote:
Oh and by the way, you don't need these three lines:


Code:

void resetLines();
static int par_put(uint8_t *data, uint32_t len);
static int par_get(uint8_t *data, uint32_t len);
(at the top)
For the Arduino compiler you don't. Smile If you're using a "real" compiler, like I am, then it's important to have the prototypes up there.
What compiler are you using?
Did you have a chance to try the code?
lyron wrote:
Did you have a chance to try the code?
I'm afraid it totally slipped my mind. I need to start setting up my display for Maker Faire anyway, so I'll pull out my Arduino and try flashing your program.
KermMartian wrote:
..so I'll pull out my Arduino and try flashing your program.


Did you try it? I'm curious...
I finally got around to hacking a bootloader onto my two clean Atmega328P chips and giving this a test. The problem was something very small and silly that I should have noticed from the beginning: you weren't receiving the ACK, and if the ACK doesn't get sent successfully, the calculator ignores the preceding packet. Replace your loop() function with this:


Code:
void loop(){
  uint8_t A [4] = {0x23,0x87,0x9A,0x00};  //packet for sending capital A
  resetLines();
  par_put(A, 4); //send the packet

  // get the ACK
  par_get(A,4);
  if (A[1] == 0x56) {
    par_get(A,4);
  }
  delay(2000);
}
Thank you so much, it works now!
lyron wrote:
Thank you so much, it works now!
You're most welcome. Smile Please keep me/us posted on the progress of your project, of course!
'Course i will. My project is going to be similar to hackniac's BlueTILP.
lyron wrote:
'Course i will. My project is going to be similar to hackniac's BlueTILP.
Funny you should mention that; I have a note to myself to get in touch with Hackniac (nemo?) to publish that project there. It seems to me that nemo was trying to do a transparent link, though, where it seems like you're injecting specific packets? Or is that just a proof-of-concept?
Here is some faster link routine. This uses external interrupts. You need assembled code to communicate with this though. Atm it's receive only, but I'm gonna implement sending data soon. It's very similar to I2C, but with it's interrupt driven.

Code:
// MACROs
#define PIN2L !(PIND & 0B00000100)
#define PIN3L !(PIND & 0B00001000)

#define CLR(x,y) (x&=(~(1<<y)))
#define SET(x,y) (x|=(1<<y))

byte get;
byte bitCount = 8;

void bitTransceive()
{
  get >>= 1;
  if (PIN2L)
  {
    get |= 128;
  }
  bitCount--;
}

void setup()
{
  CLR(DDRD,2); //pinMode 2 is input
  CLR(DDRD,3); //pinMode 3 is input
  Serial.begin(115200);
  attachInterrupt(1,bitTransceive,FALLING);
}

void loop()
{
  if (!bitCount){
    // Pull down clock line to make sure the calculator does not send while the atmega
    // is processing the incoming data.
    SET(DDRD,3);
    Serial.println(get);
    get = 0;
    bitCount = 8;
    CLR(DDRD,3);
    // Released the clockline.
  }
}
Does this follow the TI link protocol, or a proprietary scheme?
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 2 of 4
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement