dtmfout problem


Closed Thread
Results 1 to 23 of 23

Thread: dtmfout problem

Hybrid View

  1. #1
    Join Date
    Sep 2006
    Posts
    747


    Did you find this post helpful? Yes | No

    Default

    Hi,
    I am using 20Mz
    I think the problem is more hardware than software..



    code:/
    '*************************
    '* Alarm system dialer *
    '*************************


    '//////////////////////////////
    '// Pic chip configuration //
    '//////////////////////////////

    INCLUDE "modedefs.bas" 'Includes supoprt for PicBasic language
    @ DEVICE pic16F88,CCPMX_ON

    ' Setup Crystal oscillator Frequency to be used by PIC chip in MHz
    DEFINE OSC 20 'use external 20mhz crystal

    ANSEL = 1
    CMCON = 7 ' Turn OFF the comparators so pins can be used as digital I/O-pins

    '///////////////////////////////////////
    '// Screen initialization //
    '///////////////////////////////////////


    DEFINE LCD_DREG PORTB ' Set LCD Data port
    DEFINE LCD_DBIT 4 ' Set starting Data bit (0 or 4) if 4-bit bus
    DEFINE LCD_RSREG PORTA ' Set LCD Register Select port
    DEFINE LCD_RSBIT 2 ' Set LCD Register Select bit
    DEFINE LCD_EREG PORTA ' Set LCD Enable port
    DEFINE LCD_EBIT 3 ' Set LCD Enable bit
    DEFINE LCD_BITS 4 ' Set LCD bus size (4 or 8 bits)
    DEFINE LCD_LINES 2 ' Set number of lines on LCD

    DEFINE LCD_COMMANDUS 2500
    DEFINE LCD_DATAUS 250
    DEFINE CHAR_PACING 2000
    pause 2000


    '/////////////////////////
    '// PIN configuration //
    '/////////////////////////

    TRISA = %00011000 ' Set PORTA to all input
    TRISB = %11111111 ' Set PORTB to all output
    PortA = 0


    '///////////////////////////////////////////////
    '// Variable Declaration and initialization //
    '///////////////////////////////////////////////


    counter var byte
    i var byte
    counter=0


    '//////////////////////////
    '// Program starts here //
    '//////////////////////////

    Main:
    lcdout $FE,1, "Counter:",dec counter
    Pause 500

    if PortA.4=1 then
    counter=counter +1 'Counter at 1 dials phone number
    goto Dial
    endif

    if PortA.4=0 then
    counter=0
    goto Main
    endif

    '//////////////////////////
    '// End of program here //
    '//////////////////////////

    Dial:
    'Determine which number to dial and dials it

    lcdout $FE,1, "Dial:",dec counter
    Pause 500

    if counter =1 then 'begin counter loop
    if PortB.0 = 1 then GOSUB Dial1760 'cel
    if PortB.1 = 1 then GOSUB Dial4392 'Ken
    if PortB.2 = 1 then GOSUB Dial9130 'Donald
    if PortB.3 = 1 then GOSUB Dial758 'Lyne
    Else
    counter =1
    goto Main
    endif 'end counter loop

    Pause 1000 'pause for 1 seconds
    if (counter > 1) or (counter =0) then counter =1

    'Keep counter to 1 after dialing, otherwise the program will keep dialing the number
    ' Will only redial if counter goes back to 0, that is alarm siren off

    goto Main



    '*************** subroutine here ********************
    Dial1760: 'cel
    lcdout $FE,1, "dialing1760 ",dec counter
    Pause 500
    PortA.1 = 1
    pause 3000
    DTMFOUT PortA.0, [5,1,4,4,4,4,4,4,4,2]
    pause 4000 'Pause 4 seconds
    DTMFOUT PortA.0, 20000,0, [5]
    pause 2000 'Pause 2 seconds
    PortA.1 = 0
    return

    end

    /end code

  2. #2
    Join Date
    Sep 2006
    Posts
    747


    Did you find this post helpful? Yes | No

    Default

    I think I might got the probe switch to 10x instead of 1x.. that would explain the 40v. I will check it once I get home...
    if so I guess I would have would have something like 3.7v output peaks on the pin.

  3. #3
    Join Date
    Sep 2006
    Posts
    747


    Did you find this post helpful? Yes | No

    Default

    Ok , the scoipe was set at 100x. now I read 4v at the output, but still a lot of noise after the filter, and only dials 50% of the times

    k

  4. #4
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by lerameur View Post
    but still a lot of noise after the filter, and only dials 50% of the times
    k
    Well, the PBP manual does say that any 'sound' output from the PIC, being 1-bit analog, is going to be 'noisy', a lot of harmonic content. And I would think that even if it's filtered well, it would still have a load of 'noise' in it. A low-pass 'brick wall' filter, with a steep 'slope/cutoff', with the -3db point set just above your highest frequency might handle that.
    I guess I'm not really sure. I haven't relied on the PIC to do much sound (other than moving MP3 data back and forth for a player).

  5. #5
    Join Date
    Sep 2006
    Posts
    747


    Did you find this post helpful? Yes | No

    Default

    I was initially thinking of going with a specialized DTMF chip. They are hard to get around here

  6. #6
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by lerameur View Post
    I was initially thinking of going with a specialized DTMF chip. They are hard to get around here
    I wouldn't think you'd need a special chip...just maybe brush up on some filter design techniques. After all, what you're trying to do has been done probably hundreds of times before. No reason why you can't do the same thing...

    And also...

    Here == ???????????????

  7. #7
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    I'm not sure what affect it will have on DTMFOUT, but you have ....

    ANSEL = 1

    Which puts PORTA.0 in Analog mode.
    And that's the DTMF pin.

    Might try ...

    ANSEL = 0
    <br>
    DT

Similar Threads

  1. Button problem driving me crazy!! Please help!
    By bearpawz in forum mel PIC BASIC Pro
    Replies: 11
    Last Post: - 20th November 2007, 15:46
  2. USART Problem , but don't know where, in pc? or in PIC?
    By precision in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 15th July 2007, 09:12
  3. Microcode Studio 18f2455 problem?????
    By volkan in forum mel PIC BASIC Pro
    Replies: 11
    Last Post: - 21st May 2007, 22:04
  4. 1 slave 1 master 1 MAX232 1 problem ?
    By SuB-ZeRo in forum mel PIC BASIC Pro
    Replies: 19
    Last Post: - 31st July 2005, 23:59
  5. PORTA.PinNo = 1 ' problem
    By frank small in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 6th May 2004, 15:30

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts