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-16PU + SIEMENS S35 + problem z UART

peter_x 02 Kwi 2009 16:21 4938 21
REKLAMA
  • #1 6366447
    peter_x
    Poziom 10  
    Próbowałem podłączyć ATMEGE8-16PU do telefonu komórkowego SIEMENS S35 za pomocą sprzętowego UART i poniosłem klęskę. Nic nie działa, próbuję wysłać na telefon prostą komendę wybrania numeru i nic się nie dzieje.

    Może troszkę więcej szczegółów. Mikrokontroler jest podłączony do telefonu wg poniższego schematu:
    ATMEGA8-16PU + SIEMENS S35 + problem z UART

    Do ATMEGA wgrałem następujący kod:
    
    $regfile = "m8def.dat"
    $crystal = 8000000
    $hwstack = 160
    $swstack = 40
    $framesize = 120
    
    Baud = 19200
    Config Serialin = Buffered , Size = 200
    
    Dim Kod As Byte
    Dim Bufor As Byte
    
    
    Print "ATE0" ; Chr(13)
    Print "ATD602111111;" ; Chr(13)
    
    Wait 15
    
    Print "ATH" ; Chr(13)
    
    Wait 1
    
    
    
    Do
       Kod = Inkey()
       Bufor = Ischarwaiting()
    Loop Until Bufor = 0
    


    Dla przypomnienia podaję jeszcze pinout'y telefonu siemens S35

    Pin Signal Direction Description
    1 GND - Ground
    2 SELF-SERVICE in/out Recognition/control battery charger
    3 LOAD in Charging voltage
    4 BATTERY out Battery (S25 only)
    5 DATA OUT (TX) out Data sent
    6 DATA IN (RX) in Data received
    7 Z_CLK - Clock line for accessory bus. Use as DTC In data operation
    8 Z_DATA - Data line for accessory bus. Use as CTS in data operation
    9 MICG - Ground for microphone
    10 MIC in Microphone input
    11 AUD out Loudspeaker
    12 AUDG - Ground for external speaker

    Dodam iż telefon działa dobrze po podłączeniu do PC, mogę za pomocą terminala bez problemu wybierać numer. Co więcej próbowałem z jeszcze innym siemens s35 i nic. Wymieniłem kontroler i nic. Może (i pewnie napewno) problem jest w kodzie? Próbowałem podłączyć atmega8 w wersji L (przy zasilaniu 3v) bezpośrednio do telefonu i też mi się nie udało.

    Proszę o pomoc!
  • REKLAMA
  • #2 6366768
    dawid512
    Poziom 32  
    Na pewno masz te 8MHz? Spróbuj także z dzielnikami rezystorowymi oraz przy różnych prędkościach transmisji.
  • #3 6366789
    peter_x
    Poziom 10  
    dawid512 napisał:
    Na pewno masz te 8MHz? Spróbuj także z dzielnikami rezystorowymi oraz przy różnych prędkościach transmisji.


    Próbowałem z dzielnikami rezystorowymi 4,7kom i też nie działa. Sprawdziłem inne prędkości, nadal nic (telefon pracuje domyślnie na 19200). Proszę wybaczyć za pytanie laika, ale zaczynam swoją zabawę z elektroniką. Jak sprawdzić czy "na pewno mam 8MHz" ?
  • #4 6366814
    Piotr Kania
    Poziom 15  
    kabel nadawczy z telefonu podłącz bezpośrednio, w schemacie masz błąd
  • #5 6366850
    peter_x
    Poziom 10  
    Piotr Kania napisał:
    kabel nadawczy z telefonu podłącz bezpośrednio, w schemacie masz błąd

    Podłączyłem kabel nadawczy telefonu bezpośrednio, nadal nic.
  • REKLAMA
  • #6 6366943
    Piotr Kania
    Poziom 15  
    to podłącz pierwsze uP do kompa i sprawdź czy działa
  • #7 6366954
    peter_x
    Poziom 10  
    Piotr Kania napisał:
    to podłącz pierwsze uP do kompa i sprawdź czy działa


    Mogę bezpośrednio podłączyć pod rs232, czy muszę dostosować napięcia?
  • REKLAMA
  • Pomocny post
    #9 6367135
    dawid512
    Poziom 32  
    Cytat:
    Jak sprawdzić czy "na pewno mam 8MHz" ?
    Jeśli nie jesteś pewien to znaczy że nie ruszałeś fuse bitów. Ustaw więc $Crystal = 1000000.
  • #10 6367183
    peter_x
    Poziom 10  
    Ustawiłem $crystal = 1000000 i dalej nic. A mam jakoś fusebit ustawiać ?
  • #11 6367232
    Piotr Kania
    Poziom 15  
    To nie wina kwarcu, zobacz do noty katalogowej bo rs232 mają nietypowe kwarce np(11059200 Mhz) ale na 8MHz czy 10MHz będzie chodzić. A czy w programie masz czasówki tzn
    Print "ATE0" ; Chr(13)
    (tutaj czekasz na odpowiedz 100ms)

    jeśli jest to ATZ to 300ms

    chyba nie masz?
  • REKLAMA
  • #12 6367458
    peter_x
    Poziom 10  
    Nie mam, program jest dokładnie taki jak załączony. Mam w nim coś zmodyfikować?

    Dodano po 25 [minuty]:

    co do podpięcia atmegi do pc, to sprawdzę jutro co z niej wychodzi.
  • #13 6367615
    Piotr Kania
    Poziom 15  
    Wychodzi 0 lub 5V a rs232 w kompie gada na -12 +12
  • #14 6368226
    M. S.
    Poziom 34  
    Nie możesz bezpośrednio podłączyć uC do PC. Musi pośredniczyć w tym MAX232 lub podobny.
    Cytat:
    Ustawiłem $crystal = 1000000

    Transmisja 19200 nie pójdzie na 1MHz - musi być więcej. U mnie chodzi wszystko jak trzeba zgodnie z załączonym schematem na gen. wewnętrznym 8MHz.
  • #15 6368756
    peter_x
    Poziom 10  
    M. S. napisał:
    Nie możesz bezpośrednio podłączyć uC do PC. Musi pośredniczyć w tym MAX232 lub podobny.
    Cytat:
    Ustawiłem $crystal = 1000000

    Transmisja 19200 nie pójdzie na 1MHz - musi być więcej. U mnie chodzi wszystko jak trzeba zgodnie z załączonym schematem na gen. wewnętrznym 8MHz.


    Zaraz po pracy spróbuję podłączyć uC przez max232 do pc i sprawdzę czy coś wysyła. Co do zamieszczonego schematu jeszcze, jest 100% dobry? Czy mam podłączyć sygnał z telefonu bezpośrednio do uC? Zresztą próbowałem już wszystkich sposobów.

    Teraz przypomniało mi się coś innego, chciałem sprawdzić czy uC w ogóle działa więc przed wysłaniem komendy PRINT zapaliłem diodę na 1s (WAIT 1), i ja zgasiłem. Przy $crystal=8000000 (8MHz) dioda gasła nie po 1s ale po około 3s. Później jeden z użytkowników kazał ustawić crystal na 10MHz omyłkowo podając $crystal=1000000 (czyli 1MHz) ja też nie zauważyłem błędu i ustawiłem na 1MHz i co się okazało, dioda gaśnie przy 1MHz po 1s a przy poprzednich 8MHz po około 3s. Czy to ma jakieś znaczenie dla mojego problemu?

    Brnąc przez fora doszedłem do pewnych pomysłów. Chciałbym zaznaczyć iż nigdy z fusebit nic nie robiłem. Może trzeba tam coś zmienić i tak naprawdę moja atmega nie działa teraz na 8MHz? Jeśli mam rację to proszę o pomoc. Używam BASCOM AVR i Sample Electronics Programmer.
  • #16 6369774
    M. S.
    Poziom 34  
    Jeśli Megi nie przestawiłeś na 8MHz to pracuje na generatorze wewnętrznym 1MHz. Nie ma się co dziwić, że transmisja danych nie działa jak należy.
    Przestaw fusy Megi na wewnętrzne 8MHz. :!: W Bascomie robi się to bardzo prosto - użyj szukajki.
  • #17 6369797
    peter_x
    Poziom 10  
    Tak też myślałem. Jednak bezproduktywne siedzenie w robocie daje trochę czasu do przemyśleń tego typu problemów. Pewnie jak wrócę do domu i spróbuję pobawić się fusebitami to pojawi się 100 następnych problemów.
  • #19 6372814
    peter_x
    Poziom 10  
    mam jeszcze pytanie co do schematu, czy jest 100% dobry? Podobno linie TX z telefonu mam puścić bezpośrednio do uC ale nie chciałbym tak robić.
  • #20 6378788
    Robewit
    Poziom 26  
    Witam
    Może mi coś umknęło, choć przeczytałem wszystkie odpowiedzi w tym temacie, ale czy komenda Wait 15 potem Wait 1 to nie za dlugo, może powinno być Waitms 150.
    Daj znać, jaki będzie wynik Twoich bojów z tym tematem.
    Pzdr.
  • Pomocny post
    #21 6378851
    M. S.
    Poziom 34  
    Cytat:
    Wait 15


    Czy sieć GSM jest w stanie cię połączyć w ciągu 150ms?
    Jeśli tak to czy usłyszysz jeszcze dzwonek swojego telefonu?
    Komenda ATH przecież rozłącza połączenie.

    Schemat jest dobry. Możesz też zrobić połączenie bezpośrednie od tel. do uC. Co będzie jednak gdy w programie pomylisz nóżkę i wystawisz na Rx 5V o wydajności 20mA?
  • #22 6387514
    peter_x
    Poziom 10  
    Wszystko działa idealnie. Problemem był oczywiście źle ustawiony fusebit, atmega tak naprawdę ciągłe działała na 1 MHz. Temat uważam za zamknięty. Wszystkim dziękuję za pomoc.
REKLAMA