اطلاعیه

Collapse
No announcement yet.

درخواست کمک برای راه انداری MT8880 MT8888

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

    سلام به همگی دوستان

    خیلی عالی میشد دوستمون یه شماتیک و یه اشاره از برنامه ای که نوشتن رو برای دوستان ضمیمه میکردند .
    آری آغاز دوست داشتن است ...
    ...و همین دوست داشتن زیباست .

    دیدگاه


      #17
      پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

      سلام
      ببخشید هاااااااا

      فقط دوستان میان مینویسن که ما tm8888ce رو راه انداختیم
      پس کو؟ یک برنامه ایی یک چیزی به عنوان نمونه بگذارید تا ما هم که مثل شما
      حرفه ایی نیستیم بتونیم اون رو راه بندازیم.من تا این جا تونستم پیش برم که
      شماره هایی رو که از روی خط تلفن میاد رو تشخیص میدم..ولی هنوز نتونستم باهاش شماره بگیرم...
      من با بسکام کار میکنم
      اگر نمیشه برنامه رو تو سایت گذاشت...من حاضرم هزینه اون رو هم تقبل کنم
      امید وارم کسی کار من رو راه بندازه
      ممنون

      دیدگاه


        #18
        پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

        سلام

        نوشته اصلی توسط 0000a
        سلام
        ببخشید هاااااااا

        فقط دوستان میان مینویسن که ما tm8888ce رو راه انداختیم
        پس کو؟ یک برنامه ایی یک چیزی به عنوان نمونه بگذارید تا ما هم که مثل شما
        حرفه ایی نیستیم بتونیم اون رو راه بندازیم.من تا این جا تونستم پیش برم که
        شماره هایی رو که از روی خط تلفن میاد رو تشخیص میدم..ولی هنوز نتونستم باهاش شماره بگیرم...
        من با بسکام کار میکنم
        اگر نمیشه برنامه رو تو سایت گذاشت...من حاضرم هزینه اون رو هم تقبل کنم
        امید وارم کسی کار من رو راه بندازه
        ممنون
        شما که با بیسیک کار می کنید کارتون کمی راحتر هست
        پیشنهاد می کنم بجای 8888 یا8880 از 8870 که کار باهاش خیلی راحته، به عنوان گیرنده استفاده کنید . و فرستنده خود بسکام تابع فرستنده dtmf را داره پس در کل نیازی به 8880 ندارید البته این به این معنی نیست که شما نمی توانید از 8880 جواب بگیرید
        نادانترين مردم کساني هستند که فکر مي کنند داناترين آنها هستند.

        دیدگاه


          #19
          پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

          سلام
          من از 8870 استفاده کردم.کار میکنه.شماره گیری رو هم با بسکام انجام دادم
          ولی این اولین و ساده ترین روش گرفتن و تشخیص شماره هست.بزرگترین ظعف این آی سی 8870 اینه که موقع مکالمه صدای انسان رو تو بعضی از شرایط
          با کی تن اشتباه میگیره....البته این رو هم بگم من به روشی این آی سی رو کنترل کردم که تو دیتا شید اون نیست.من جایی هم ندیدم که کسی از این
          آی سی این شکلی استفاده کرده باشه.اشکالات زیادی به نظر من داره.که نمیشه تجاریش کرد
          آی سی 8888 رو راه انداختم تا اونجا که تست کردم دیدم که برخی از اشکالات 8870 رو نداره.تازه شماره گیری هم میکنه
          این رو بگم که وقتی پایه مخصوص شماره گیری AVR رو به چک متصل میکنیم همه چیز درسته و هیچ نویزی هم نیست
          به محض اینکه یک شماره باهاش بگیرید یک نویزی داخل خط شنیده میشه.و تا وقتی که آی سی رو ریست نکنید این مشکل هست..البته من این رو هم با گذاشتن
          یک ترانزیستور سویچ حل کردم....شما بگو اگه قرار باشه از ترانزیستور و یک مشت قطعات دیگه برای ثبات یک مدار اضافه کنیم که هم برای تولید به صرف نیست.
          هم نصب این قطعات زمان زیادی رو برای نصب میگیره و هم احتمال خرابی مدار زیاد میشه
          این آی سی8888 نمیدونم تو یک وضعیتی که قرار میگیره یک دفعه یک ستاره یا 8 یا 5 رو میگیره نویز هم نداره.
          این رو هم بگم که وقتی قراره با بسکام شماره بگیریم کریستال بین 4 تا 10 هست...البته من با 110592 تونستم شماره بگیرم
          خلاصه با بسکام و 8870 خیلی مدار بزرگتر و بی ثبات تره
          اگر کسی 8888 رو راه انداخته باشه .حاضرم برای تجربه ایشان هزینه هم پراخت کنم.هم تجربه کار با 8888 رو پیدا میکنم.و هم شاید دستگاه بهتری به مشتری تحویل دادم
          در پناه حق

          دیدگاه


            #20
            پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

            سلام
            من خودم از ht9170 استفاده کردم و برای فرستنده یک کتابخانه برای dtmf فراهم کردم چون با c کار می کنم ومشکل شما را اصلا تجربه نکردم
            mt8888 یک مقدار بدقلقه من خودم یه مدت روش وقت گذاشتم ونتیجه ای هم حاصل نشد به همین خاطر از روش بالا استفاده کردم.

            بهر حال موفق باشید اگر نتیجه گرفتید مارا هم درجریان بگذارید.
            نادانترين مردم کساني هستند که فکر مي کنند داناترين آنها هستند.

            دیدگاه


              #21
              پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

              سلام به دوستان عزیز

              من یه پروژه با mt8870 انجام دادم که تمام کارهایی که دوست خوبمون لازم داشت رو انجام میده:

              شماره گیری و دیکد کردن کلید های فشرده شده یه قسمت کوچک از کارایی های این دستگاهه.

              برنامه نویسی به زبان C با 1330 خط برنامه

              مشخصات دستگاه مربوط به نسخه ی دمو میباشد.


              امکانات دستگاه:
              - قفل پیش شماره ی صفر
              - قفل پیش شماره های دلخواه
              - قفل همه ی شماره ها
              - قفل کننده ی dial- up
              - محدود کننده ی زمان مکالمه
              - سیستم اعلام هشدار به شماره ی مورد نظر

              قابلیتها:
              - ریست کردن تنظیمات
              - غیر فعال کردن کلیه ی محدودیت ها برای یک مرتبه تماس
              - تغییر رمز ورود به تنظیمات دستگاه

              مشخصات فنی :
              - ولتاژکاری: V 4-5/5
              - جریان مصرفی پسیو(معمول کاری) µA .1
              - جریان مصرفی اکتیو: m A 10
              -جریان مصرفی حالت m A 4.45 :sleep
              - مقاومت اعمالی حالت اکتیو: Ω 390
              - مقاومت اعمالی حالت اتصال کوتاه: Ω 75
              - توان مصرفی اکتیو: mw 45
              -
              operating temperature
              C° +60 ~ -10

              ویژگی ها :
              - دارای مدار محافظ اتصال کوتاه
              - محافظت درمقابل اتصال معکوس تغذیه
              - قابلیت اتصال معکوس ومستقیم به خط تلفن
              - دارای شارژر خودکار(خودتغذیه)
              - کارکرد هر دو سیستم پالسی وتن
              - قابلیت اتصال وارتباط مستقیم با سیستمهای امنیتی- حفاظتی
              - قابلیت اتصال به سیستم شبکه
              - قابلیت اتصال به سیستم خط داخلی
              -مدیریت انرژی مصرفی
              - طراحی بورد High Frequency
              - بورد با محافظ solder
              - طراحی Compact board



              [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
              [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

              دیدگاه


                #22
                پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

                سلام
                قربون شکل ماهت.عرض کردم که می خوام آی سی 8888 رو راه بندازم
                راه اندازی 8870 که کاری نداره.این آی سی اولین گزینه برای تشخیص کد هست

                این رو هم خدمت شما عرض کردم که من با بسکام کار میکنم .به زبان c آشنایی ندارم
                یعنی واقعا تو این سایت با این همه مهندس.هیچ کس این آی سی کوچولو رو راه اندازی نکرده با بسکام؟
                واقعا عجیبه

                دیدگاه


                  #23
                  پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

                  دوستان یه لطفی بکننین بیان تا از تجربیات هم استفاده بکنیم :nerd: نمیدونم بگم بدبختانه یا خوشبختانه بنده فقط بلدم با assembly برنامه بنویسم پس ناچارم با mt8888 کار کنم اون طور که از دیتاشیت معلومه که یکم کار پیچیدس مثلا" اصلا" نتونستم کار اکثر PIN ها رو متوجه بشم بنده از امروز کار روی این IC رو شروع می کنم از دوستان اگه کسی پایه هست اعلام کنه
                  فعلا" بنده فقط می دونم که این IC توانایی شماره گیری به روش DTMF رو داره و همین تور میتونه اطلاعات DTMF ارسالی رو هم دیکد کنه
                  میتونین برای PCB روی من حساب باز کنین
                  راستی بنده AVR314 که ماله خوده اتمل هست رو یه نگاهی انداختم یکم که نه خیلی برای من سخت بود :eek:
                  به امید موفقیت هممون :nerd:
                  8/15/2012 :
                  مهندسین محترم

                  هییچ کس مایل نیست کمک کنه MT8888 فوقولادس اگه بتونیم راهش بندازیم خیلی کارها می شه باهاش کرد !!!
                  یه کمکی بکنین خیییلی کارم گیره :cry2:
                  لااقل اگه کسی کتابخونه این ای سی رو برای پروتئوس داره لطف کنه بزاره تا بنونیم با آزمونو خطا پیش بریم :cry:

                  دیدگاه


                    #24
                    پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

                    من با اسمبلی کار نکردم، ولی شاید این بدردتون بخوره:

                    ;************************************************* **************************
                    ;* A P P L I C A T I O N N O T E F O R T H E A V R F A M I L Y
                    ;*
                    ;* Number : AVR314
                    ;* File Name : "dtmf.asm"
                    ;* Title : DTMF Generator
                    ;* Date : 00.06.27
                    ;* Version : 1.1
                    ;* Target MCU : Any AVR with SRAM, 8 I/O pins and PWM
                    ;*
                    ;* DESCRIPTION
                    ;* This Application note describes how to generate DTMF tones using a single
                    ;* 8 bit PWM output.
                    ;*
                    ;************************************************* **************************

                    .include "4414def.inc"

                    ;************************************************* *************************
                    ; REGISTERS
                    ;************************************************* *************************
                    .def ptr_Ltmp = r1 ; low part temporary register
                    .def ptr_Htmp = r2 ; high part temporary register
                    .def ptr_Lb = r3 ; low part low frequency pointer
                    .def ptr_Hb = r4 ; high part low frequency pointer

                    .def ptr_La = r5 ; low part high frequency pointer
                    .def ptr_Ha = r6 ; high part high frequency pointer

                    .def addb_out = r7 ; low frequency value to be written
                    .def adda_out = r8 ; High frequency value to be written

                    .def x_SWa = r9 ; high frequency x_SW
                    .def x_SWb = r10 ; low frequency x_SW

                    .def count = r18 ; temporary counter register
                    .def tmp = r16 ; temp register

                    .def input = r17 ; input from portB

                    ;************************************************* *************************
                    ;************************************************* *************************
                    .equ Xtal = 8000000 ; system clock frequency
                    .equ prescaler = 1 ; timer1 prescaler
                    .equ N_samples = 128 ; Number of samples in lookup table
                    .equ Fck = Xtal/prescaler ; timer1 working frequency
                    .equ delaycyc = 10 ; port B setup delay cycles

                    ;************************************************* *************************
                    ; PROGRAM START - EXECUTION STARTS HERE
                    ;************************************************* *************************
                    .cseg
                    .org $0
                    rjmp start ; Reset handler
                    .org OVF1addr
                    rjmp tim1_ovf ; Timer1 overflow Handle

                    ;************************************************* *************************
                    ; Interrupt timer1
                    ;************************************************* *************************
                    tim1_ovf:
                    push tmp ; Store temporary register
                    in tmp,SREG
                    push tmp ; Store status register
                    push ZL
                    push ZH ; Store Z-Pointer
                    push r0 ; Store R0 Register

                    ;high frequency
                    mov ptr_Ltmp,ptr_La
                    mov ptr_Htmp,ptr_Ha
                    rcall getsample ; read from sample table
                    mov adda_out,r0 ; adda_out = high frquency value
                    add ptr_La,x_SWa
                    clr tmp ; (tmp is cleared, but not the carry flag)
                    adc ptr_Ha,tmp ; Refresh pointer for the next sample

                    ;low frequency
                    mov ptr_Ltmp,ptr_Lb
                    mov ptr_Htmp,ptr_Hb
                    rcall getsample ; read from sample table
                    mov addb_out,r0 ; addb_out = low frequency value
                    add ptr_Lb,x_SWb
                    clr tmp ; (tmp is cleared, but not the carry flag)
                    adc ptr_Hb,tmp ; refresh pointer for the next sample

                    ; scale amplitude
                    ldi tmp,2
                    add addb_out,tmp
                    lsr addb_out
                    lsr addb_out ; divide 4 and round off
                    sub r0,addb_out ; 4/4 - 1/4 = 3/4
                    mov addb_out,r0 ; now addb_out has the right amplitude

                    clr tmp
                    out OCR1AH,tmp
                    mov tmp,adda_out
                    add tmp,addb_out
                    out OCR1AL,tmp ; send the sum of the two amplitudes to PWM

                    pop r0 ; Restore R0 Register
                    pop ZH
                    pop ZL ; Restore Z-Pointer
                    pop tmp
                    out SREG,tmp ; Restore SREG
                    pop tmp ; Restore temporary register;
                    reti

                    ;*********************************
                    ; RESET Interrupt
                    ;*********************************
                    start:
                    sbi DDRD,PD5 ; Set pin PD5 as output
                    ldi tmp,low(RAMEND)
                    out SPL,tmp
                    ldi tmp,high(RAMEND)
                    out SPH,tmp ; Initialize Stackpointer

                    ;Initialization of the registers
                    clr ptr_La
                    clr ptr_Ha
                    clr ptr_Lb
                    clr ptr_Hb ; Set both table ponters to 0x0000

                    ;enable timer1 interrupt
                    ldi tmp,(1<<TOIE1)
                    out TIMSK,tmp ; Enable Timer1_ovf interrupt

                    ;set timer1 PWM mode
                    ldi tmp,(1<<PWM10)+(1<<COM1A1)
                    out TCCR1A,tmp ; 8 bit PWM not reverse (Fck/510)
                    ldi tmp,(1<<CS10)
                    out TCCR1B,tmp ; prescaler = 1
                    sei ; Enable interrupts

                    ;************************************************* *************************
                    ; MAIN
                    ; Read from portB (eg: using evaluation board switch) which
                    ; tone to generate, extract mixing high frequency
                    ; (column) and low frequency (row), and then
                    ; fix x_SWa and x_SWb
                    ; row -> PINB high nibble
                    ; column -> PINB low nibble
                    ;************************************************* *************************

                    main:
                    ;high frequency (Esteem only high nibble that is row)
                    ;PB_High_Nibble:
                    ldi tmp,0x0F
                    out DDRB,tmp ; High nibble Input / Low nibble. Outp.
                    ldi tmp,0xF0
                    out PORTB,tmp ; High nibble PullUp / Low nibble Zero Outp.
                    rcall delay
                    clr count
                    in input,PINB

                    main10:
                    inc count
                    lsl input
                    brcc main20
                    ldi tmp,4
                    cp count,tmp
                    brne main10
                    clr x_SWb
                    clr count
                    rjmp main30

                    main20:
                    dec count
                    ldi ZL,low(frequencyL*2)
                    ldi ZH,high(frequencyL*2)
                    add ZL,count
                    clr tmp
                    adc ZH,tmp
                    lpm
                    mov x_SWb,r0 ; this is low frequency x_SW
                    clr count

                    ;low frequency
                    ;PB_Low_Nibble:
                    main30:
                    ldi tmp,0xF0
                    out DDRB,tmp ; High nibble. Outp. / Low nibble Input
                    ldi tmp,0x0F
                    out PORTB,tmp ; High nibble Zero Outp. / Low nibble PullUp
                    rcall delay
                    in input,PINB
                    swap input

                    main40:
                    inc count
                    lsl input
                    brcc main50
                    ldi tmp,4
                    cp count,tmp
                    brne main40
                    clr x_SWa
                    rjmp main

                    main50: ; there is a zero bit in count-1 position
                    dec count
                    ldi ZL,low(frequencyH*2)
                    ldi ZH,high(frequencyH*2)
                    add ZL,count
                    clr tmp
                    adc ZH,tmp
                    lpm
                    mov x_SWa,r0 ; this is high frequency x_SW
                    rjmp main


                    ;****************** DELAY ***********************************
                    ;************************************************* ***************
                    delay:
                    ldi tmp,delaycyc
                    loop:
                    dec tmp
                    brne loop
                    ret


                    ;****************** GET SAMPLE ******************************
                    ;************************************************* ***************
                    getsample:
                    ldi tmp,0x0f
                    and ptr_Htmp,tmp

                    ; ROUND
                    ldi tmp,4
                    add ptr_Ltmp,tmp
                    clr tmp
                    adc ptr_Htmp,tmp

                    ;shift (divide by eight):
                    lsr ptr_Htmp
                    ror ptr_Ltmp
                    lsr ptr_Htmp
                    ror ptr_Ltmp
                    lsr ptr_Htmp
                    ror ptr_Ltmp

                    ldi tmp,0x7f
                    and ptr_Ltmp,tmp ; module 128 (samples number sine table)

                    ldi ZL,low(sine_tbl*2)
                    ldi ZH,high(sine_tbl*2)
                    add ZL,ptr_Ltmp
                    clr tmp
                    adc ZH,tmp ; Z is a pointer to the correct
                    ; sine_tbl value
                    lpm
                    ret

                    ;*************************** SIN TABLE *************************************
                    ; Samples table : one period sampled on 128 samples and
                    ; quantized on 7 bit
                    ;************************************************* *****************************
                    sine_tbl:
                    .db 64,67
                    .db 70,73
                    .db 76,79
                    .db 82,85
                    .db 88,91
                    .db 94,96
                    .db 99,102
                    .db 104,106
                    .db 109,111
                    .db 113,115
                    .db 117,118
                    .db 120,121
                    .db 123,124
                    .db 125,126
                    .db 126,127
                    .db 127,127
                    .db 127,127
                    .db 127,127
                    .db 126,126
                    .db 125,124
                    .db 123,121
                    .db 120,118
                    .db 117,115
                    .db 113,111
                    .db 109,106
                    .db 104,102
                    .db 99,96
                    .db 94,91
                    .db 88,85
                    .db 82,79
                    .db 76,73
                    .db 70,67
                    .db 64,60
                    .db 57,54
                    .db 51,48
                    .db 45,42
                    .db 39,36
                    .db 33,31
                    .db 28,25
                    .db 23,21
                    .db 18,16
                    .db 14,12
                    .db 10,9
                    .db 7,6
                    .db 4,3
                    .db 2,1
                    .db 1,0
                    .db 0,0
                    .db 0,0
                    .db 0,0
                    .db 1,1
                    .db 2,3
                    .db 4,6
                    .db 7,9
                    .db 10,12
                    .db 14,16
                    .db 18,21
                    .db 23,25
                    .db 28,31
                    .db 33,36
                    .db 39,42
                    .db 45,48
                    .db 51,54
                    .db 57,60

                    ;******************************* x_SW ***********************************
                    ;Table of x_SW (excess 8): x_SW = ROUND(8*N_samples*f*510/Fck)
                    ;************************************************* *************************

                    ;high frequency (coloun)
                    ;1209hz ---> x_SW = 79
                    ;1336hz ---> x_SW = 87
                    ;1477hz ---> x_SW = 96
                    ;1633hz ---> x_SW = 107

                    frequencyH:
                    .db 107,96
                    .db 87,79

                    ;low frequency (row)
                    ;697hz ---> x_SW = 46
                    ;770hz ---> x_SW = 50
                    ;852hz ---> x_SW = 56
                    ;941hz ---> x_SW = 61

                    frequencyL:
                    .db 61,56
                    .db 50,46



                    مطمئن نیستم درست باشه، اینجوری بدون نیاز به MTxxxx شماره گیری انجام میشه، بعد پایه ی call progress آی سی رو به میکرو وصل کنین، و با برنامه ی فرکانس متر متوجه نوع بوق آزاد و اشغال بشید

                    دیدگاه


                      #25
                      پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

                      خیلی ممنون karajisaeede =D>

                      چون بنده فقط assembly بلدم نتونستم کامل برنامه رو بفهمم ولی کلیت کار برام آشکار شد

                      به احتمال زیاد این کار از خود suggestion های شرکت اتمل هست به نام AVR314 که من قبلا" مطالعه کردمش خوب روش فوقولاده ای هست فقط چون من می خوام atmega16 استفاده کنم و زبان برنامه نویسیم هم بدبختانه assembly هست خوب خودت خوب می دونی یکم محدوده Atmega16 و اینکه من چنتا کار دیگه هم باید با میکرو انجام بدم برای همین احساس می کنم این برنامه خیلی خیلی میکرو رو اشغال میکنه پس ترجیه دادم از MT8888 استفاده کنم چرا: oo:
                      چنکه MT8888 یک آیسی با 4 تا ( ورودی خروجی ) یک سری Status register فوقولاده که همه چی رو بت خبر میدن شما فقط نیازه بهش دستور بدی و delay ایجاد کنی :applause:
                      همین آن وقت تو میتونی خیلی کارهای دیگه با میکرو بکنی

                      فقط میگم هنوز با MT8888 یک سری کنتاکت دارم که ایشالا حل می شه در اولین فرصت اطلاعات کامل در رابطه با راه انداختنش رو می زارم

                      AVR314 رو هم Attache میکنم که اگه دوستان علاقه داشتم مطالعه کنن :nice:

                      www.atmel.com/Images/doc1982.pdf

                      دیدگاه


                        #26
                        پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

                        درسته دقیقا نوت 314 avr بود :redface:

                        دیدگاه


                          #27
                          پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

                          سلام به همگی
                          تو این پست خوندم که خیلی ها با راه اندازی MT8888 مشکل دارن....
                          من کتاب ((مدار های اصولی و پایه میکرو کنترلر)) رو پیشنهاد میکنم بهتون که کار با این آیسی و چندین قطعات و مدارات کار آمد وجالب دیگه رو با برنامه و کاربرد عملی توضیح داده...
                          من خودم این کتاب رو از www.iran-micro.com خریدم که قیمت مناسبی هم داره
                          موفق باشید

                          دیدگاه


                            #28
                            پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

                            به نام خدا
                            همانطور که دوستان فرمودند از کتاب 10 پروژه با avr آقایان کاظم لو و حسینی در این مورد کمک زیادی میتونیم بگیریم .
                            من با mt8888 شماره گیری رو انجام دادم که خدمتتون عرض می کنم .
                            اگر بخواهیم بدون استفاده از روش burst mode در این آی سی شماره گیری کنیم فقط نیاز به نوشتن روی رجیستر کنترلی cra داریم .
                            بیت های مربوط به رجیستر cra :
                            بیت tout : تا زمانی که یک است سیگنال tone به خروجی ارسال می شود .
                            بیت cp/dtmf : انتخاب مد dtmf یا cp که عدد صفر مد dtmf را روشن می کند .
                            بیت irq : در صورت یک بودن زمانی که یک سیگنال در حالت dtmf دریافت یا ارسال شود پایه irq/cp صفر می شود .
                            بیت rsel : که با صفر کردن این بیت نیازی به نوشن در رجیستر کنترلی crb نیست .
                            میشه از یک پورت میکرو جهت وصل شدن به (d0~d3) و پایه های (wr cs rs0 rd) استفاده کرد .
                            مراحل :
                            1.( rd:1 rs0:1 wr:0 cs:0 )و( tout:1 dtmf:0 irq:0 rsel:0 )
                            2.تاخیر 1ms
                            3.wr:1
                            4.تاخیر 1ms
                            5. عدد روی پایه های (d0~d3) قرار گیرد به صورتی که همزمان (wr:0 cs:0 rs0:0 rd:1) میشه اگر پین rd به باارزشترین بیت پورت وصل است و از کم ارزشترین بیت ها جهت ارسال عدد استفاده کردیم عدد را با 128 جمع و در خروجی قرار داد .
                            6. تاخیر 1ms
                            7.wr:1
                            8. تاخیر 51ms
                            9.( rd:1 rs0:1 wr:0 cs:0 )و( tout:0 dtmf:0 irq:0 rsel:0 )
                            10. تاخیر 1ms
                            11.wr:1
                            12.تاخیر 51ms
                            13.ارسال عدد بعدی
                            *****باید به این نکته توجه کنیم که در دیتاشیت کد عدد صفر 1010 است *****

                            دیدگاه


                              #29
                              پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

                              نوشته اصلی توسط jbahal
                              به نام خدا
                              همانطور که دوستان فرمودند از کتاب 10 پروژه با avr آقایان کاظم لو و حسینی در این مورد کمک زیادی میتونیم بگیریم .
                              من با mt8888 شماره گیری رو انجام دادم که خدمتتون عرض می کنم .
                              اگر بخواهیم بدون استفاده از روش burst mode در این آی سی شماره گیری کنیم فقط نیاز به نوشتن روی رجیستر کنترلی cra داریم .
                              بیت های مربوط به رجیستر cra :
                              بیت tout : تا زمانی که یک است سیگنال tone به خروجی ارسال می شود .
                              بیت cp/dtmf : انتخاب مد dtmf یا cp که عدد صفر مد dtmf را روشن می کند .
                              بیت irq : در صورت یک بودن زمانی که یک سیگنال در حالت dtmf دریافت یا ارسال شود پایه irq/cp صفر می شود .
                              بیت rsel : که با صفر کردن این بیت نیازی به نوشن در رجیستر کنترلی crb نیست .
                              میشه از یک پورت میکرو جهت وصل شدن به (d0~d3) و پایه های (wr cs rs0 rd) استفاده کرد .
                              مراحل :
                              1.( rd:1 rs0:1 wr:0 cs:0 )و( tout:1 dtmf:0 irq:0 rsel:0 )
                              2.تاخیر 1ms
                              3.wr:1
                              4.تاخیر 1ms
                              5. عدد روی پایه های (d0~d3) قرار گیرد به صورتی که همزمان (wr:0 cs:0 rs0:0 rd:1) میشه اگر پین rd به باارزشترین بیت پورت وصل است و از کم ارزشترین بیت ها جهت ارسال عدد استفاده کردیم عدد را با 128 جمع و در خروجی قرار داد .
                              6. تاخیر 1ms
                              7.wr:1
                              8. تاخیر 51ms
                              9.( rd:1 rs0:1 wr:0 cs:0 )و( tout:0 dtmf:0 irq:0 rsel:0 )
                              10. تاخیر 1ms
                              11.wr:1
                              12.تاخیر 51ms
                              13.ارسال عدد بعدی
                              *****باید به این نکته توجه کنیم که در دیتاشیت کد عدد صفر 1010 است *****
                              با تشکر از دوست خوبمون jbahal جی باحال عزیز می تونید بیشتر راهنمایی کنید بنده هم می خوام dtmf دریافت کنم هم بفرستم آیا کتابخانه ای برای این MT8888 موجود دارید اگه یکم وقت بزارید و بیشتر راهنمایی کنید بچه ها بیشتر می تونن استفاده کنن
                              بازهم ممنــــــــــــــــــــــــــــــــــون

                              دیدگاه


                                #30
                                پاسخ : درخواست کمک برای راه انداری MT8880 MT8888

                                سلام دوستان من به سه روش برای شماره گیری تا حالا برنامه نوشتم ولی هنوز کار نکرده
                                1st:
                                کد:
                                #include <mega32.h>
                                #include <delay.h>
                                #include <stdio.h>
                                
                                
                                int i;
                                int x[11]={10,9,3,6,6,2,7,1,6,1,3};
                                
                                // Declare your global variables here
                                
                                void main(void)
                                {
                                // Declare your local variables here
                                
                                // Input/Output Ports initialization
                                // Port A initialization
                                // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
                                // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
                                PORTA=0x00;
                                DDRA=0xFF;
                                
                                // Port B initialization
                                // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                                // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                                PORTB=0x00;
                                DDRB=0x00;
                                
                                // Port C initialization
                                // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=In 
                                // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=P 
                                PORTC=0x01;
                                DDRC=0X00;
                                
                                // Port D initialization
                                // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                                // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                                PORTD=0x00;
                                DDRD=0x00;
                                
                                // Timer/Counter 0 initialization
                                // Clock source: System Clock
                                // Clock value: Timer 0 Stopped
                                // Mode: Normal top=0xFF
                                // OC0 output: Disconnected
                                TCCR0=0x00;
                                TCNT0=0x00;
                                OCR0=0x00;
                                
                                // Timer/Counter 1 initialization
                                // Clock source: System Clock
                                // Clock value: Timer1 Stopped
                                // Mode: Normal top=0xFFFF
                                // OC1A output: Discon.
                                // OC1B output: Discon.
                                // Noise Canceler: Off
                                // Input Capture on Falling Edge
                                // Timer1 Overflow Interrupt: Off
                                // Input Capture Interrupt: Off
                                // Compare A Match Interrupt: Off
                                // Compare B Match Interrupt: Off
                                TCCR1A=0x00;
                                TCCR1B=0x00;
                                TCNT1H=0x00;
                                TCNT1L=0x00;
                                ICR1H=0x00;
                                ICR1L=0x00;
                                OCR1AH=0x00;
                                OCR1AL=0x00;
                                OCR1BH=0x00;
                                OCR1BL=0x00;
                                
                                // Timer/Counter 2 initialization
                                // Clock source: System Clock
                                // Clock value: Timer2 Stopped
                                // Mode: Normal top=0xFF
                                // OC2 output: Disconnected
                                ASSR=0x00;
                                TCCR2=0x00;
                                TCNT2=0x00;
                                OCR2=0x00;
                                
                                // External Interrupt(s) initialization
                                // INT0: Off
                                // INT1: Off
                                // INT2: Off
                                MCUCR=0x00;
                                MCUCSR=0x00;
                                
                                // Timer(s)/Counter(s) Interrupt(s) initialization
                                TIMSK=0x00;
                                
                                // USART initialization
                                // USART disabled
                                UCSRB=0x00;
                                
                                // Analog Comparator initialization
                                // Analog Comparator: Off
                                // Analog Comparator Input Capture by Timer/Counter 1: Off
                                ACSR=0x80;
                                SFIOR=0x00;
                                
                                // ADC initialization
                                // ADC disabled
                                ADCSRA=0x00;
                                
                                // SPI initialization
                                // SPI disabled
                                SPCR=0x00;
                                
                                // TWI initialization
                                // TWI disabled
                                TWCR=0x00;
                                
                                while (PINC.0==1);
                                
                                for (i=0;i<11;i++);
                                
                                   {
                                    PORTA=0b11011100;
                                    
                                    PORTA.1=1;
                                    delay_ms(100);
                                    PORTA=0b00001100;
                                    PORTA.1=1;
                                    delay_ms(100);
                                    PORTA.2=0;
                                    PORTA.1=0;
                                    PORTA.3=1;
                                    delay_ms(100);
                                    x[i]=x[i]*16;
                                    x[i]=x[i]+8;
                                    PORTA=x[i];
                                    delay_ms(100);
                                    PORTA.1=1;
                                    delay_ms(100);
                                   };
                                };
                                2nd
                                کد:
                                #include <mega32.h>
                                #include <delay.h>
                                
                                // Declare your global variables here
                                int i=0; 
                                void main(void)
                                {
                                // Declare your local variables here
                                
                                // Input/Output Ports initialization
                                // Port A initialization
                                // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
                                // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
                                PORTA=0x00;
                                DDRA=0xFF;
                                
                                // Port B initialization
                                // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                                // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                                PORTB=0x00;
                                DDRB=0x00;
                                
                                // Port C initialization
                                // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                                // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=P 
                                PORTC=0x01;
                                DDRC=0x00;
                                
                                // Port D initialization
                                // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                                // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                                PORTD=0x00;
                                DDRD=0x00;
                                
                                // Timer/Counter 0 initialization
                                // Clock source: System Clock
                                // Clock value: Timer 0 Stopped
                                // Mode: Normal top=0xFF
                                // OC0 output: Disconnected
                                TCCR0=0x00;
                                TCNT0=0x00;
                                OCR0=0x00;
                                
                                // Timer/Counter 1 initialization
                                // Clock source: System Clock
                                // Clock value: Timer1 Stopped
                                // Mode: Normal top=0xFFFF
                                // OC1A output: Discon.
                                // OC1B output: Discon.
                                // Noise Canceler: Off
                                // Input Capture on Falling Edge
                                // Timer1 Overflow Interrupt: Off
                                // Input Capture Interrupt: Off
                                // Compare A Match Interrupt: Off
                                // Compare B Match Interrupt: Off
                                TCCR1A=0x00;
                                TCCR1B=0x00;
                                TCNT1H=0x00;
                                TCNT1L=0x00;
                                ICR1H=0x00;
                                ICR1L=0x00;
                                OCR1AH=0x00;
                                OCR1AL=0x00;
                                OCR1BH=0x00;
                                OCR1BL=0x00;
                                
                                // Timer/Counter 2 initialization
                                // Clock source: System Clock
                                // Clock value: Timer2 Stopped
                                // Mode: Normal top=0xFF
                                // OC2 output: Disconnected
                                ASSR=0x00;
                                TCCR2=0x00;
                                TCNT2=0x00;
                                OCR2=0x00;
                                
                                // External Interrupt(s) initialization
                                // INT0: Off
                                // INT1: Off
                                // INT2: Off
                                MCUCR=0x00;
                                MCUCSR=0x00;
                                
                                // Timer(s)/Counter(s) Interrupt(s) initialization
                                TIMSK=0x00;
                                
                                // USART initialization
                                // USART disabled
                                UCSRB=0x00;
                                
                                // Analog Comparator initialization
                                // Analog Comparator: Off
                                // Analog Comparator Input Capture by Timer/Counter 1: Off
                                ACSR=0x80;
                                SFIOR=0x00;
                                
                                // ADC initialization
                                // ADC disabled
                                ADCSRA=0x00;
                                
                                // SPI initialization
                                // SPI disabled
                                SPCR=0x00;
                                
                                // TWI initialization
                                // TWI disabled
                                TWCR=0x00;
                                while(1)
                                {
                                int X[11]={10,9,3,6,6,2,7,1,6,1,3};
                                while(PINC.0==1)
                                {
                                };
                                
                                for(i=0;i<11;i++)
                                {
                                delay_ms(100);
                                PORTA.1=1; 
                                 delay_ms(20);
                                 PORTA=0b11011100;
                                 PORTA.1=1;
                                 delay_ms(20);
                                 PORTA=0b00001100;
                                 PORTA.1=1;
                                 delay_ms(20);
                                 PORTA.2=0;
                                 PORTA.1=0;
                                 PORTA.3=1;
                                 delay_ms(20);
                                 X[i]*=16;
                                 X[i]+=8;
                                 PORTA=X[i];
                                 delay_ms(20);
                                 PORTA.1=1;
                                 delay_ms(104);
                                 };
                                 };
                                 };
                                3th
                                کد:
                                #include <mega32.h>
                                #include <delay.h>
                                #include <stdio.h>
                                
                                #define CS PORTA.0
                                #define WR PORTA.1
                                #define RS PORTA.2
                                #define RD PORTA.3
                                #define D0 PORTA.4
                                #define D1 PORTA.5
                                #define D2 PORTA.6
                                #define D3 PORTA.7
                                
                                int i=0;
                                
                                // Declare your global variables here
                                
                                void main(void)
                                {
                                // Declare your local variables here
                                
                                // Input/Output Ports initialization
                                // Port A initialization
                                // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
                                // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
                                PORTA=0x00;
                                DDRA=0xFF;
                                
                                // Port B initialization
                                // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                                // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                                PORTB=0x00;
                                DDRB=0x00;
                                
                                // Port C initialization
                                // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                                // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=P 
                                PORTC=0x01;
                                DDRC=0x00;
                                
                                // Port D initialization
                                // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                                // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                                PORTD=0x00;
                                DDRD=0x00;
                                
                                // Timer/Counter 0 initialization
                                // Clock source: System Clock
                                // Clock value: Timer 0 Stopped
                                // Mode: Normal top=0xFF
                                // OC0 output: Disconnected
                                TCCR0=0x00;
                                TCNT0=0x00;
                                OCR0=0x00;
                                
                                // Timer/Counter 1 initialization
                                // Clock source: System Clock
                                // Clock value: Timer1 Stopped
                                // Mode: Normal top=0xFFFF
                                // OC1A output: Discon.
                                // OC1B output: Discon.
                                // Noise Canceler: Off
                                // Input Capture on Falling Edge
                                // Timer1 Overflow Interrupt: Off
                                // Input Capture Interrupt: Off
                                // Compare A Match Interrupt: Off
                                // Compare B Match Interrupt: Off
                                TCCR1A=0x00;
                                TCCR1B=0x00;
                                TCNT1H=0x00;
                                TCNT1L=0x00;
                                ICR1H=0x00;
                                ICR1L=0x00;
                                OCR1AH=0x00;
                                OCR1AL=0x00;
                                OCR1BH=0x00;
                                OCR1BL=0x00;
                                
                                // Timer/Counter 2 initialization
                                // Clock source: System Clock
                                // Clock value: Timer2 Stopped
                                // Mode: Normal top=0xFF
                                // OC2 output: Disconnected
                                ASSR=0x00;
                                TCCR2=0x00;
                                TCNT2=0x00;
                                OCR2=0x00;
                                
                                // External Interrupt(s) initialization
                                // INT0: Off
                                // INT1: Off
                                // INT2: Off
                                MCUCR=0x00;
                                MCUCSR=0x00;
                                
                                // Timer(s)/Counter(s) Interrupt(s) initialization
                                TIMSK=0x00;
                                
                                // USART initialization
                                // USART disabled
                                UCSRB=0x00;
                                
                                // Analog Comparator initialization
                                // Analog Comparator: Off
                                // Analog Comparator Input Capture by Timer/Counter 1: Off
                                ACSR=0x80;
                                SFIOR=0x00;
                                
                                // ADC initialization
                                // ADC disabled
                                ADCSRA=0x00;
                                
                                // SPI initialization
                                // SPI disabled
                                SPCR=0x00;
                                
                                // TWI initialization
                                // TWI disabled
                                TWCR=0x00;
                                
                                while (1)
                                   {
                                    WR=1;
                                    
                                    while(PINC.0==1)
                                    { 
                                    };
                                    for(i=0;i<11;i++)
                                    {   
                                        int x[11]={10,9,3,6,6,2,7,1,6,1,3};
                                
                                     D0=1;
                                     D1=0;
                                     D2=1;
                                     D3=1;
                                     RS=1;
                                     RD=1;                     
                                     WR=0;
                                     delay_ms(80);
                                     WR=1;
                                     delay_ms(80);
                                     D0=D1=D2=D3=0;
                                     RS=RD=1;
                                     delay_ms(80);
                                     WR=0;
                                     delay_ms(80);
                                     WR=1;
                                     delay_ms(80);
                                     if(x[i]&0x01==1)D0=1;
                                     else D0=0;
                                     if((x[i]>>1)&0x01==1)D1=1;
                                     else D1=0;
                                     if((x[i]>>2)&0x01==1)D2=1;
                                     else D2=0;
                                     if((x[i]>>3)&0x01==1)D3=1;
                                     else D3=0;
                                     RS=0;
                                     delay_ms(80);
                                     RD=1;
                                     WR=0;
                                     delay_ms(80);
                                     WR=1;
                                     delay_ms(104);
                                     };
                                   };
                                   };

                                دیدگاه

                                لطفا صبر کنید...
                                X