logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

{atmega8][basom] siemens m35 i problem

krzysiekk_20 11 Kwi 2009 15:45 1557 7
REKLAMA
  • #1 6401779
    krzysiekk_20
    Poziom 12  
    Witam,

    Wiem że były podobne posty na ten temat ale nie wiem co z moim programem jest nie tak.
    Gdy dzwonię na telefon podłączony do uC nic się nie dzieje. Komunikacja z telefonem działa bo wysyłałem przez uC różne komendy AT i odpowiadał.

    
    $regfile = "m8def.dat"
    $crystal = 8000000
    $baud = 19200
    
    Config Serialin = Buffered , Size = 100
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portb.4 , Rs = Portb.5
    Enable Interrupts
    Declare Sub Oproznij_bufor
    Declare Sub Odczytaj_uart
    Declare Sub Odczytaj_sprzetowy_uart
    
    Dim Ringtxt As Byte
    Dim Ringtxt2 As Byte
    Dim Bufor As Byte
    Dim Ring As Byte
    Dim Ring2 As Byte
    Dim Kod As String * 100
    Dim Dane As String * 200
    Dim Stan As Bit
    Dim I As Byte
    Dim Dzw As Byte
    Dim Dzwoniacy As String * 40
    Dim Dzwtxt As String * 20
    
    Ringtxt = "RING"
    Ringtxt2 = "+CLIP:"
    Stan = 0
    Dzwtxt = "6"
    
      Waitms 100
      Print "ATX0" ; Chr(13)                                    'Odpowiadaj
      Waitms 100
      Print "ATZ" ; Chr(13)                                     'Ustaw domyślnie
      Waitms 100
      Print "ATE0" ; Chr(13)                                    'WYLACZ ECHO
      Waitms 100
      Print "AT+CLIP=1" ; Chr(13)                               'Wlaczanie prezentacji numeru
    I = 0
    Gosub Oproznij_bufor
    
    
    Do
    Call Odczytaj_uart
    Loop
    
    Odczytaj_uart:
    
    Bufor = Ischarwaiting()                                     'Sprawdz czy bufor pełny
    If Bufor = 1 Then
    Gosub Odczytaj_sprzetowy_uart
    Ring = Instr(dane , Ringtxt)
    
    If Ring > 0 Then
       Waitms 200
       Gosub Odczytaj_sprzetowy_uart
       Gosub Odczytaj_sprzetowy_uart
      Print "ATH" ; Chr(13)
      'Gosub Oproznij_bufor
      Waitms 100
      Dzw = Instr(dane , Dzwtxt)
             'Dzw = Dzw + 5
             Dzwoniacy = Mid(dane , Dzw , 9)
             If Dzwoniacy = "693758731" Then
             Lcd "Krzych"
             End If
      'Incr I
      'Locate 1 , 1
      'Lcd "telefon  " ; I
    End If
    End If
    Gosub Oproznij_bufor
    Return
    
    
     Oproznij_bufor:
    Do
       Kod = Inkey()                                            'Czyści bufor
       Bufor = Ischarwaiting()
       Dane = ""
    Loop Until Bufor = 0 Or Kod = "13"
    Return
    
    
    Odczytaj_sprzetowy_uart:
    
    Dane = ""
    
    Do                                                          'Odbierz znak po znaku
      Kod = Inkey()
      Dane = Dane + Chr(kod)                                    'Zapisz w Uart_txt
      Bufor = Ischarwaiting()                                   'Zakoncz jeśli CR lub brak znaku
    Loop Until Bufor = 0 Or Kod = "13"
    Return
    


    gdy dzwonię nie mając tej częsci z rozpoznawaniem dzwoniącego to jeszcze obsługuje polecenia z programu a w tej sytuacji nic się nie dzieje
    W terminalu jak dzwonię to wyświetla mi:
    <Ring
    <+CLIP: xxxxxxxxx,129 x-to mój numer

    Co może być nie tak
  • REKLAMA
  • #2 6401897
    wader_669
    Poziom 28  
    Jak nie ustawiles fusebitow to powinienes dostac bana, bo juz to chyba 3 post w 2 tyg. z podobnym problemem.
  • REKLAMA
  • #3 6401927
    krzysiekk_20
    Poziom 12  
    O które fusefity chodzi?
  • #4 6401953
    wader_669
    Poziom 28  
    hahahahah, brawo. Poczytaj jest duzo informacji na elektrodzie i w necie.

    podajesz
    
    $crystal = 8000000 
    

    czyli procesor jest taktowany 8mhz, jak nie przestawiales fusebitow to fabrycznie jest ustawiony na 1mhz. Najlepiej uzyj zewnetrzny kwarc bedzie bardziej dokladny i bedziesz mial mniej bledow przy transmisji. Mozesz uzywac wewnetrznego 8mhz oscylatora, jednak nie jest on az tak dokladny.

    Dodano po 5 [minuty]:

    2 sprawa jest taka: jakim napieciem zasilasz procesor?
    Nie jestem tutaj pewniej ale komorki chyba moga miec 3,3V max ?
    Uzyj jakiegos konwertera napiec lub kup atmega8L.
  • REKLAMA
  • #5 6402768
    krzysiekk_20
    Poziom 12  
    Procesor jest taktowany zewn oscylatorem 8MHz przez kwarc. Fusebity są przestawione.
    Procesor zasilam 5V natomiast RX i TX są podłączone jak na schemacie w tym poście: Link

    Jak nie miałem rozpoznawania dzwoniącego to chodziło wszystko.
  • #6 6402932
    wader_669
    Poziom 28  
    a masz ta atmega8l? oczywiscie rx to tx i odwrotnie?
    skad masz kod?
    nie znam sie na komunikacji z komorka, za to troche na hardware.
    Ja na twoim miejscu bym zastosowal jakis lepszy konwerter napiec. Zrob prt sc jak masz ustawione fusebity.
  • REKLAMA
  • #7 6402969
    krzysiekk_20
    Poziom 12  
    Kod znalazłem na elektrodzie. Niektórzy piszą że im działa takie coś łącznie z tym konwertorem napięć. RX->Tx tak mam zrobione. Na 8L taki sam efekt

    {atmega8][basom] siemens m35 i problem
  • #8 6403680
    slawko_k
    Poziom 35  
    Cytat:

    Dim Ringtxt As Byte
    Dim Ringtxt2 As Byte

    Ringtxt = "RING"
    Ringtxt2 = "+CLIP:"


    poczytaj trochę o typach zmiennych
REKLAMA