part 0 44 bytes
his is a multi-part message in MIME format.
part 1 113 bytes content-type:multipart/related; (decoded base64)
N¬ŠÆ¦º[bÿ–«¶g¬±¨Šs0Gè®f
2007\03\16@132032
by
John, N5DWI
|
Thomas C. Sefranek wrote:
{Quote hidden}> P = ._ _. A total of 14 dit spaces, (3 ending dit spaces)
> A = . _ 8 spaces
> R = . _ . 10 spaces
> I = . . 6 spaces
> S = . . . 8 spaces (Baud)
> For a total of 46 and a word space of 9 gets you to 55 baud/word.
>
> Hope this helps.
>
> Tom
>
> *
> | __O Thomas C. Sefranek
WA1RHP
spam_OUTARRL.NET
> |_-\<,_ Amateur Radio Operator: WA1RHP
> (*)/ (*) Bicycle mobile on 145.41MHz PL74.4
>
> ARRL Instructor, Technical Specialist, VE Contact.
> hamradio.cmcorp.com/inventory/Inventory.html
>
http://www.harvardrepeater.org
>
>
Almost. But not quite.
The 'S' count of 8 spaces already contains the 3 ending dit spaces.
and the word space should be a 7 count, not a 9 count. Therefore,
the word space would include the 3 letter ending spaces, so the
correct additional count after the letter's 8 count would be 4.
i.e., 7 - 3 = 4.
So recalculating, 14 + 8 + 10 + 6 + 8 + 4 = 50.
To determine WPM, count the dits per minute and divide by 50.
Also, there are many hams who can receive by ear at a speed
greater than 150 WPM!!! See <http://www.rufzxp.net/>
John Westerlage, @spam@N5DWIKILLspam
ARRL.NET
Amateur Radio Operator: N5DWI
Pedestrian Mobile on 7030 kc (with Rockmite)
Exclusively Morse (both Continental & American) since 1956
Morse Instructor for almost that long
2007\03\16@135100
by
Harold Hallikainen
>>
>>
>> How do letters ending in multiple dots work? B, D, H, I, L, S, 5, etc?
>
>
> http://technology.niagarac.on.ca/students/a/bamyote/
>
> A bit of googling found this, which uses a start bit, then the same
> sequence.
> I don't remember having a start bit though.
>
The start bit idea is clever! It allows a character to have up to 7 dits
or dahs. You still have to count the bits as they go out (or are thrown
out), though since an all dit character would go to zero as soon as you
throw out the start bit.
Harold
--
FCC Rules Updated Daily at http://www.hallikainen.com - Advertising
opportunities available!
2007\03\16@140736
by
enkitec
I remember doing the same on a ZX-81 clone.
There was a noise filter embedded in the decoding software.
The result was amazing! Excelent decoding, even with noise.
Good times those!
Mark Jordan - PY3SS
On 16 Mar 2007 at 17:03, Tamas Rudnai wrote:
> Long long time ago when my Apple II a less powerful CPU than a PIC nowaday
> :-) so I wrote a Morse decoder that was independent of the speed. I used to
> store the ABC in the same fashion, so the trick was to store the length of
> the ti-ta's (bits) and then followed the 0/1s.
2007\03\16@141200
by
wouter van ooijen
> The start bit idea is clever! It allows a character to have
> up to 7 dits
> or dahs. You still have to count the bits as they go out (or
> are thrown
> out), though since an all dit character would go to zero as
> soon as you
> throw out the start bit.
Wouldn't a stop bit be easier? Shift, if result in register is 0 you are
done, else you transmit what is in the carry and shift again.
Wouter van Ooijen
-- -------------------------------------------
Van Ooijen Technische Informatica: http://www.voti.nl
consultancy, development, PICmicro products
docent Hogeschool van Utrecht: http://www.voti.nl/hvu
2007\03\16@142726
by
Harold Hallikainen
>> The start bit idea is clever! It allows a character to have
>> up to 7 dits
>> or dahs. You still have to count the bits as they go out (or
>> are thrown
>> out), though since an all dit character would go to zero as
>> soon as you
>> throw out the start bit.
>
> Wouldn't a stop bit be easier? Shift, if result in register is 0 you are
> done, else you transmit what is in the carry and shift again.
>
> Wouter van Ooijen
But what would the start bit be? How do you distinguish it from a data
bit? The start bit is clever since it's the first 1 after a string of 0s.
You just always throw out the leading 1, then interpret what's left.
Harold
--
FCC Rules Updated Daily at http://www.hallikainen.com - Advertising
opportunities available!
2007\03\16@143310
by
James Newton, Host
> technology.niagarac.on.ca/students/a/bamyote/
>
> A bit of googling found this, which uses a start bit, then
> the same sequence.
> I don't remember having a start bit though.
My first thought is that it could be done much more efficiently with a
_stop_ bit instead of a start bit. All that means is that you check for
byte==0 _before_ transmitting a (unwanted) trailing dash.
A 0110 0000
B 1000 1000
O 1111 0000
S 0001 0000
5 0000 0100
$ 0001 0011
Seems to work ok...
---
James Newton: PICList webmaster/Admin
KILLspamjamesnewtonKILLspam
piclist.com 1-619-652-0593 phone
http://www.piclist.com/member/JMN-EFP-786
PIC/PICList FAQ: http://www.piclist.com
2007\03\16@143415
by
James Newtons Massmind
> Wouldn't a stop bit be easier? Shift, if result in register
> is 0 you are done, else you transmit what is in the carry and
> shift again.
>
> Wouter van Ooijen
Hah! You win. :)
---
James.
2007\03\16@144350
by
Harold Hallikainen
{Quote hidden}>> technology.niagarac.on.ca/students/a/bamyote/
>>
>> A bit of googling found this, which uses a start bit, then
>> the same sequence.
>> I don't remember having a start bit though.
>
> My first thought is that it could be done much more efficiently with a
> _stop_ bit instead of a start bit. All that means is that you check for
> byte==0 _before_ transmitting a (unwanted) trailing dash.
>
> A 0110 0000
> B 1000 1000
>
> O 1111 0000
>
> S 0001 0000
>
> 5 0000 0100
>
> $ 0001 0011
>
> Seems to work ok...
>
> ---
> James Newton: PICList webmaster/Admin
OK, I see how that could work. Clever! Always add a trailing 1 to a
character. If, after shifting left, the result is zero, you're done (just
shifted the stop bit into the carry).
Harold
--
FCC Rules Updated Daily at http://www.hallikainen.com - Advertising
opportunities available!
2007\03\16@150409
by
David VanHorn
>
>
> OK, I see how that could work. Clever! Always add a trailing 1 to a
> character. If, after shifting left, the result is zero, you're done (just
> shifted the stop bit into the carry).
That may be the method I used.. It's been a while.
I'm sure that byte = 0 was the end of the sequence.
2007\03\16@160131
by
Dennis Crawley
|
On Friday, March 16, 2007 3:11 PM [GMT-3=CET],
wouter van ooijen wrote:
>> The start bit idea is clever! It allows a character to have
>> up to 7 dits
>> or dahs. You still have to count the bits as they go out (or
>> are thrown
>> out), though since an all dit character would go to zero as
>> soon as you
>> throw out the start bit.
>
> Wouldn't a stop bit be easier? Shift, if result in register is 0 you are
> done, else you transmit what is in the carry and shift again.
>
> Wouter van Ooijen
Nice Wouter!
It might be necessary to clean up the carry flag before shifting, isn't it?
Also is better to use "1" for dots than for dashes. Doing so, you can send
the error sign.
bsf STATUS,RP0
movlw B'11111111' ; Error sign
movwf BytesRx
mCODE
BCF STATUS,C ;do not shift "ones" now
movlw 0
RLF BytesRx,F
XORWF BytesRx,W
BTFSC STATUS,Z
GOTO end_of_char
btfsc STATUS,C
goto DASH
DOT ; any output routine e.g.
bsf PORTB,7
;(delay intra-elem + 1 element)
bcf PORTB,7;
GOTO mCODE
DASH NOP
bsf PORTB,7
;(delay intra-elem + 3 element)
bcf PORTB,7;
GOTO mCODE
end_of_char
;(end of char delay inter-char-elem + 3 element ???)
Dennis.
2007\03\16@170600
by
Thomas C. Sefranek
I don't doubt you are right, 50 sounds familiar...
I DO doubt the claims to 150 W/M, the test is just a computer connected to
another computer. Heck, even the famous Hashi Nose only copied 55-60 W/M.
(I actually worked him once...)
Tom
*
| __O Thomas C. Sefranek RemoveMEWA1RHPTakeThisOuT
ARRL.NET
|_-\<,_ Amateur Radio Operator: WA1RHP
(*)/ (*) Bicycle mobile on 145.41MHz PL74.4
ARRL Instructor, Technical Specialist, VE Contact.
hamradio.cmcorp.com/inventory/Inventory.html
http://www.harvardrepeater.org
{Original Message removed}
2007\03\16@170608
by
Harold Hallikainen
|
{Quote hidden}> On Friday, March 16, 2007 3:11 PM [GMT-3=CET],
> wouter van ooijen wrote:
>
>>> The start bit idea is clever! It allows a character to have
>>> up to 7 dits
>>> or dahs. You still have to count the bits as they go out (or
>>> are thrown
>>> out), though since an all dit character would go to zero as
>>> soon as you
>>> throw out the start bit.
>>
>> Wouldn't a stop bit be easier? Shift, if result in register is 0 you are
>> done, else you transmit what is in the carry and shift again.
>>
>> Wouter van Ooijen
>
> Nice Wouter!
> It might be necessary to clean up the carry flag before shifting, isn't
> it?
> Also is better to use "1" for dots than for dashes. Doing so, you can send
> the error sign.
>
> bsf STATUS,RP0
> movlw B'11111111' ; Error sign
> movwf BytesRx
>
> mCODE
> BCF STATUS,C ;do not shift "ones" now
> movlw 0
> RLF BytesRx,F
> XORWF BytesRx,W
> BTFSC STATUS,Z
> GOTO end_of_char
> btfsc STATUS,C
> goto DASH
> DOT ; any output routine e.g.
> bsf PORTB,7
> ;(delay intra-elem + 1 element)
> bcf PORTB,7;
> GOTO mCODE
> DASH NOP
> bsf PORTB,7
> ;(delay intra-elem + 3 element)
> bcf PORTB,7;
> GOTO mCODE
> end_of_char
> ;(end of char delay inter-char-elem + 3 element ???)
>
>
> Dennis.
>
I don't think you need to clear the carry first. Also, you can test for
zero by moving a byte of ram to itself. Your code becomes...
movlw B'11111111' ; Error sign
call SendMorseChar
SendMorseChar
cblock
MorseChar
endc
movwf MorseChar ; Save character for shifting
SendMorseCharA
RLF MorseChar,f ; shift msb into carry
movf MorseChar,f ; test to see if we're done
bz SendMorseCharZ ; We're done, get out
skpc ; skip if dit
call DoDah ; go send dah - PRESERVE CARRY!
skpnc
call DoDit ; go send dit
call InterCharDelay
goto SendMorseCharA ; go send next bit, if any
SendMorseCharZ
return ; we're outta here!
Harold
--
FCC Rules Updated Daily at http://www.hallikainen.com - Advertising
opportunities available!
2007\03\16@173313
by
James Newton, Host
2007\03\16@175118
by
wouter van ooijen
> > Wouldn't a stop bit be easier? Shift, if result in register
> is 0 you
> > are done, else you transmit what is in the carry and shift again.
> >
> > Wouter van Ooijen
>
>
> But what would the start bit be? How do you distinguish it
> from a data bit? The start bit is clever since it's the first
> 1 after a string of 0s. You just always throw out the leading
> 1, then interpret what's left.
No start bit needed, the first 'data' bit is the leftmost. The stop bit
is the rightmost 1.
11110000 is - - -
10000000 is nothing
00010000 is . . .
00000000 is not allowed
01011000 is . - . -
etc.
Wouter van Ooijen
-- -------------------------------------------
Van Ooijen Technische Informatica: http://www.voti.nl
consultancy, development, PICmicro products
docent Hogeschool van Utrecht: http://www.voti.nl/hvu
2007\03\16@175248
by
wouter van ooijen
> > I don't think you need to clear the carry first. Also, you
> > can test for zero by moving a byte of ram to itself. Your
> > code becomes...
>
> Ahhh, the true reason for the PICList.
>
> Are we down to 12 instructions yet?
Just wait for Scotty...
Wouter van Ooijen
-- -------------------------------------------
Van Ooijen Technische Informatica: http://www.voti.nl
consultancy, development, PICmicro products
docent Hogeschool van Utrecht: http://www.voti.nl/hvu
2007\03\16@192316
by
William Chops Westfield
> The start bit idea is clever! It allows a character to have
> up to 7 dits or dahs.
Heh. The motorola "Black Widow" design contest (for their 8pin
cpus, essentially) has as one of the "steps" to finish a morse
code program. The core that they supply stores the translation
table as STRINGS:
>>> char *convert(char c){ //Convert ASCII received switch(c){
>>> case 'a':
>>> return ".-";
>>> case 'b':
>>> return "-...";
>>> case 'c':
>>> return "-.-.";
>>>
I guess that says something about changes in attention paid to
code size by "youngins" these days. And C vs ASM, perhaps.
Although since the high-end 8pin chip contains 8kbyte of flash
(more than any other 8pin uC?) I guess it doesn't matter.
{Quote hidden}> SendMorseCharA
> RLF MorseChar,f ; shift msb into carry
> movf MorseChar,f ; test to see if we're done
> bz SendMorseCharZ ; We're done, get out
> skpc ; skip if dit
> call DoDah ; go send dah - PRESERVE CARRY!
> skpnc
> call DoDit ; go send dit
> call InterCharDelay
> goto SendMorseCharA ; go send next bit, if any
> SendMorseCharZ
> return ; we're outta here!
Speaking of C compilers, this is a good example of the sort of
code that I think it would be really difficult for a C compiler
to generate; It's what I meant by "explicit use of carry." Does
anybody want to take a shot at C code/compiler implementation
that comes close to outputting this?
(And on the third hand, it is perhaps also an example of optimization
that doesn't need to be done.)
BillW
2007\03\16@194020
by
David VanHorn
>
>
> Heh. The motorola "Black Widow" design contest (for their 8pin
> cpus, essentially) has as one of the "steps" to finish a morse
> code program. The core that they supply stores the translation
> table as STRINGS:
>
> >>> char *convert(char c){ //Convert ASCII received switch(c){
> >>> case 'a':
> >>> return ".-";
OH MY GOD..
I know! We can store each char as a wav file that has all the beeps and
silence for each char!
(And on the third hand, it is perhaps also an example of optimization
> that doesn't need to be done.)
But if you don't think this way, you end up wasting bits here and there that
add up to something in the end.
2007\03\16@195615
by
William Chops Westfield
On Mar 16, 2007, at 4:40 PM, David VanHorn wrote:
> But if you don't think this way, you end up wasting bits here
> and there that add up to something in the end.
>
"A megabyte here, a megabyte there, and pretty soon you're talking
about real memory!" ?
I was talking about the code possibly expanding from 14 word to 30
words, not the blatant waste of space in the translation table.
BillW
2007\03\16@202033
by
Orin Eman
On 3/16/07, William Chops Westfield <TakeThisOuTwestfwEraseME
spam_OUTmac.com> wrote:
>
> > SendMorseCharA
> > RLF MorseChar,f ; shift msb into carry
> > movf MorseChar,f ; test to see if we're done
> > bz SendMorseCharZ ; We're done, get out
movlw DITLEN
skpc ; skip if dit
movlw DAHLEN
> > call DoBit ; go send bit
> > call InterBitDelay
> > goto SendMorseCharA ; go send next bit, if any
> > SendMorseCharZ
> > return ; we're outta here!
> Speaking of C compilers, this is a good example of the sort of
> code that I think it would be really difficult for a C compiler
> to generate; It's what I meant by "explicit use of carry."
I'd do something like the above instead since the difference between a
dit and a dah is their length...
> (And on the third hand, it is perhaps also an example of optimization
> that doesn't need to be done.)
True.
Orin.
2007\03\16@232042
by
Harold Hallikainen
|
That's good! It also avoids the "preserve carry" issue.
Harold
{Quote hidden}> On 3/16/07, William Chops Westfield <
RemoveMEwestfw
TakeThisOuTmac.com> wrote:
>>
>> > SendMorseCharA
>> > RLF MorseChar,f ; shift msb into carry
>> > movf MorseChar,f ; test to see if we're done
>> > bz SendMorseCharZ ; We're done, get out
> movlw DITLEN
> skpc ; skip if dit
> movlw DAHLEN
>> > call DoBit ; go send bit
>> > call InterBitDelay
>> > goto SendMorseCharA ; go send next bit, if any
>> > SendMorseCharZ
>> > return ; we're outta here!
>
>> Speaking of C compilers, this is a good example of the sort of
>> code that I think it would be really difficult for a C compiler
>> to generate; It's what I meant by "explicit use of carry."
>
> I'd do something like the above instead since the difference between a
> dit and a dah is their length...
>
> > (And on the third hand, it is perhaps also an example of optimization
>> that doesn't need to be done.)
>
> True.
>
> Orin.
> -
2007\03\17@184248
by
Peter P.
Speaking in terms of training, are there any free Koch/Farnsworth tables out
there ? I wrote a little script that generates groups (voice + morse) using the
K. timing but I'd like to see some more like it before I use 'my' self-made
training sets.
Peter P.
2007\03\19@084056
by
Hazelwood Lyle
> > Ahhh, the true reason for the PICList.
> >
> > Are we down to 12 instructions yet?
>
I must have missed something here.
Is there some special virtue to a working 12 step program?
I must have missed that meeting.
I'll keep coming back until I figure it out. ;-)
Lyle
2007\03\19@142129
by
Thomas C. Sefranek
-----Original Message-----
From: piclist-bouncesEraseME
.....mit.edu [EraseMEpiclist-bounces
mit.edu] On Behalf Of
Hazelwood Lyle
Sent: Monday, March 19, 2007 8:42 AM
To: Microcontroller discussion list - Public.
Subject: Re: [OT] Morse speed
> > Ahhh, the true reason for the PICList.
> >
> > Are we down to 12 instructions yet?
>
I must have missed something here.
Is there some special virtue to a working 12 step program?
I must have missed that meeting.
I'll keep coming back until I figure it out. ;-)
Lyle
Good luck with that, let me know how it turns out for you.
There may be an H.P. involved too.
Tom
*
| __O Thomas C. Sefranek RemoveMEWA1RHPEraseME
EraseMEARRL.NET
|_-\<,_ Amateur Radio Operator: WA1RHP
(*)/ (*) Bicycle mobile on 145.41MHz PL74.4
ARRL Instructor, Technical Specialist, VE Contact.
hamradio.cmcorp.com/inventory/Inventory.html
http://www.harvardrepeater.org
2007\03\21@074222
by
Dennis Crawley
On Friday, March 16, 2007 6:03 PM [GMT-3=CET],
Thomas C. Sefranek wrote:
> I don't doubt you are right, 50 sounds familiar...
>
> I DO doubt the claims to 150 W/M, the test is just a computer connected to
> another computer. Heck, even the famous Hashi Nose only copied 55-60 W/M.
> (I actually worked him once...)
>
> Tom
Thomas,
The thing is to find which is the highest sending velocity reached by man.
150wpm gives us 8ms per element, which is under the normal 20ms
debouncing,...
The debouncing here is an issue and set the limit of the system,...am I
right?
60s / .02s = 3000 / 50 elements(1wpm) = 60 wpm
I think this factor which set the system limit in pico-keyer(Dale Botkin)
www.hamgadgets.com/store/product_info.php?products_id=51
http://www.arrl.org/qst/2003/12/0312038.pdf
Dennis
ps: Yes, I'm trying to make a semiautomatic keyer now :)
More... (looser matching)
- Last day of these posts
- In 2007
, 2008 only
- Today
- New search...