Shop OBEX P1 Docs P2 Docs Learn Events
Do pulses CTRA / TFRK? — Parallax Forums

Do pulses CTRA / TFRK?

hal2000hal2000 Posts: 66
edited 2008-05-22 22:20 in Propeller 1
Hello everyone
·
I have a question
·

With CTRA / TFRK registers open generate a certain number of pulses?
·
I want to control the number of pulses
·
P 1000 at a frequency of 150kHz
·
·
I believe that we can not because CTRA / TFRK operating in Loop
I'm not sure
·
How can you do?
·
A greeting


Envio editado por (hal2000) : 5/21/2008 3:56:37 PM GMT

Comments

  • StefanL38StefanL38 Posts: 2,292
    edited 2008-05-21 21:30
    hello hal,

    funny picture smile.gif

    i'm not familiar with the counters. I think it is possible.

    You should edit your threadtitle that way that the title already gives all important information

    something like "can counters be used to create a well defined amount of pulses?"

    another way would be to code this in assembler

    150 kHz = 6,67 microSecs

    this should be possible in Assembler

    in assembler you could use the command djnz
    Usermanual page 370:
    DJNZ: Instruction: Decrement value and jump to address if not zero.

    most commands in assembler take 4 clockcycles

    at 80 MHz 1 clockcycle is 12.5 nanoseconds

    so 4 clockcycles is 50 nanoseconds

    so 6,67 microseconds gives you 6,67 / 0,05 = 133 commands

    the fastest way to create pulses would be a loop that uses the xor and the djnz-command

    as a raw picture a code-snippet (that needs some more code for working

    
    DAT
                  mov       _mP_long,               par '_mP_long contains the number of loops
                  mov       LoopCntr,_mP_long
    LoopStart     xor       OutA, _toggleBit
                  djnz      LoopCntr, #LoopStart         'decrement "LoopCntr" jump to label "LoopStart" if "LoopCntr" not "0"
    
    
    _toggleBit              long |< 3
    
    LoopCntr      res 1
    _mP_long      res 1
    
    



    two commands with 4 clockcycles = 8 clockcycles = 0,1 Microseconds

    this would toggle PIN3 at 0,1 MicroSeconds = period 0,2 MicroSeconds = 5000 kHz

    for 150 kHz you could even use the WAITCNT-command

    for more information about assembler see

    http://forums.parallax.com/showthread.php?p=663640

    Stefan
  • hal2000hal2000 Posts: 66
    edited 2008-05-21 23:08
    Thanks StefanL38
    My image, ;-) I like black humor skull.gif

    Sorry for my bad English
    I'm learning English, four months ago

    You're right the best way is to assemble

    I am thinking to make a program that controls 4 stepper Motor·
    Using 4 controllers for motor, propeller only has to generate steps and address

    As I use micro steps need to 150kHz (only possible to assemble)

    The idea is to make a library that controls the 4 engine with variable 5
    steps
    address
    frequency of steps (speed)
    acceleration

    acceleration is to define a speed of transition from one sequence to another

    A list of serious data

    1 steps memory address frequency acceleration
    ··············steps···direction····frecueny····· acceleration·
    Memory 2 1000····· · 1············ ··5khz············ 200······· (steps of transition from 100Hz to 5Khz)
    Memory 3 300······· ·1············· ·10Hz··········· 300········(steps transitional 5Khz a10hz)
    Memory 4 500······· ·1·················0hz························· (0hz is stop during 150khz/500· pause)

    This is a possibility, I'm thinking about it

    I'm looking for a book, I can not find any library
    I'm trying to understand the propeller of assemble, gradually

    I believe that this routine is not difficult to schedule

    With my little knowledge, it is difficult for mi

    you have a better idea?
    Any suggestions would be welcome

    Thanks wink.gif
  • Paul BakerPaul Baker Posts: 6,351
    edited 2008-05-22 00:09
    If you are looking for a simple 50% duty cycle frequency it should be rather easy to do. All you need to do is setup the counter to do it's thing then do a waitcnt for the amount of time it would take to produce the number of cycles you need to produce, then stop the counter. It may take a little bit of fiddling with the timing if you need to have the time period be precise since there's going to be a little slop due to the overhead of execution between starting the counter and entering the waitcnt (and turning off the counter).

    BTW your english is very good for somone who has just started to learn.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Paul Baker
    Propeller Applications Engineer

    Parallax, Inc.
  • StefanL38StefanL38 Posts: 2,292
    edited 2008-05-22 07:14
    HAL?Hello!, HELLOHAL,

    (i like playing with words)

    there are sevreal threads about driving stepper motors

    try a search with the parallax-google searchfunction
    search.parallax.com/search?ie=&q=%2B%22f%3D25%22+stepper+.spin&site=parallax&output=xml_no_dtd&client=parallax&btnG=Google+Search&access=p&sort=&lr=&num=100&ip=88.202.126.34&proxystylesheet=parallax&oe=&filter=p

    this is much more effective then the build-in function

    in this one AxisDriver.spin the assembly-code is quite good commented

    http://forums.parallax.com/showthread.php?p=699712

    but there are minmum three more threads with sourcecodes in assembly


    To move 2 axis at the same time you can use the "Bresenham-Algorithm"

    The "Bresenham-Algorithm" needs only addition and substraction of INTEGERs to calculate everything
    it does NOT need multiplication or division or floating-point-calculation

    by googling i found this PDF

    www.khwarzimic.org/takveen/helix.pdf

    there are o lot more hits for this keyword

    Also search the propellerforum about steppermotors
    best regards

    Stefan
  • Graham StablerGraham Stabler Posts: 2,507
    edited 2008-05-22 10:17
    What you want to do is possible because I have done something very similar myself, my code is based on the way the g-rex motion controller works:

    www.geckodrive.com
    finance.groups.yahoo.com/group/geckodrive/ See files section for details

    You can see it operating some steppers on my youtube account

    www.youtube.com/user/littlestworkshop

    Essentially you have a loop that lasts a fixed length of time, at first you increment the frequency (frqa) by a given amount on each loop to accelerate the motor, then you keep the frequency for the transition as you call it before decrementing the frequency on each loop to decelerate. You do not need to count pulses you just use the loop time and frequency. You have to be careful of things like short moves where there will be a triangular motion profile and also because the loops are fixed time lengths you will need to adjust the final frequency to ensure you reach your target.

    It is possible to do multi axis moves by considering them as vectors, one cog can do two axes easily and you could sync multiple cogs for more. I have not done this yet as at the moment I have no need.

    Can you have the code you ask? Well at the moment no. I have found that in the CNC community people are very opportunist and I know for a fact that the moment I release the code it will turn up in a dozen products. Plus the concept was not mine and I think the g-rex was an open source project originally and although I have used none of their code I have taken inspiration from the ideas, I'm not sure what to do.

    Graham
  • hal2000hal2000 Posts: 66
    edited 2008-05-22 15:27
    I see a lot of information
    Thanks to all

    long time in assimilate into so much data
    English => head processor (aid Goglee) + professor of English = IspanIngles interpreted.
    In English there is good information
    It is important, I have to learn English

    Very good document StefanL38 "PDF" I had some doubts resolved.


    Graham, quiet do not want to be a seller of CNC controllers
    I would like to have a CNC machine, but it's not my goal.

    I want to learn everything I can.
    What I like most is to do experiments

    I work as a technical post-production and camera operator

    My experiment Timelapse

    http://es.youtube.com/watch?v=StoacJtrLh4



    I put on youtube the things I enjoy, there is no professional work
    This will clarify for the curious.

    I put a link from the driver that I use

    http://www.linengineering.com/line/contents/stepmotors/R325.aspx

    I long days (I think months) to understand as information ;-)
  • Graham StablerGraham Stabler Posts: 2,507
    edited 2008-05-22 22:20
    Well I think your best way to proceed is to learn to program in assembly and start creating pulses for your motors, it will not take you long and we are all here to help.

    Graham
Sign In or Register to comment.