Writing a needet HAL Component
27 Aug 2019 00:51 - 27 Aug 2019 00:52 #143267
by rodw
Replied by rodw on topic Writing a needet HAL Component
Ok, the ; needs to go after the do{}while loop not on the first character of the next line
All lines in C need to be terminated with a ; sorry about that
Yes matching braces is important.
But I missed one on this line, so add it in
so put the last one back!
It will be pretty close then
All lines in C need to be terminated with a ; sorry about that
do{
this_cycle++;
}while(this_cycle < cycle);
Yes matching braces is important.
But I missed one on this line, so add it in
if(!is_warping){
so put the last one back!
It will be pretty close then
Last edit: 27 Aug 2019 00:52 by rodw.
The following user(s) said Thank You: Emanresu
Please Log in or Create an account to join the conversation.
27 Aug 2019 07:10 - 27 Aug 2019 07:15 #143287
by Emanresu
Replied by Emanresu on topic Writing a needet HAL Component
There is no need to say sorry for anything^^
For me C, C# and C++ is some kind of black magic
Ive to go to work, so i just give a quick update:
Everything looks good, just no counting so far.
This is while Commpiling:
The code.
For me C, C# and C++ is some kind of black magic
Ive to go to work, so i just give a quick update:
Everything looks good, just no counting so far.
This is while Commpiling:
voxters@Vox-CNC:~/Arbeitsfläche$ sudo halcompile --install runner.comp
make KBUILD_EXTRA_SYMBOLS=/usr/realtime-3.4-9-rtai-686-pae/modules/linuxcnc/Module.symvers -C /usr/src/linux-headers-3.4-9-rtai-686-pae SUBDIRS=`pwd` CC=gcc V=0 modules
make[1]: Entering directory `/usr/src/linux-headers-3.4-9-rtai-686-pae'
CC [M] /tmp/tmpLn7hZ4/runner.o
runner.comp: In function '_':
runner.comp:50:9: warning: value computed is not used [-Wunused-value]
runner.comp:57:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/tmpLn7hZ4/runner.mod.o
LD [M] /tmp/tmpLn7hZ4/runner.ko
make[1]: Leaving directory `/usr/src/linux-headers-3.4-9-rtai-686-pae'
cp runner.ko /usr/realtime-3.4-9-rtai-686-pae/modules/linuxcnc/
voxters@Vox-CNC:~/Arbeitsfläche$
The code.
description
"""
Example:
loadrt u32runner [count=N|names=name1[,name2...]]
runner.N.run bit in => run
runner.N.from u32 in => Number to start =>(just nice to have)
runner.N.to u32 in => Number to count to =>(if there is no "from" this can also be "THE" number)
runner.N.speed s32 in => count speed =>(must have - can also be an u32 if in ms)
runner.N.cycle bit in => repeat yes/no =>(must have)
runner.N.rev bit in => count backwards =>(just nice to have)
runner.N.warp bit in => one way or up and down =>(one way is need, up and down is nice to have)
runner.N.out u32 out => output =>(need of course)
""";
author "Rod Webster";
// Example Calibration Data: 0v = 122.9 kHz, 10v = 925.7 Khz should be entered as 122900 and 925700
pin in bit run "count if true";
pin in signed from "number to count from";
pin in signed to "number to count to";
pin in unsigned speed = 1 "number of cycles between counts (default = 1 = one servo thread cycle)";
pin in bit cycle = 1 "if true, start again or stop";
pin in bit warp "if true, count up and then back down";
pin out unsigned out "the number to output";
function _;
license "GPL";
;;
#include <rtapi_math.h>
FUNCTION(_) {
static int first_pass = 1;
static int this_cycle = 0;
static int step = 1;
static int counter = 0;
static int is_warping = 0;
if(first_pass){
//set up
counter = from;
first_pass = 0;
}
if(cycle < 1){
cycle == 1;
}
if(run){
do{
this_cycle++;
}while(this_cycle < cycle);
this_cycle = 0;
if(!is_warping)
if(from > to) // Set the direction to count
step = -1;
else
step = 1;
counter += step;
if(counter == to){ // we got to the destination
counter = to; // stop counting
if(warp){
is_warping = 1;{
if(step > 0)
step = -1;
else
step = 0;
}
}
}
else{
counter += step;
if(counter == to){
is_warping = 0;
if(step > 0)
step = -1;
else
step = 0;
}
}
}
}
Last edit: 27 Aug 2019 07:15 by Emanresu.
Please Log in or Create an account to join the conversation.
27 Aug 2019 07:29 - 27 Aug 2019 07:37 #143289
by Emanresu
Replied by Emanresu on topic Writing a needet HAL Component
Off Topic
Just noticed you live in one of the most beautiful countries in the world.
I was working on going to Australia since 5 years with my CNC-Shop.
I also had different sponsorships to start with.
But each time the GOV told my sponsors they have to look 3month in Australia
bevore they can take me.
Now i try New Zealand^^
No idea why, just had to mention it. Maybe just in case if you wona live in Germany
and switch Passports :-P
Just noticed you live in one of the most beautiful countries in the world.
I was working on going to Australia since 5 years with my CNC-Shop.
I also had different sponsorships to start with.
But each time the GOV told my sponsors they have to look 3month in Australia
bevore they can take me.
Now i try New Zealand^^
No idea why, just had to mention it. Maybe just in case if you wona live in Germany
and switch Passports :-P
Last edit: 27 Aug 2019 07:37 by Emanresu.
Please Log in or Create an account to join the conversation.
27 Aug 2019 08:13 #143293
by rodw
Replied by rodw on topic Writing a needet HAL Component
Well it looks like I got your logic wrong.
Try changing to this
I was counting to the wrong variable
I think you need to reconsider the pins cycle and warp because the way I see it it would be much easier to have one pin where:
0 = count once and stop
1 = count from from to to and repeat from the beginning
3 = count from from to too and back to from again and repeat. (warp)
That would be much easier to code as you could use a switch statement
Thanks for your interest in Australia. Clive S is coming to meet me on a holiday later in the year so there is hope for you yet. New Zealand is also an amazing country.
Try changing to this
do{
this_cycle++;
}while(this_cycle < speed);
I was counting to the wrong variable
I think you need to reconsider the pins cycle and warp because the way I see it it would be much easier to have one pin where:
0 = count once and stop
1 = count from from to to and repeat from the beginning
3 = count from from to too and back to from again and repeat. (warp)
That would be much easier to code as you could use a switch statement
Thanks for your interest in Australia. Clive S is coming to meet me on a holiday later in the year so there is hope for you yet. New Zealand is also an amazing country.
The following user(s) said Thank You: Emanresu
Please Log in or Create an account to join the conversation.
27 Aug 2019 08:58 #143295
by Emanresu
Replied by Emanresu on topic Writing a needet HAL Component
Awesome!
Cant wait to get home and test it!
In fact a single input with more variables was my first idea.
I just thought this is MORE complex and harder to realize.
(As you see... zero skills in coding )
So if this is easyer, just go ahead!
And a question:
Im free to change "signed" and "unsigned" for the
inputs / output or will it interrupt the code?
Atleast i get no message while compiling.
That way i dont need a converter in HAL.
Cant wait to get home and test it!
In fact a single input with more variables was my first idea.
I just thought this is MORE complex and harder to realize.
(As you see... zero skills in coding )
So if this is easyer, just go ahead!
And a question:
Im free to change "signed" and "unsigned" for the
inputs / output or will it interrupt the code?
Atleast i get no message while compiling.
That way i dont need a converter in HAL.
Please Log in or Create an account to join the conversation.
27 Aug 2019 10:14 #143306
by rodw
Replied by rodw on topic Writing a needet HAL Component
signed and unsigned make no difference really. They are the same size. They are much bigger numbers now but in the 8 bit days signed went from -32767 to +32767 and unsigned went from 0-65535
I can't guarantee I will get time to finish it off for you
I can't guarantee I will get time to finish it off for you
The following user(s) said Thank You: Emanresu
Please Log in or Create an account to join the conversation.
27 Aug 2019 14:26 #143326
by Emanresu
Replied by Emanresu on topic Writing a needet HAL Component
Perfeckt!
Thats an awesome information for further projects and give some new options!
Dont worry, if you dont have the time.
You allready helped me way more then i was thinking off when i started this Topic.
Now i know, its possible, what to look for and i even have a base to work on!
Thats an awesome information for further projects and give some new options!
Dont worry, if you dont have the time.
You allready helped me way more then i was thinking off when i started this Topic.
Now i know, its possible, what to look for and i even have a base to work on!
The following user(s) said Thank You: rodw
Please Log in or Create an account to join the conversation.
Time to create page: 0.104 seconds