Welcome to the Parallax Discussion Forums, sign-up to participate.

# Frequencies

Posts: 562
Can the COGs in a propeller be used to generate frequencies such as 440 Hz, 623 Hz, 812 Hz, and 984 Hz?

Sincerely,

Discovery

• Posts: 399
Yes than can. But the best way to generate these frequencies is to use the hardware timers built into each cog.

Check this link out Propeller Counters

Mike
• Posts: 13,937
Discovery wrote: »
Can the COGs in a propeller be used to generate frequencies such as 440 Hz, 623 Hz, 812 Hz, and 984 Hz?
Sure.
You might like to look at
AN001-P8X32ACounters-v2.0_prop.pdf

and that gives a NCO mode for the timers, which can output square waves with fine granularity, and there are 2 timers per COG.

fHz = SysCLK * FRQA/2^32

so for 440Hz you would derive FRQA = (440Hz*2^32)/80MHz = 0x5C46, and actual Hz is 439.994037

If you want Sine waves, then more code is needed eg a Direct Digital Synthesis and lookup table loop
• Posts: 562
I was planning to run the frequencies through band-pass filters to get sine waves but I like the Direct Digital Synthesis approach.

I use Propbasic for programming...will this present a problem?

Sincerely,

Discovery
• Posts: 13,937
Discovery wrote: »
I was planning to run the frequencies through band-pass filters to get sine waves but I like the Direct Digital Synthesis approach.

I use Propbasic for programming...will this present a problem?
No, it should be fine, just port code as needed.

For ideas you could search these forums
https://forums.parallax.com/discussion/140784/sine-wave-generator

and in that thread is some working code
https://forums.parallax.com/discussion/comment/1112113/#Comment_1112113
• Posts: 1,436
edited 2019-03-23 - 23:40:46
Discovery,

You should really give Spin a try.
When I first saw Spin I found it intimidating compared to PBASIC but I also found that about 75-80% was the same.
Spin is a lot more powerful though than PBASIC ever was and all the different Objects make up for the fact that it doesn't have commands like FREQOUT.

There is a BS2 Object in OBEX that you start with but it doesn't use any PAsm (Propeller Assembly Language) so it's slow, especially serial.
http://obex.parallax.com/object/164

The Propeller Education Kit (PEK) Text is how I started learning Spin though it doesn't teach the uses of CONstants other than to set the Propeller clock frequency.

As the others have said, the Counters in each Cog have an NCO mode that will generate a Square Wave based on a 32-bit number or Long variable.
Chapter 7 teaches the different Counter modes and Page 143 uses the NCO mode to generate tones on a Piezospeaker.

This is the code that goes with the PEK text and it uses Propeller Tool.

You should also have a copy of the Propeller Manual available for reference on commands and the Propeller chip hardware registers.
• Posts: 562
Thank you for the information.

This project is designed to produce a simulated diesel locomotive horn of four chimes. Four sine waves will be sent to a summing amplifier then sent to a power amplifier and speaker. Several years ago, I recorded the sound of a locomotive blowing for a crossing and the sound was washed through my spectrum analyzer to acquire the frequencies. That data was lost but I think that the four frequencies stated earlier are close enough that I can adjust them in the propeller program.

Sincerely,

Discovery
• Posts: 15,410
You should have no problems doing this with a prop. Take a look at SIDCOG to see what can be done.
My Prop boards:
Prop OS (also see Sphinx, PropDos, PropCmd, Spinix)
Website: www.clusos.com
• Posts: 562
Cluso99,

What is SIDCOG?

Discovery
• Posts: 6,244
edited 2019-03-24 - 13:37:00
What is SIDCOG?
SIDCOG is a Spin/PASM object that simulates the SID chip (https://en.wikipedia.org/wiki/MOS_Technology_6581) that was made famous in Commodore computers in the 80s.

You might want to try Spin for a while; it was designed for the Propeller and will help you get close to the hardware. Once you have a really good understanding of the hardware, you'll be more effective with PropeBASIC. And if it's speed of the final code that concerns you, there is FastSpin that will compile to LMM code. FTR, I haven't used FastSpin, but many have.
Jon McPhalen
Hollywood, CA
It's Jon or JonnyMac -- please do not call me Jonny.
• Posts: 7,938
"We suspect that ALMA will allow us to observe this rare form of CO in many other discs.
By doing that, we can more accurately measure their mass, and determine whether
scientists have systematically been underestimating how much matter they contain."
• Posts: 13,937
Discovery wrote: »
This project is designed to produce a simulated diesel locomotive horn of four chimes. Four sine waves will be sent to a summing amplifier then sent to a power amplifier and speaker. Several years ago, I recorded the sound of a locomotive blowing for a crossing and the sound was washed through my spectrum analyzer to acquire the frequencies. That data was lost but I think that the four frequencies stated earlier are close enough that I can adjust them in the propeller program.

There are also examples aplenty here, of WAV file playback, for another way to solve this.

• Posts: 562
Well...I'll be darned.

I did not know the SIDCog chip was used in the Commodore computers. I had two 64s and one 128. When I sold an earlier house the buyer said that they wanted to keep the Commodore 64 that ran the heating and cooling systems in the house.

Sincerely,

Discovery
• Posts: 264
I modified my DTMF object to handle four tones. It's written in PASM, I've never used PropBasic.

That's using a simple low-pass RC filter.
• Posts: 562
That looks really nice. I wonder if someone knows how to convert the code to Propbasic?

Sincerely,
Discovery