Keyboard Shortcuts
Likes
- BITX20
- Messages
Search
Re: no matching function for call??
¿ªÔÆÌåÓýWhat changes are required to the sketch to use the current version? I was unable to locate version 1.0.2 ? v/r Fred W4JLE ? From: [email protected] [mailto:[email protected]] On Behalf Of Art Olson
Sent: Tuesday, February 21, 2017 11:34 To: [email protected] Subject: Re: [BITX20] no matching function for call?? ? Think you need to change the ether kit version in IDE to 1.0.2.?
|
Re: Flutter Fix
Jack Purdum
To reinforce what Jerry is saying, pin names 0 and 1 on the Nano are used to communicate with the PC via the Serial object, so it's best to leave them as is if you expect to do any debugging. Pin 2 and 3 are the only external interrupt pins on the Nano, so leaving those free if you can is a good idea in many cases. (My code, for example, uses interrupts rather than polling for the rotary encoder.) The A4 and A5 pins Jerry mentioned are used in multiple libraries as they are part of the I2C and other interfaces. A common mistake when using the ADC pins is to use 1024 in some form of equation because that is 2 to the 10th power. However, keep in mind that zero is a valid value, so the range is 0-1023. (That is, the max value is not 1024.) In Jerry's setup() code, the 'p' got dropped. It should be: ? ? pinMode(4, OUTPUT); Finally, if you are using interrupts in your code, using delay() or the Serial object will mess things up because they call their own interrupt routines. Jack, W8TEE From: Jerry Gaffke via Groups.Io <jgaffke@...> To: [email protected] Sent: Tuesday, February 21, 2017 5:55 PM Subject: Re: [BITX20] Flutter Fix John Smith, Regarding noTone() Pin 6 is used in the Raduino sketch for "CW_TONE", Ashhar has it set up to send out a sidetone. ?Probably best to let pin 6 be, pin 4 is free though, it gets defined as "TX_LPF_SEL" but that define is never used. ?I tried my code snippet, the compile complained until noTone() was given a pin number to shut down, even though the library can only generate one tone at a time. ?So working code could be had by adding this anywhere inside the setup() routine in the Raduino sketch, including right at the top as shown here ######################## void setup() { ? ? inMode(4, OUTPUT); ? ? tone(4, 1000); ? ? delay(5000); ? ? noTone(4); ######################## Note that "4" is labeled as "D4" in the Raduino schematics, and is more a name than a number. ?It is actually pin 22 of the Nano. ? The Nano has pin names 0 through 12, though 8,9,10,11,12 are used by the LiquidCrystal library for the 2x16 LCD. ? These are all strictly digital pins, can be input or output, but have states of only high or low. ?The Nano also has pin names A0 through A7, though A4,A5 are used inside the Si5351 library. ?These can be analog inputs to the ADC (such as for reading the the voltage of that tuning pot), or can be used as digital pins.? If you plan to mess around with Arduino programming, probably a good idea to get another Nano or two. ?They are quite cheap, and it is possible to program them in such a way that they will no longer talk to you. ?Probably don't want to brick the Nano that came with the Raduino. Jerry On Tue, Feb 21, 2017 at 10:48 am, Jerry Gaffke wrote:
?
|
Re: Flutter Fix
Whoops, had a copy-and-paste error. ?That first line should be: ? ?pinMode(4, OUTPUT); Also, while that first line is typically in the ?setup() ?routine, the other three lines could be most anywhere, and need not be together. On Tue, Feb 21, 2017 at 02:55 pm, Jerry Gaffke wrote: inMode(4, OUTPUT); ? |
Re: Enclosure for BITX40
Looks great Roy, what speaker/size are you using? David KG7WFM On Tue, Feb 21, 2017 at 1:30 PM, Roy Appleton <twelveoclockhigh@...> wrote:
|
Re: KB1GMX on the BITX
Allison's comments are probably worth chasing a little further. ?Here's a summary of her points, and my comments: 1) ?Diode ring injection level should be higher for the 1n4148's Likely true. ?An easy fix is to move from 1n4148's to a couple BAT54S's in that DBM. ?Perhaps even try a commercial DBM here if you really know what you want. ?And/or adjust the injection level. ?All easily done. 2) ?DBM wants ports at 50 ohms for better overload and IMD performance Probably true. ?But 200 ohms works well for feeding the crystal filter, and does reduce power consumed. ?Somebody with the W7ZOI 50 ohm amps might patch them in and feed the filter appropriately, see if the improvement is worthwhile. ?Could be that much of this preference for 50 ohms is because it's a nice standard impedance to look at and test with, and not so much driven by performance. ? 3) ?Recommends diplexer between DBM and crystal filter One of those things that adds parts and complexity, may well reduce spurious received signals. ?But we seem to have identified all the images and birdies thus far, perhaps this doesn't add much to performance. ?Would be worth trying, do an A/B comparison. 4) ?Too much RF gain Don Cantrell has a nice hack for this, just shut down power to Q1. ?Though some gain at Q1 might prove useful in some cases. ?Alternately, put a pot on the rx signal between the relays. ? ?If we reduce RF gain we need to increase AF gain, and that will result in greater sensitivity to power supply noise. ? 5) ?Move VFO to high side of IF to reduce images. Yup. ? My Si5351 VFO will be up around 19mhz, just a matter of Raduino code and moving the BFO a couple khz. A few other things I'm keeping in mind: 6) ?Q13 can blow, either from a nearby transmitter or from too much power dissipation for a Sot23. ?Use a TO92 there? ?Add Raj's back-to-back diodes? 7) ?Q14 emitter resistor can burn out, find a bigger part? 8) ?Might want Raj's fractional ohm source resistor to protect the IRF510. ?My guess is it's not often seen in an RF power amp because on standard RF transistors the source is attached to the tab which gets grounded to the heat sink. ?Not true with the IRF510. ?Maybe a PolySwitch to limit current. 9) ?Add minor hardware bits needed to support CW, maybe standalone PSK31 10) ?Add features for easy testing. Jerry, KE7ER |
Re: Flutter Fix
John Smith, Regarding noTone() Pin 6 is used in the Raduino sketch for "CW_TONE", Ashhar has it set up to send out a sidetone. ?Probably best to let pin 6 be, pin 4 is free though, it gets defined as "TX_LPF_SEL" but that define is never used. ?I tried my code snippet, the compile complained until noTone() was given a pin number to shut down, even though the library can only generate one tone at a time. ?So working code could be had by adding this anywhere inside the setup() routine in the Raduino sketch, including right at the top as shown here ######################## void setup() { ? ? inMode(4, OUTPUT); ? ? tone(4, 1000); ? ? delay(5000); ? ? noTone(4); ######################## Note that "4" is labeled as "D4" in the Raduino schematics, and is more a name than a number. ?It is actually pin 22 of the Nano. ? The Nano has pin names 0 through 12, though 8,9,10,11,12 are used by the LiquidCrystal library for the 2x16 LCD. ? These are all strictly digital pins, can be input or output, but have states of only high or low. ?The Nano also has pin names A0 through A7, though A4,A5 are used inside the Si5351 library. ?These can be analog inputs to the ADC (such as for reading the the voltage of that tuning pot), or can be used as digital pins.? If you plan to mess around with Arduino programming, probably a good idea to get another Nano or two. ?They are quite cheap, and it is possible to program them in such a way that they will no longer talk to you. ?Probably don't want to brick the Nano that came with the Raduino. Jerry On Tue, Feb 21, 2017 at 10:48 am, Jerry Gaffke wrote:
? |
Re: CW or not to CW?
William Kimber
¿ªÔÆÌåÓýModulated CW (MCW) originally was a AM tone. So you had carrier
plus both side-bands.? Receivable on ordinary am receiver. On 02/22/2017 10:21 AM, Todd K7TFC
wrote:
|
Re: CW or not to CW?
A pure sine wave into the mic of an ideal SSB transceiver would transmit a clean AIA CW signal. ?In the real world, that sine wave will be distorted, and the carrier not fully suppressed. ?But it does allow you to transmit real CW on any unmodified SSB transceiver As anybody who has checked in here in the last few months is likely long tired of hearing, I'd prefer generating CW by unbalancing the modulator as per post 20933. ?The DC into the modulator can be easily shaped to avoid key clicks, and this is not a sensitive point in the rig to be adding an extra bit of stuff to. ?What's more, it could make debug of the transmitter easier than it would be if injecting RF further down. ?On the other hand, you could have more parts fail in the transmitter chain and still transmit on CW if you are injecting 7mhz down by the LPF. Jerry, KE7ER On Tue, Feb 21, 2017 at 01:21 pm, Todd K7TFC wrote:
? |
Enclosure for BITX40
http://m.banggood.com/Electronic-Plastic-Shell-Cartridge-Handle-Project-Case-Desk-Instrument-200x175x70mm-p-1035473.html?rmmds=search I had ordered a couple of the Banggood cases and finally got to mounting my BITX40 in it. I'm not done yet but wanted to share some photos of my work so far too give others an idea of whether or not it would fit their needs. I've found it to be perfect for what I wanted and just $10 with a little patience for the delivery out of China. Receive is working great, still figuring out the mic arrangement. So it's a work in progress! ![]()
IMG_20170221_143209_01.jpeg
![]()
IMG_20170221_143235_01.jpeg
![]()
IMG_20170221_143432_01.jpeg
![]()
IMG_20170221_143527_01.jpeg
|
Re: CW or not to CW?
Aside from attempts to use the BitX for what I would call "true CW," i.e., "A1A" mode in which the carrier is directly keyed (with or without shaping) and having a "necessary" bandwidth of only a few hundred Hertz, I'm interested in clarifying the use of what is sometimes (erroneously?) called "modulated" CW (MCW): using SSB modulation to simulate the audible CW tone (in true CW produced by tuning away from zero beat) by injecting a fixed tone into the audio input of an SSB exciter. Though the resulting transmission would sound like CW in an SSB receiver, it wouldn't be intelligible in a CW-only receiver, nor would it occupy a narrow bandwidth like true CW. Moreover, since it would be SSB modulated rather than A1A CW, its use would not be permissible in the CW-only portions of the amateur bands. Those portions are reserved only for the narrow bandwidth of true CW, and an SSB-generated CW-like signal would take up as much bandwidth as several closely-spaced true CW ones. Have I understood this correctly? 73, Todd K7TFC |
Re: Flutter Fix
That's shipped out of California. If you have more weeks than you do dollars, there's cheaper. On Tue, Feb 21, 2017 at 12:54 pm, Jack Purdum wrote:
Good grief...$4.50! ? |
Re: Flutter Fix
Jack Purdum
Good grief...$4.50! Unbelievable how cheap things like this are. The Teensy 3.6 is another one: 1Mb of flash, 256K SRAM, and a 180MHz clock for under $30...amazing! Jack, W8TEE From: Jerry Gaffke via Groups.Io <jgaffke@...> To: [email protected] Sent: Tuesday, February 21, 2017 1:35 PM Subject: Re: [BITX20] Flutter Fix Sounds good. ? My head is usually down in the bare metal somewhere, and my coding style will reflect that. For a good taste, take a look at the KE7ER/pskuc.c down in the files section, search for the "README" to get an overview. ? I was rather proud of that one. ? Though now in 2017 we'd probably be better off spending an extra dollar for an Arm Cortex M3 Arduino compatible: ?? No longer much point in shoehorning standalone PSK31 into a machine with 2kbytes of flash. Jerry, KE7ER |
Re: Flutter Fix
noTone(); is a line of C code that you add to the sketch. For example, if you hack the Raduino sketch to add these four lines inside the setup() routine: pinMode(6, OUTPUT); tone(6, 1000); delay(5000); noTone(); then at power-up you would get 5 seconds of 1khz coming out pin 6 ?of the Nano. That first line should be in setup(), it tells the Nano that pin 6 is a digital output. The other three lines could be anywhere, perhaps in the loop() or calibrate() routines. You should make sure pin 6 is free first. ?I'm not sure, it might be getting used by the 2x16 LCD.? The LCD and the Si5351 libraries grab their own pins, and that unfortunately is pretty much hidden. Jerry On Tue, Feb 21, 2017 at 09:57 am, John Smith wrote:
? |
Re: Flutter Fix
Sounds good. ? My head is usually down in the bare metal somewhere, and my coding style will reflect that. For a good taste, take a look at the KE7ER/pskuc.c down in the files section, search for the "README" to get an overview. ? I was rather proud of that one. ? Though now in 2017 we'd probably be better off spending an extra dollar for an Arm Cortex M3 Arduino compatible: ?? No longer much point in shoehorning standalone PSK31 into a machine with 2kbytes of flash. Jerry, KE7ER |
Re: Flutter Fix
After you two guys decide on your collaboration of coding, I am willing to try it and give you feedback. ?I am at the earliest stages of playing with arduino beyond the Blink and Servo Motor sketches. I am still planning to make Jacks DDS VFO from his Arduino for amateur radio book, and implement it with the Frog Sounds CW Kit. As well as a Arduino antenna analyzer.? How is this implemented "Shut it down with?noTone();" Is this a keyboard command, or button activated? Well, at least you know I am good at describing a problem with all the details. And I got a backup of my code with the tune pin change. |
Re: CW or not to CW?
Collins
did, indeed, use an audio tone to generate CW in their early S-Line
equipment.? The Collins design fed the sidetone oscillator into the
audio section on the KWM-1, KWM-2/A and 32S-1/2.? And if you know the
history of this, they realized the "error in their ways," and soon went
to a different design. If the balanced mixer is not properly nulled
and/or the filter passband is off a bit, the result can be three
carriers!? Many amateurs using this equipment on CW received "pink
tickets" from the FCC.?? Collins
changed the design with the 32S-3/A.? Today, CW is not recommended with
the 32S-1/2 or KWM-2/A radios without careful monitoring of the output
signal. The
earlier Collins KWS-1 (Collins Radio's first amateur SSB transmitter)
produced CW by inserting the BFO signal AFTER the bandpass filter,
bypassing the balanced modulator a well.? This produces a very clean
output. Don't get me wrong -- I am not saying NOT to use an audio oscillator to generate CW -- I AM saying
that you need to be careful and understand the potential problems it
can produce.? Personally, I am choosing to insert the keyed BFO signal,
with proper shaping, after the crystal filter to generate CW, bypassing
the TX first mixer and filter.? Keep in mind that the TX and RX
frequencies will be zero beat unless provision is made to shift either
the TX or RX when going from TX to RX.? I believe adding RIT is a
probably an easy solution here.? Of course, I will also need to add
sidetone. Thanks to all for maintaining such a great forum for a great little radio! 73, -dennis W6DQ Secretary, Collins Collectors Association From: Buck <RadioK4ia@...> To: [email protected] Sent: Monday, February 20, 2017 4:46 PM Subject: Re: [BITX20] CW or not to CW? Collins injected an audio tone into the mic input. or so I have been told.? Is this as easy as hooking your code oscillator to the mic input? Buck, k4ia Honor Roll 8BDXCC On 2/20/2017 7:27 PM, John Smith via Groups.Io wrote: > Has anyone succeeded with adding CW properly? I have seen several > possibilities on here, but no working examples. If yes, how did you do > it? Or is it just impractical, like making milk from chalk and water? I > was planning to at least inject a tone from a simple circuit for antenna > tuning. But I took down my friends G5RV jr. in favor of a better 40 > meter only dipole. No tuner needed for either end of the band. A 20 watt > BITX CW signal could be a lot more successful than my MFJ-9240 CW > transceiver which is about 6-7 watts, and works great for QRP. > > I am sure a narrow audio filter switched in, would be helpful for > focusing on a signal. But how do you put a signal smack on the tuned > frequency without rebuilding the whole thing? > > On a side note, I used my tablet to generate a 1khz tone, and held the > mic to the tablet speaker to check the SWR while adjusting the antenna > tuner. Worked great when I had that other antenna up. > > |
Re: Flutter Fix
Jack Purdum
Jerry: Not a problem. Like I said, I wasn't sure that the expression on that one line was correct or not. Since you mentioned that you have run the code on the Nano, I assumed it was, but thought I'd ask...hence the question marks in the comment. There's no reason to butt heads, as code that compiles and works is the proof in the puddin'. That said, I've been teaching C for over 30 years and I know where most of the stumbling blocks?are for beginning C programmers. I, too, learned from the K&R book and have been using C since 1978...wrote my first C programming book in 1982 and ended up teaching C and C++ at Purdue University. Thirty years and 18 books later, I'm still writing C books and code...it is my favorite language! I only started embedded C programming about 10 years ago, but other than keeping some memory constraints in mind, it's not much different than writing C code for a mainframe. The K&R convention is to put all symbolic constants and macros at the top of the source file in which they are used. That way, it's pretty much impossible to attempt to use the constant/macro before the preprocessor sees it. Otherwise, code revisions down the road might attempt to use the constant before it's defined, generating a compile time error message. Also, since they are always at the top of the file for me, I don't have to search through the code to find them should they need to be changed. It's a defensive coding strategy that K&R came up with...I can't take credit for it. The point I was trying to make about the bitshifting is that the compiler is smarter than most of us when it comes to code optimization. Given that most people find it easier to understand (knob / 2) than (knob >> 1), I would write the code using the former. The compiler will generate the code using a bitshift anyway. Since that's the case, I always go for the more easily-understood version. It's been documented that 80% of the cost of software is in testing/debugging, not writing it. Therefore, anything we can do to make the code easier to read is a plus in my book. (Another reason why I try to avoid "magic numbers" in the code.) You're absolutely correct...the last one who modifies the code is responsible for maintaining it. I'm more than happy to do that for the group. ? Finally, everyone should feel comfortable in presenting their code here. My job will never be to criticize anyone's code, and that was not my purpose here. I do, however, want to make it as easy as possible for a novice programmer to feel comfortable learning, understanding, and experimenting with C. Indeed, I want to encourage everyone to learn some level of programming and I know that's possible. Anyone who is smart enough to get a license is more than smart enough to learn C. I will do whatever I can to make the code easier to understand and maintain as long as the change works and doesn't impose a performance penalty. The good news is that everyone if free to ignore whatever my changes might be. That bad news is that programming can become addictive! Jack, W8TEE From: Jerry Gaffke via Groups.Io <jgaffke@...> To: [email protected] Sent: Tuesday, February 21, 2017 11:14 AM Subject: Re: [BITX20] Flutter Fix Jack, I do appreciate you taking an interest in the code snippet I sent out. ?You will likely see a fair bit more hideous code from me in the near future. I agree about the 50L vs 50l, was minimizing hacks to Ashhar's original. ?I might agree with #define's for 5 and 50L, especially since they get used in more than one place and are constants somebody might want to twiddle. ?But I'd put those #define's just above where they get used, if they only get used in one area of code. ?Otherwise it takes me an hour to connect the dots, and figure out what all those stupid names are. ? Could be just a number, could be some humongous macro. ?A real programmer hits some key sequence and his editor jumps to the definition off in some *.h file, I've never learned those vi tricks. We'll probably butt heads here some on coding style. ?I'm a digital hardware engineer (FPGA's and VHDL mostly these days) firmly set in my ways, learned to code in C nearly 40 years ago from the K&R book. ? ?When I write code for a uC, I want to know what every line will compile down to. ?(Arduino is new to me, I can see where me and random Arduino libraries are not going to get along very well.) ?Your conventions are the more conventional, and it's ok with me if you rewrite my code into something you are comfortable with. ?Just keep in mind, whoever touches it last gets to maintain it. ? ?;-) And no, it really should be a "+" in ? ??frequency = baseTune + (50l * knob); Jerry, KE7ER On Tue, Feb 21, 2017 at 06:31 am, Jack Purdum wrote: I'm not a fan of "magic numbers" in code, as it makes it harder to read and understand what's going on. So, near the top of the code file, perhaps around line 100, and after the #include preprocessor directives, I'd write: ?
|
Re: no matching function for call??
toggle quoted message
Show quoted text
On Feb 21, 2017, at 11:02 AM, kbergphd@... wrote:
|
Re: Flutter Fix
Jack, I do appreciate you taking an interest in the code snippet I sent out. ?You will likely see a fair bit more hideous code from me in the near future. I agree about the 50L vs 50l, was minimizing hacks to Ashhar's original. ?I might agree with #define's for 5 and 50L, especially since they get used in more than one place and are constants somebody might want to twiddle. ?But I'd put those #define's just above where they get used, if they only get used in one area of code. ?Otherwise it takes me an hour to connect the dots, and figure out what all those stupid names are. ? Could be just a number, could be some humongous macro. ?A real programmer hits some key sequence and his editor jumps to the definition off in some *.h file, I've never learned those vi tricks. We'll probably butt heads here some on coding style. ?I'm a digital hardware engineer (FPGA's and VHDL mostly these days) firmly set in my ways, learned to code in C nearly 40 years ago from the K&R book. ? ?When I write code for a uC, I want to know what every line will compile down to. ?(Arduino is new to me, I can see where me and random Arduino libraries are not going to get along very well.) ?Your conventions are the more conventional, and it's ok with me if you rewrite my code into something you are comfortable with. ?Just keep in mind, whoever touches it last gets to maintain it. ? ?;-) And no, it really should be a "+" in ? ??frequency = baseTune + (50l * knob); Jerry, KE7ER On Tue, Feb 21, 2017 at 06:31 am, Jack Purdum wrote:
I'm not a fan of "magic numbers" in code, as it makes it harder to read and understand what's going on. So, near the top of the code file, perhaps around line 100, and after the #include preprocessor directives, I'd write: ? |