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

SIM340 działa z PC a nie działa z AVR

student8b 06 Lis 2010 11:54 1641 9
  • #1 8708762
    student8b
    Poziom 11  
    Witam

    Od kilku dni walczę z pewnym problemem i brakuje mi już pomysłów na jego rozwiązanie.
    1) Komunikacja pomiędzy PC a modułem SIM340 działa
    2) Komunikacja pomiędzy PC a procesorem AVR działa
    3) Komunikacja pomiędzy AVR a modułem SIM340 nie działa

    Dodam jeszcze że ten sam program działa także pomiędzy AVR a telefonem M35.

    Schemat poniżej

    SIM340 działa z PC a nie działa z AVR

    Prędkość komunikacja została na stałe zmieniona komendą AT+IPR=19200;&W wpisaną z hyperterminala

    Aktualne objawy jakie występują przy komunikacji AVR z SIM340:
    - gdy włączam moduł na LCD mam komunikaty o poprawnym logowaniu itp., czyli działa
    - gdy dzwonie do modułu na LCD mam napis RING, czyli działa
    - gdy pierwszy raz wyśle komende AT na LCD otrzymuje echo w postaci AU, brak odpowiedzi typu OK, ERROR itp
    - gdy drugi raz wyśle komende AT na LCD otrzymuje echo w postaci A U, brak odpowiedzi typu OK, ERROR itp
    - gdy trzeci raz wyśle komende AT na LCD otrzymuje echo w postaci A U, brak odpowiedzi typu OK, ERROR itp
  • #2 8708938
    landy13
    Poziom 31  
    Jeśli ATmegę zasilasz napięciem 5V, to z dzielnika wychodzi ok. 2.6V. To może być za mało.
  • #4 8710100
    kekon
    Poziom 19  
    Cytat:
    Zamiast dzielnika proponuję dać Zenera 3,3 V od TX do masy w kierunku zaporowym oczywiście.


    Lepiej użyć diody np. 1N4148 lub jeszcze lepiej diody Schottky) wstawionej w miejsce rezystora 2k7 ale nie dołączonej do masy lecz katodą do +3,3V zasilania.
    Generalnie sposób z dzielnikiem lub diodą jest układem wolnym (przy prędkościach rzędu 9600 lub 19200 będzie OK) ale przy wysokich prądkościach np. 115200 może się okazać, że sygnał jest tłumiony poprzez filtr jaki powstaje z użytego rezystora, pojemności diody i pojemności pinu RXD. Dlatego też, rezystor (podłączony przed diodą) nie może być zbyt duży (1..10k).
  • #5 8711735
    student8b
    Poziom 11  
    Podwyższyłem napięcie z dzielnika do 3V i nic to nie zmieniło. Tak samo układ z diodą zenera nic nie poprawia.
    W dokumentacji do SIM300 wyraźnie jest napisane jakie napięcia odpowiadają poszczególnym stanom. Tak więc dla stanu wysokiego napięcie wynosi od 2,1V do 3,3V, zatem 2,7V z mojego dzielnika w zupełności wystarcza.

    Przypomnę w postaci schematów które połączenia działają

    SIM340 działa z PC a nie działa z AVR
  • #6 8713340
    kekon
    Poziom 19  
    Musisz sprawdzić oscyloskopem poziomy napięć w czasie trwania transmisji na końcówce RXD w procesorze AVR i na pinie RXD SIM340. AVR wymaga napięcia conajmniej 3V w stanie wysokim na wejściach portów (na RXD również). Jeśli tak nie jest to nic dziwnego, że nie działa transmisja. Sprawdź również - szczególnie na wejściu RXD w SIM340 - czy przebieg nie jest zniekształcony (wskutek pojemności wejściowej i rezystancji rezystorów, które stanowią dzielnik)
  • #7 8716025
    rpal
    Poziom 27  
    Nie baw się dzielnikami tylko użyj bufora z seri 74LVC i masz sprawę załatwioną bo jesli zasilisz go od SIM-a to to stosunek oporności dzielnika już nie bedzie miał znaczenia.
  • #8 8719926
    student8b
    Poziom 11  
    Po dłuższych konsultacjach z mózgiem doszedłem do wniosku że błąd tkwi w nadawaniu komend. W zależności od tego co jest nadajnikiem układ działa poprawnie albo nie działa.

    Wiec gdy nadajnikiem komend AT jest komputer a odbiornikiem procesor to wszystko działa poprawnie. Gdy nadajnikiem i odbiornikiem jest procesor to nie działa.

    Dla zilustrowania sytuacji rysunek poniżej
    SIM340 działa z PC a nie działa z AVR

    Zatem sądzę że powodem nieprawidłowego nadawania może być:
    1) brak zewnętrznego kwarcu
    2) nieodpowiedni program do tego modułu SIM340
    3) uszkodzony procesor (wątpliwe ale trzeba sprawdzić)

    Myślę, że dalsze badania wykażą co jest nie tak
  • #9 8720350
    Konto nie istnieje
    Konto nie istnieje  
  • #10 8721129
    student8b
    Poziom 11  
    Problem został rozwiązany :D

    Okazało się że przyczyną błędnego nadawania komend przez mikrokontroler było nieodpowiednie taktowanie. Wystarczyło zmienić zegar na kwarc zewnętrzny i układ śmiga jak ta lala :)
    Wniosek jest taki, że przy transmisjach szeregowych należy używać dokładnych zegarów (np. kwarc zewnętrzny) a nie wbudowanych generatorów typu RC.
    Niby banalny problem ale rozwiązanie tej zagadki zajęło mi tydzień.

    Zastanawiam się tylko dlaczego ten sam program działał z telefonem na wewnętrznym generatorze a z modułem SIM już nie chciał współpracować. Być może moduł wymaga dokładniejszych prędkości.
REKLAMA