Keyboard Shortcuts
ctrl + shift + ? :
Show all keyboard shortcuts
ctrl + g :
Navigate to a group
ctrl + shift + f :
Find
ctrl + / :
Quick actions
esc to dismiss
Likes
- BITX20
- Messages
Search
Re: Coding for JackAl
Jack Purdum
We have several graphs of the filters and the equalizer. For example: Specifically what are you looking for? Jack, W8TEE
On Tuesday, May 22, 2018, 11:44:24 AM EDT, bobh_us <rwhinric@...> wrote:
On Tue, May 22, 2018 at 07:34 am, Jack Purdum wrote: JackAl uses the audio board and its library, so, yes, very much so.Outstanding.? Will comply. At what sample rate is the processing done? Do you have a jpg of the audio graph in the deliverable? ...so I can get a head start :-) |
Re: Coding for JackAl
Jack Purdum
Hi Daniel: No, I haven't. One reason is because I have tried to keep all function prototypes, globals, and symbolic constants in one place. When you eventually see that header file, you will also find that I've tried to keep all of those files and variables in alphabetical order within the header file. If users write functions that belong in setup() rather than loop() (or elsewhere), I would call such a function MyExtensionsInitializations() rather than use the word setup in its name. This makes it easy to locate the setup() function using the search function in the IDE editor. It would also make it easier to find your initialization routine. Also, programs that can search multiple files for a certain string (e.g., grep, wingrep, powergrep) work better, too. Obviously, this is a style issue and there are a bazillion permutations possible. Pick one you like and use it consistently. Jack, W8TEE
On Tuesday, May 22, 2018, 11:52:16 AM EDT, D. Daniel McGlothin KB3MUN <kb3mun@...> wrote:
Jack,
Have you considered directly provisioning for this by making an "empty" extensions header/code file, perhaps named MyExtensions.h & MyExtensions.cpp, and including these files in the framework.? I'd go so far as to include a MyExtensionsSetup() function called from setup(), and a MyExtensions() function called from the loop(). Anyway, that is how I'd start with an adaptation of your (or anyone else's) codebase. Daniel |
Re: Coding for JackAl
¿ªÔÆÌåÓýJack,
Have you considered directly provisioning for this by making an "empty" extensions header/code file, perhaps named MyExtensions.h & MyExtensions.cpp, and including these files in the framework.? I'd go so far as to include a MyExtensionsSetup() function called from setup(), and a MyExtensions() function called from the loop(). Anyway, that is how I'd start with an adaptation of your (or anyone else's) codebase. Daniel |
Re: Knob adapter sleeve (6mm ID, 1/4 inch OD)
I hit this problem last night. The difference between 6 mm and 0.25" is only 0.014". I had a piece of 7 mil copper foil. I rolled it out flat then cut a tiny shim rectangle. I wrapped that around the 6 mm shaft and installed the knob. Works fine - no obvious wobble. If you have 3 mil foil, use 2 wraps. With the 7 mil foil, I actually used just a 180 degree half wrap place opposite the set screw.
73, Paul K2AYZ |
Re: Socketing a Nano to the other side of the Raduino
Jack Purdum
Some displays might be configured to work with the SPI interface, too. Jack, W8TEE
On Tuesday, May 22, 2018, 7:22:37 AM EDT, Rod Davis <km6sn@...> wrote:
Allison and all, with the KD8CEC firmware you can opt for a I2C
display Rod KM6SN
On 05/21/2018 07:23 PM,
ajparent1/KB1GMX wrote:
Why not remote it some from the mainboard and put a box around the back of it |
JackAl coding...OOPS!
Jack Purdum
All: In my long email, I have: ?? callDone = void MySlickFeature(int whichButton, int whichDisplayPage);?? // ERROR!! and it should be something like: ?? callDone = MySlickFeature(myButton, myPage);?? // ERROR!! That is, the call should not have the return data type or parameter data types as part of the call. Jack, W8TEE |
Re: #ubitx #ubitx-help
#ubitx-help
#ubitx
No mention of "fuse" here:??
toggle quoted message
Show quoted text
What looks like a fuse at the top left of the schematic is labeled "ON/OFF", so I take that to be the power switch on the volume pot. The 26 gauge stranded wire in the wiring harness might be considered an adequate fuse by some. Unfortunately that comes after the shunt protection diode.? As you so rightly pointed out.? ;-) Jerry On Tue, May 22, 2018 at 03:13 am, ajparent1/KB1GMX wrote:
For the life of me I do not understand why the diode is before the fuse. |
Re: Coding for JackAl
Jack Purdum
Are the filters/equalizer/etc. compatible (as blocks) with that Teensy visual system audio library they have? All: JackAl uses the audio board and its library, so, yes, very much so. Please note: Because I feel very strongly about the safety that type checking brings to the table, there are are currently 12 source code files: one *.ino file, one *.h file, and ten *.cpp files. One of those files carries a fairly stern warning in a comment at the top about making changes to it, as messing that file up may well ripple through the rest of the code, especially the filters that we've added. Of course, we encourage everyone to experiment with the JackAl board and is the primary reason that we picked an expensive processor: You have a mega-munch of memory resources (currently over 800K idle), a small knot of empty I/O pins, and a 10x clock speed to experiment with. That said, I strongly urge experimenters to create a new *.cpp file for your changes/additions. There's nothing magical about using *.cpp instead of *.ino. For the most part, it can be straight C code. Because I choose to do things this way, I needed to add a header file (MyButtons.h, which I will likely rename to JackAl.h) which contains little more than symbolic constants, prototype definitions, EEPROM offsets, and extern declarations for the project. The header file is important so that type checking takes place across files. That is, if you write a new function: ??? void MySlickFeature(int whichButton, int whichDisplayPage) ??? { ??????? // all your new code... ??? } Then the function prototype in the header file is just a copy of the function's signature: ??? void MySlickFeature(int whichButton, int whichDisplayPage);????// Add to header file ?Doing this makes sure you call it with two integer variables and that you don't try to use it as though it has a return value: ??? callDone = void MySlickFeature(int whichButton, int whichDisplayPage);?? // ERROR!! ?as that would be an error since it's a void function. Also, suppose you have a global name slickFeatureColor defined in your new *.cpp file, but you must let other files know about it so those files can use it. The header file would then need this statement: ??? extern int slickFeatureColor; The extern keyword tells the compiler: "You're going to see a variable used in several files named slickFeatureColor. Even though you don't know its memory address right now, you may use it as an int data type in those files." What this does is allows the compiler to create an attribute list (e.g., name and type) in the symbol table, but put two question marks in that table for where it resides in memory (its lvalue). (This is precisely what a data declaration is, but most programmers use the term declaration and declare when they should say "define". The terms "define" and "declare" are TOTALLY different things. That is, a data declaration is an attribute list, but without a defined memory space.) Then in your CPP file you have: ??? int slickFeatureColor; When the compiler sees this statement, it uses the Memory Manager to find a memory location where slickFeatureColor will live (i.e., its lvalue). Now, when the linker pass ties everything together, it can use the symbol table to take the proper memory address and put it where the two question marks are. If you define a variable, its memory address is known, unlike a data declaration. So, what do you gain for this extra work? First, debugging will be easier because you now can't call a function with the improper number of function parameters, you can't call it with improper types of parameters, and you can try to use it improperly in an assignment statement (i.e., if the function returns a float but you try to assign the return value into an int). This is the real value win for not using all *.ino files. However, there is another one. Second, the GCC compiler that hides below the IDE can do "incremental compiles". As you work, suppose you are only changing your new *.cpp file. The compiler has a "dirty flag" for each file. If you're mucking about in only one file, only that file has its dirty flag set. When you go to compile, the compiler looks to see which files have the dirty file set. Since only one file has a set dirty flag, only that file gets recompiled! The linker can then take the old object files and splice the newly-compiled code into it, saving somme time. When I start work in the morning (i.e., all? dirty flags set), it takes almost two minutes to compile the JackAl code, and my machine is no speed slouch. However, because one tends to work with only one or two source files at a time, subsequent compiles may take 15 seconds to compile/load. While a reduction of 1.75 minutes may not seem like much, run that out to a 100 compiles a week and you're talking about almost wasting 3 hours twiddling your thumbs. This is a long explanation, but hopefully it serves two purposes: 1) to explain why JackAl has only one INO file, and 2) to encourage you to make your additions as CPP files. Jack, W8TEE
On Tuesday, May 22, 2018, 8:28:45 AM EDT, bobh_us <rwhinric@...> wrote:
Agreed. Great work. Mine will have that plexiglass panel. Makes the display pop. All kinds of gamer pc lighting possibilities. And the visual ¡°works¡± very Mr. Machine-like. Are the filters/equalizer/etc. compatible (as blocks) with that Teensy visual system audio library they have?? Can¡¯t wait. |
Tom I appreciate your effort. I received a question about MAC from a number of users.?But I did not have a MAC and it was difficult to test. Your test has helped me a lot. Thank you Ian KD8CEC 2018-05-21 18:02 GMT+09:00 Tom, wb6b <wb6b@...>: Hi, |
Re: ubitx code version 4.3 for review, testing
Ashhar Farhan First of all, congratulations on recent things. You did a hard job in a busy schedule. I have confirmed that you have maintained the existing code and have at least a few modifications. It will satisfy users who want to keep existing code. (usage 57%) I accept whatever you decide.? and I will test your new firmware. Ian KD8CEC 2018-05-22 17:24 GMT+09:00 Ashhar Farhan <farhanbox@...>:
|
Re: Nextion Display
I am interested in this too. I have not received ?my ubitx yet but have been playing around with the Arduino and stm. I've ?not had much luck with stm ?f303k8 ?nucleo , mostly because like it has been mentioned library ?issues ?I have not tried ?the ?blue pill or the f4 boards I have.
-- 73's ?kn4ud Allen ?Merrell |
Re: JackAl Board Debut
Agreed. Great work.
Mine will have that plexiglass panel. Makes the display pop. All kinds of gamer pc lighting possibilities. And the visual ¡°works¡± very Mr. Machine-like. Are the filters/equalizer/etc. compatible (as blocks) with that Teensy visual system audio library they have?? Can¡¯t wait. |
Re: Raduino CAD Files
My present layout (on the screen now) extends the Raduino width about an inch or so to the right (inside). The Pill board is set in toward the left about 1.5", leaving room on the right for a very short USB pigtail from the Pill USB connector that solders to the Raduino board. There's a Micro USB connector on the Raduino board that connects to all the USB signals from the pigtail, but has a breakout for a Schottky diode in the 5V path. All of this should fix the dual-power problem while allowing an unmodified Pill to be used.
I'm providing a couple connectors for the I2C bus and the SPI bus, and all the unused Pill I/O's will go to yet another connector. I'm putting a capacitor coupled DC voltage divider on one of the Pill analog inputs for audio input to drive my software S-meter. Perhaps there should be optional voltage dividers on other analogs? For now, I'm calling this the "Raduino Pill". Comments/Suggestions? Joe W3JDR |
Re: Socketing a Nano to the other side of the Raduino
Rod Davis
¿ªÔÆÌåÓýAllison and all, with the KD8CEC firmware you can opt for a I2C
display Rod KM6SN
On 05/21/2018 07:23 PM,
ajparent1/KB1GMX wrote:
Why not remote it some from the mainboard and put a box around the back of it |
Re: Transmitter Mods
The problem is everyone wants a simple swap this part a poof its wonderful.
Applying a simple fix to only one stage is not going to achieve that. The IRF510 has been used to ge high power it can with attention to feeding it and mating the output.? In uBitx case the problems start earlier with power to actually drive it. A lot of looking and testing says several problems are concurrent. Drive diminishes with increasing frequency.? This impacts Q90, the predriver and the driver stages. With the finals remove I get nearly .1W drive at the driver output and considering the gain of the IRF510 1.5W is not unexpected.? However at 80M we get over a .6W!? We have to first fix the drive issue.? If we can get .5W at 10M we should expect to see 10W or more. 2n3904 Hfe decreases with increasing current, and the HFE spread is wide so some are running at high current.? This impacts the first three stages and compounds the above issue.?? Output transformer is less than optimum.? One FT43-50 is marginal for 10W. Those issues combined leave the poor IRF510 in a state of doing the best it can with both hands tied.? ?So far I've rolled in several of the mentioned mods plus a few of my own.? My goal is to flatten the gain curve to 10W on 80M and 9 on 10M or better.? I'm getting close on this.? With RV1 full up I've seen more than 10W on 10M with?13V dc power. Allison |
Re: boosting the power on 28 MHz
#ubitx
Gordon Gibby
toggle quoted message
Show quoted text
|
to navigate to use esc to dismiss