Keyboard Shortcuts
Likes
Search
W8TEE Corrected Code Rel 3
Jack Purdum
All: I've been working with Art and finally have the code working. I was debugging and got careless and sent the wrong file out for use. This is complicated by the fact that my DDS just died. No smoke...no fanfare...just an aneurysm or else something internal. As most of you know, getting a Type II AD9850 isn't easy, but I have 3 coming to me as quickly as possible. Meanwhile, I've attached the *.ino file; the MorseCode.h file is okay. Sorry for the hassles... Jack, W8TEE From: David S via Groups.Io <dcsuk10@...> To: [email protected] Sent: Friday, July 21, 2017 7:14 PM Subject: Re: [BITX20] W8TEE Assembly Manual and Code Update Art Jack's changed the routine that drives the DDS, he's no longer using the library, if you want to test using the new code with the DDS running here's what you need to do. Towards the top of the code you will find this line //========================== Symbolic Constants =========================================================
#define MYCALIBRATIONCONSTANT ? ? 125001066.3102821 ? // See manual
Inset this line? #define BFOFREQUENCY ? ? ? ? ?11998000UL
?Search for the following "void sendFrequency" You should find this routine.... void sendFrequency(int32_t frequency)?
{
? ? uint32_t freq = ?frequency;
? ??
? ? for (int b = 0; b < 4; b++, freq >>= 8) {
? ? ? tfr_byte(freq & 0xFF);
? ? }
? ? tfr_byte(0x000); ? // Final control byte, all 0 for 9850 chip
? ? pulseHigh(FQ_UD); ?// Done! ?Should see output
}
Comment out the whole routine and replace with this code void sendFrequency(int32_t frequency) {
?
? DDS.setfreq( (float) BFOFREQUENCY - frequency, 0); ? // Second argument is phase. See library docs
? delay(10); ? ? ? ? ? ? ? ? ? ? ? ? ? ?// wait for AD9850 output to become stable
}
Be sure you don't miss the end bracket, this will revert to using the library and allow you to continue to test until Jack and make the required changes. ?The first version of the code sets the VFO to the TX frequency, this modification will set the VFO to the actual required frequency 4.979 (ish) for 7.030 on the display. ?Hope that helps. Jack? I can't see any pin defined for the Smeter or where the pin voltage would be picked up in the code. David ?G8DJM |
||
Jack Purdum
If it's a Type II module, do you have the required jumpers on? Read the upper-right jumper. Jack, W8TEE From: DH2LAB <dh2lab@...> To: [email protected] Sent: Monday, July 24, 2017 6:29 AM Subject: Re: [BITX20] W8TEE Corrected Code Rel 3 My AD9850 DDS ist most likely also dead...
No measurable Square waves, but power led is on.
|
||
Jack Purdum
Check DDS pins VO_P and VO_N for the square wave. If it's good there, C4 or C5 could be bad. Jack, W8TEE From: DH2LAB <dh2lab@...> To: [email protected] Sent: Monday, July 24, 2017 11:24 AM Subject: Re: [BITX20] W8TEE Corrected Code Rel 3 Should be OK.... |
||
Jack Purdum
I can't remember if you have to have the square wave jumper in place or not. You might want to check. Jack, W8TEE From: DH2LAB <dh2lab@...> To: [email protected] Sent: Monday, July 24, 2017 1:23 PM Subject: Re: [BITX20] W8TEE Corrected Code Rel 3 TNX Jack,
I checked VO_P and VO_N with my oszillograf and no square wave.
I built your AA too and the DDS for that is on the way.
Maybe in one week I can test with the new DDS.
Matt, DH2LAB |
||
¿ªÔÆÌåÓýMatt, If you included both diodes in series with the AD9850 Vcc supply you may try jumpering one and check the output.? Some AD9850s have been reported to not operate at this reduced supply voltage. Mike K5ESS ? From: [email protected] [mailto:[email protected]] On Behalf Of DH2LAB ? TNX Jack, I checked VO_P and VO_N with my oszillograf and no square wave. I built your AA too and the DDS for that is on the way. Maybe in one week I can test with the new DDS. |
||
¿ªÔÆÌåÓýMatt, I should have asked but are you getting sine wave outputs and not square wave outputs or no outputs?? Also what are you driving with the square wave? Mike K5ESS ? From: [email protected] [mailto:[email protected]] On Behalf Of DH2LAB ? TNX Mike, I will report success (hopefully)... ? |
||
Today the new AD9850 DDS has arrived and now everything is working again as it should.
I let the Diodes in series with the AD9850 Vcc supply jumpered, because it really runs "hotter" for me (as described in the shematic). And ~4,6V on TP4 is Ok for the DDS. Thank you Jack and Mike for your encouragement. 73, Matt |
||
? Hi, ? Trying to get the VFO going, I saw that the DDS output frequency is not changing when turning the rotary encoder. Only at startup the DDS output is set to the frequency memorized in the EEPROM. Can somebody
help to solve this (software) problem. I have tried several DDS modules. I see no pulses on pins 51, 52 & 53 on the 2560_MINI board when rotating the encoder. ? I use B40SoftwareRel0105. ? 73 Guido? ON7CH ? On Sat, Jul 22, 2017 at 3:40 AM, Jack Purdum via Groups.Io <econjack@...> wrote:
|
||
Jack Purdum
There is a release 1.05 and a release 1.06 will likely be coming out early next week. Also, it appears that there needs to be two identical calls in setup() to sendFrequency(); one to clear the registers and one to actually set the frequency: ? encoderMode = ENCODERTUNING; ? ? ? ? ? ? ? ?// tuning ? sendFrequency(currentFrequency); ? ? ? ? ? ?// Appears we need to send it twice to clear the registers ? sendFrequency(currentFrequency); ? ShowFrequency(currentFrequency, 0); ? StartupScreen(); From: Guido Charita <g.charita@...> To: [email protected] Sent: Friday, August 11, 2017 3:00 PM Subject: Re: [BITX20] W8TEE Corrected Code Rel 3 ?
Hi,
?
Trying to
get the VFO going, I saw that the DDS output frequency is not changing when
turning the rotary encoder. Only at
startup the DDS output is set to the frequency memorized in the EEPROM.
Can somebody
help to solve this (software) problem.
I have
tried several DDS modules.
I see no
pulses on pins 51, 52 & 53 on the 2560_MINI board when rotating the encoder.
?
I use B40SoftwareRel0105.
?
73
Guido? ON7CH
?
On Sat, Jul 22, 2017 at 3:40 AM, Jack Purdum via Groups.Io <econjack@...> wrote:
|
||
Hi all, For the issue "DDS output frequency not changing" I added in the block void loop() ? so in total this part looks like? (line number 1217): ? if (currentFrequency != oldFreq) {????????????????????????? // Has the frequency changed? ? ??? sendFrequency(currentFrequency); ? ??? currentTune = millis();?????????????????????????????????? // Yep, but how long ago? ??? if (currentTune - oldTune > EEPROMUPDATEDELAY) {????????? // If greater than 10 seconds... ????? writeEEPROMParameter(READEEPROMFREQ, currentFrequency); // ...blast it to EEPROM ????? oldTune = currentTune; ????? oldFreq = currentFrequency; ??? } ? 73 guido? on7ch On Fri, Aug 11, 2017 at 9:49 PM, Jack Purdum via Groups.Io <econjack@...> wrote:
|
||
Hi Gudio
Check the encoder pin definitions around line 120, I found these had changed in rel 1.05, ?you can see the commented out values, it only affects 1.05. My code around line 1217 is as the original. #define ENCODERPINA ? ? ? ? ?18 //19 ? ? ? // Encoder pin A, interrupt 5
#define ENCODERPINB ? ? ? ? ?19 //20 ? ? ? // Encoder pin B, interrupt 4
#define ENCODERSWITCH ? ? ? ?20 //22 ? ? ? // Encoder switch pin
I did have some issues with the output stopping after a power cycle until the encoder was turned, that's what Jack is referring to, it turned of my DDS is a bit slow and needed the data send twice at startup. ?I'm using a type 1 DDS with a converter board.? Hope that helps. Regards David G8DJM |
||
¿ªÔÆÌåÓýHi Dave, For the moment the VFO is running fine. Thanks to all for the help. I am using a DDS type II, no problems with the output signal. On the SA the signal on the low level output is ok but on the high level output there are a lot more harmonics. I have to check this. 73 Guido on7ch Van: David S via Groups.Io Verzonden: ?12/?08/?2017 9:44 Aan: [email protected] Onderwerp: Re: [BITX20] W8TEE Corrected Code Rel 3 Check the encoder pin definitions around line 120, I found these had changed in rel 1.05, ?you can see the commented out values, it only affects 1.05. My code around line 1217 is as the original. #define ENCODERPINA ? ? ? ? ?18 //19 ? ? ? // Encoder pin A, interrupt 5
#define ENCODERPINB ? ? ? ? ?19 //20 ? ? ? // Encoder pin B, interrupt 4
#define ENCODERSWITCH ? ? ? ?20 //22 ? ? ? // Encoder switch pin
I did have some issues with the output stopping after a power cycle until the encoder was turned, that's what Jack is referring to, it turned of my DDS is a bit slow and needed the data send twice at startup. ?I'm using a type 1 DDS with a converter board.? Hope that helps. Regards David G8DJM |
||
Jack Purdum
We did get some Mega 2560 Pro Mini's had issues with interrupt vector 5 and that was the reason for the change. Also, we are polling the switch, so almost any digital pin will work since it doesn't have to be an external interrupt pin. True, it won't be as responsive as an interrupt, but it's still going to read the pin several thousand times a second, so even you young people with cobra-like reflexes are going to have to be pretty quick to miss a switch press. Jack, W8TEE From: Guido Charita <g.charita@...> To: [email protected] Sent: Saturday, August 12, 2017 4:24 AM Subject: Re: [BITX20] W8TEE Corrected Code Rel 3 Hi Dave, For the moment the VFO is running fine. Thanks to all for the help. I am using a DDS type II, no problems with the output signal. On the SA the signal on the low level output is ok but on the high level output there are a lot more harmonics. I have to check this. 73 Guido on7ch Van: David S via Groups.Io Verzonden: ?12/?08/?2017 9:44 Aan: [email protected] Onderwerp: Re: [BITX20] W8TEE Corrected Code Rel 3 Check the encoder pin definitions around line 120, I found these had changed in rel 1.05, ?you can see the commented out values, it only affects 1.05. My code around line 1217 is as the original. #define ENCODERPINA ? ? ? ? ?18 //19 ? ? ? // Encoder pin A, interrupt 5
#define ENCODERPINB ? ? ? ? ?19 //20 ? ? ? // Encoder pin B, interrupt 4
#define ENCODERSWITCH ? ? ? ?20 //22 ? ? ? // Encoder switch pin
I did have some issues with the output stopping after a power cycle until the encoder was turned, that's what Jack is referring to, it turned of my DDS is a bit slow and needed the data send twice at startup. ?I'm using a type 1 DDS with a converter board.? Hope that helps. Regards David G8DJM |
||
Jack Purdum
It seems that the DDS output frequency issue only occurs at startup, before the encoder is rotated for the first time. Since that is the issue, the best place to put the "extra" sendFrequency() call is in setup(). ?If the call is in loop(), it will make unnecessary calls to sendFrequency() any time there's a 10 second interval while tuning. It's not going to "hurt" anything as written below, but other than the first time it's called, it's unnecessary. ?If others are having a different experience with it, please let me know. Jack, W8TEE From: Guido Charita <g.charita@...> To: [email protected] Sent: Saturday, August 12, 2017 3:20 AM Subject: Re: [BITX20] W8TEE Corrected Code Rel 3 Hi all, For the issue "DDS output frequency not changing" I added in the block void loop()
an extra line:? sendFrequency(currentFrequency); ?
so in total
this part looks like? (line number 1217):
?
if
(currentFrequency != oldFreq) {????????????????????????? // Has the frequency
changed?
?
???
sendFrequency(currentFrequency);
?
??? currentTune = millis();?????????????????????????????????? // Yep, but
how long ago?
??? if (currentTune - oldTune > EEPROMUPDATEDELAY)
{????????? // If greater than 10
seconds...
????? writeEEPROMParameter(READEEPROMFREQ,
currentFrequency); // ...blast it to EEPROM
????? oldTune = currentTune;
????? oldFreq = currentFrequency;
??? }
? 73 guido? on7ch
On Fri, Aug 11, 2017 at 9:49 PM, Jack Purdum via Groups.Io <econjack@...> wrote:
|