Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - newsboys6

Pages: [1]
1
TI Z80 / Re: Accurate Subsecond Timing
« on: March 18, 2024, 12:44:39 pm »
IN is a program written entirely in hex provided by the youtube video linked up top.  It can be typed directly into the calculator and compiled by the calculator itself the code is as follows:

Code: [Select]
PROGRAM:0IN
:AsmPrgm
:DB00
:26006F
:EF9247
:EF5641
:EFBF4A
:C9

You type that into your calculator and save it.  Then you run: AsmComp(prgm0IN, prgmIN)

And there you go, you have IN which returns a 3 by default when both he tip and the ring are high.

These are the states returned to Ans by IN:

Value     Tip      Ring

0           Low     Low
1           High    Low
2           Low     High
3           High    High

They go low when they are connected to ground.  My little circuit connects the ring to the ground when a car rolls over either of the photoresistors thus triggering the start or end of something when Ans is not equal to 3 (equal to 1).

Thank you again, I can't say that enough.

2
TI Z80 / Re: Accurate Subsecond Timing
« on: March 17, 2024, 07:11:32 pm »
Oh wow Oh wow.

So time start starts the timer once called and then does timeit return the total time elapsed once it is triggered?

I do believe that these are what I need and when I get to work tomorrow morning I will hook everything up and let everyone know how it goes.

Cheap precision is something I have been chasing for a while and the hardware to hook up only requires a few leds, photoresisors, a transistor and a resistor.  Far cheaper than $50 for a single photogate from Vernier (you need two to time something).  I think something like this can benefit elementary schools, middle schools, and high schools.  Especially ones that are underfunded.

So, from the bottom of my heart, thank you.



Ok, don't know if i am using it wrong or not.  It could be a problem that the program I am using to listen to the link port is also storing values in Ans.  When I first ran it I was getting syntax errors when I was calling TIMESTRT after IN took the trigger from the linkport.

I switched things around to start the timer before everything else but being that I have to also call IN to listen to the state of the port may be causing problems.  My posted TI basic code below returns two 3's which is the default state of the linkport.

Not that a beggar can be a chooser but doing your emailed suggestion on having a program that listens and triggers and stores a set number of times in a list in Ans and is triggered by tip tip or ring ring might be the better way to go if possible.

Code and result attached below.

