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: Socketing a Nano to the other side of the Raduino
Might be able to dampen those birdies by fiddling with si5351 output drive levels,
toggle quoted message
Show quoted text
which determines how hard the diode mixers are driven. It's also possible these birdies are due in part to crosstalk between the three clocks coming out of the si5351.? ?(Which would be affected by the drive level selected.) If so, could be addressed by a better Raduino using something other than a single si5351.?? On Tue, May 22, 2018 at 09:34 am, Jerry Gaffke wrote:
But lots of other birdies, strong and pure, clearly heard with an antenna?connected, |
Re: Socketing a Nano to the other side of the Raduino
I butchered mine, have the Nano socketed into the back of the Raduino as suggested,
hanging over the radio.? Works fine, and no mechanical conflicts.? Not much RFI either. Difficult to cut the old Nano free using diagonal cutters, I wound up shredding the Nano into tiny little pieces.? Maybe better to use a Dremel tool using a mini angle grinder: ? ? Then remove what's left on the black plastic from that header? and pluck the pins out from that black plastic side of the board while heating them one at a time with a soldering iron. Don't pull the cut side of the pin through the board, the ragged ends of the pins where they were cut will rip up the pads. Clean the board well with alcohol when done, a little bit of metalic grit in the wrong place will cause big trouble. LED's on the Nano are no longer visible, but I seldom look for them.? Only need them when programming, and even then not much.? And since the Nano is socketed, you can pop the Nano out of there when programming and get full access if you wish. This also gives access to the reset switch, though the reset comes out to that unused 6 pin programming header on one end of?the Nano, could add a second reset switch there. Here's a schematic of the Chinese Nano Clones: ? ?? With the USB cable from the host not plugged into the Nano, I see no 12mhz? on the CH340's resonator.? When a USB cable is plugged in, I see 5v pk-pk there, would? expect that to be causing all sorts of havoc. But curiously enough, only a very faint raspy little bird, in my case around 12.05mhz. That can vary by 100khz from the nominal 12mhz, as the ceramic resonators are not very accurate.? Not much evidence of the dreaded 16mhz oscillator either, just a very faint bird when tuning around without an antenna.? Signals from those 12 and 16mhz resonators can be identified by bringing your finger near the resonator, the frequency will change by several khz.? Since the 16mhz resonator is now hidden, I brought a wire out from the ATMega328P pin 8 (TOSC2, drives the resonator) where I could touch it.? Under one volt pk-pk there, the Nano is apparently programmed to use the low power oscillator.? But lots of other birdies, strong and pure, clearly heard with an antenna?connected, and clearly harmonics of something?since they?zip by much faster than?I am tuning. These don't move when I put my finger on the Nano's resonators, I haven't tried to? identify exactly where they are coming from. The (minor) downside of an?unshielded radio that doesn't bother with the extra $100 of sheet metal.? And of course, I can hear the?BFO quite well too.? Would be very interesting to get one of those Nano's that was? creating all the obnoxious audio tones, see exactly what's going on.? A possible fix might be to program the Nano to use the internal RC oscillator instead of the 12mhz? resonator.? Factory default for the Atmel chip is around 8mhz using the RC oscillator, this can be trimmed to most anything you want via flash bits. Here's the Atmel datasheet: ?? ########## Programming the Nano through a CP2102 instead of the onboard CH340: The 12mhz CH340 resonator may not be an issue, it's disabled when no cable to the host is plugged into the Nano's mini-USB port, and even when plugged in I didn't hear much of it when tuning the radio around 12mhz.? However, I was able to verify that a CP2102 adapter such as this: ? ?? worked fine with the Nano under the Arduino IDE.? So I'll document that here in case it's of interest: The Nano's CH340 has series 1k resistors on the?TXD and RXD UART lines to the ATMega328P's D0,D1.? So when the CH340 is not plugged?into a USB host and is quiet, we can drive D0,D1 from the external CP2102.? ? Hookup is as follows:? CP2102 GND to Nano GND CP2102 5v to Nano 5v CP2102 RXD to Nano TXD (D0) CP2102 TXD to Nano RXD (D1) The 5v pin from the CP2102 is there to supply power to our Nano, about 100ma max I believe. The 3.3v pin from the CP2102 is there to provide 3.3v if you need it, we don't. The CP2102 chip from SiLabs runs on 3.3v, and so drives TXD to a max of 3.3v but?that is sufficient to work with the RXD input of our 5v Nano. The CP2102 chip has 5v tolerant inputs, so the 5v TXD from the Nano is perfectly fine. Verify that your operating system sees the CP2102, and select the correct port within the Arduino IDE. (Doing that was trivial under Ubuntu, but you and google are on your own here.) Hold the Nano reset button down, click Upload in the Nano IDE, wait till the compile is complete, release the button. Should just load exactly as it did with the CH340. You can avoid messing with the Nano's reset button if you hook the CP2012 DTR line to one of the RST pins on the Nano through a series capacitor.? The cap is typically 0.1uF, but I found that not to be sufficient, probably because the 0.1uF cap to the CH340 on the Nano was sucking away much of the DTR's attempt at reset.? Bumping that series cap in the DTR from the CP2102 up to a 3.3uF cap worked for me. You could also use one of the very popular FTDI cables in a similar manner. Try to get a real one, avoid the clones, as FTDI is now engaging in defensive driver writing, disabling any clones it sees. They got tired of most calls to their product support team turning out to be a problem with a clone. I'm speaking here of devices that pretend to be an FTDI chip, the CH340 is not an FTDI clone. ######### Jerry, KE7ER ? |
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 |
to navigate to use esc to dismiss