Code: [Select]
Lbl 0
ClrHome
Menu("Physics Tools","Car Timer",1,"Pendulum Timer",2,"Drop Timer",3,"Kinetic Energy",4,"Quit",5)
Lbl 1
ClrHome
Pause "Press Enter to Begin"
Asm(prgmTIMESTRT
Asm(prgmIN
While Ans=3
Asm(prgmIN
End
Asm(prgmTIMEIT
Disp Ans
Asm(prgmIN
While Ans=1
Asm(prgmIN
End
While Ans=3
Asm(prgmIN
End
Asm(prgmTIMEIT
Disp Ans
Disp "Press 1 to Time Again"
Disp "Or press 2 to Return to Menu"
Prompt K
If K=1
Goto 1
Goto 0

Ill attach an image later, it returns to 3's.


Edit (Eeems): Merged double post

3
TI Z80 / Re: Accurate Subsecond Timing
« on: March 06, 2024, 09:33:46 am »
Ok, so am I to assume that I am being a little naive again and that this cannot be simply solve with a little asm program that starts and then another that just gets a time and stops the timer?

I hate to bother but I know next to nothing about asm and have messaged thepenguin77 about this as he wrote a nifty little timer that responds to the linkport actions shown here: 

https://www.omnimaga.org/ti-z80-calculator-projects/thepenguin77's-utilities/msg350488/#msg350488

He has responded but is currently on vacation and I do not wish to interrupt the vacation any further.  He linked me to the page below:

https://wikiti.brandonw.net/index.php?title=83Plus:Ports:30

If I am understanding the asm from that page using what limited knowledge I have.

Code: [Select]
;Setup up a timer that waits 2 seconds
   di
   ld a,$47      ;8 hz
   out ($30),a
   ld a,0        ; no loop, no interrupt
   out ($31),a
   ld a,16       ;16 ticks / 8 hz equals 2 seconds
   out ($32),a
wait:
   in a,(4)
   bit 5,a       ;bit 5 tells if timer 1
   jr z,wait     ;is done
   xor a
   out ($30),a   ;Turn off the timer.
   out ($31),a

We are loading an 8hz clock into a ($47).  The 8hz clock is turned on ($30).  We load a with 0.  Now loop control is started ($31) (This is where we are running processes to count ticks?).  Below that we keep rolling until a is equal to 16 (counting 16 ticks at 8 hz equals 2 seconds).  I am not sure what all the wait part is doing other than hitting the $30 which is the on/off switch.

So as I understand using 8hz only gives an accuracy of 1/8th seconds but there are higher hz clocks available.  Ticks will have to be counted and stored somewhere which may be able to be retrieved by the same or another program to then use some math and figure out the time based on the ticks that have passed.

So all this is running while the ti-basic processes are also running which I think would also use the CPU which could affect the accuracy of the calculated time?

I feel like I am getting somewhere and I feel like I am not.  Am I making any sense at all here?

4
TI Z80 / Accurate Subsecond Timing
« on: March 05, 2024, 09:13:44 pm »
Hey Everyone,

I'm new to a lot of things this forum being one of them.  First and foremost I am a high school science teacher seeking to make science more fun for my students.  When I started, all the classroom I started in was hot wheels cars and track with handheld stopwatches for timing.  Well, I didn't like that.  So I bought some more expensive carts and the track they roll on.  With the new sets, I never saw a more bored group of kids and they always seemed to be engaged when using hotwheels.  So I set out to build a way for them to use hotwheels with precision.  I discovered Anders Dnar's stopwatch program on ticalc that seemed to be exactly what I needed, a timer that could time events using changes in state of the linkport.  Performance wise the interface is a little clunky for high school level and I found myself having to set up all the stations before student use.  (my setup is in the attached photo)

I kind of lost hope and eventually stumbled upon a youtube video showing how to hex code directly into the calculator a little "driver" that could give ti basic access to the link port (linked below if you have never seen it) and with that I felt I could use ti basic to make a simpler interface program for students to use.

&index=3

I was very naive as looking through the ti manual I thought i could simply use startTmr and checkTmr.  Well the first time it ran it threw a little zero on the screen as the car passed both sensors in less than a second.  Haha, what a great timer able to do high precision timings at the second level.

Thats what I am looking for.  Thats the idea.  A way better startTmr and checkTmr command that uses Asm(prgm.  They would need to be separate like that if possible.  One to start the timer and one to display the time to the screen and stop the timer.  I can more easily impliment them in pendulum period timing if they are separate.  There is a program for the CE that does that but not the 84+ from my searching of the web.  I use TI-84+'s in my classroom.

Here is my beginner level ti basic program (I have done no improvements to the way text is displayed and will work on that once i nail down the timer)  I will also fill in all the place holders.

Code: [Select]
Lbl 0
ClrHome
Menu("Physics Tools","Car Timer",1,"Pendulum Timer",2,"Drop Timer",3,"Kinetic Energy",4,"Quit",5)
Lbl 1
ClrHome
Pause "Press Enter to Begin"
Asm(prgmIN
While Ans=3
Asm(prgmIN
End
startTmr
Asm(prgmIN
While Ans=1
Asm(prgmIN
End
While Ans=3
Asm(prgmIN
End
chckTmr
Disp "Press 1 to Time Again"
Disp "Or press 2 to Return to Menu"
Prompt K
If K=1
Goto 1
Goto 0
Lbl 2
ClrHome
Disp "Pendulum Stuff!"
Pause "Press Enter"
Goto 0
Lbl 3
ClrHome
Disp "Drop It!"
Pause "Press Enter"
Goto 0
Lbl 4
ClrHome
Disp "Kinetic Energy!"
Pause "Press Enter"
Goto 0
Lbl 5

Thanks everyone for taking the time to read this.

Pages: [1]