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

Atmega/Nokia - Atmega88, Nokia, komunikacja szeregowa

fasset 16 Mar 2014 14:03 2571 12
  • #1 13409692
    fasset
    Poziom 13  
    Witam.
    Próbuje zainicjalizować proces przesyłania danych pomiędzy Nokią 5110, a Atmega88. Schemat połączeń:


    RX - 10k[Ohm] - TXD
    RXD - 10k[Ohm] - TX
    GND - GND
    Całość zasilana ze stabilizatora 3.3[V]

    Kod programu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Sonda oscyloskopu jest wpięta do TXD (wyjście z mikrokontrolera) -cały czas pokazuje stan niski. Natomiast RXD stan wysoki. Podejrzewam, że błąd jest w kodzie programu. Proszę o wskazanie błędu.
  • #2 13409932
    dondu
    Moderator na urlopie...
    Witaj.

    fasset napisał:
    Próbuje zainicjalizować proces przesyłania danych pomiędzy Nokią 5110, a Atmega88.

    To zrób to, bo na razie tego nie robisz, a skończyłeś tylko na zdefiniowaniu funkcji uart_init() :)
    Nie sprawdzałem poprawności ustawienia USART, kierunku pinów, ustawień F_CPU, itd. ...

    Gdy już coś na oscyloskopie będzie śmigało to sprawdź, czy wysyła prawidłowo do terminala: http://mikrokontrolery.blogspot.com/2011/03/rs-232-atmega8-komputer-terminal.html
  • #3 13410433
    fasset
    Poziom 13  
    Rzeczywiście, wkradł się drobny błąd. Teraz na oscyloskopie widoczna jest transmisja bitów. Problemem jest to, że nokia nie zwraca nic (druga sonda wpięta do TX Nokii). Przy pisaniu kodu korzystałem z tego artykułu:
    http://sunduino.elektroda.eu/wordpress/sunduino/nokia-f-bus/

    Zamieszczam kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Proszę o wskazanie przyczyny (wykluczam błędy w połączeniu).
  • #4 13412604
    bimbarabam
    Poziom 14  
    Ja bym się upatrywał złego ustawienia prędkości, bo by to wyjaśniało, czemu idą bajty w jedną stronę a w drugą nie (telefon przez złą prędkość dostaje jakis syf). Problem jest taki, że ciężko ustalić czy dobrze ustawileś te 115200 bodów, nie wiadomo z jakiego zegara w ogóle twoja atmega lata. Albo podaj więcej danych odnośnie zegarów to bedzie mozna cos wiecej powiedziec albo zmierz na oscyloskopie czas trwania jednej ramki czy tam częstotliwość i sprawdz czy sie zgadza.
  • #5 13413227
    fasset
    Poziom 13  
    To również może być przyczyną. Częstotliwość zegara to 8MHz (zmieniłem dopiero teraz).
    http://www.atmel.com/images/doc2545.pdf

    Obliczam wartość ubrr (wg wzoru str. 174.). Czyli:
    fosc/(16*BAUD)-1 = 8MHz/(16*115200) - 1 = 3.34
    Wstawiam uart_init(3); i otrzymuje sygnał o częstotliwości ok. 66.7kHz (powinno być 115.2kHz) w dodatku nie jest to sygnał prostokątny, a raczej przypomina cykl ładowania/rozładowywania kondensatora.
    Dopiero wpisując argument funkcji uart_init(1); otrzymuję wartość zbliżoną 125 kHz (wciąż problem z kształtem i błąd jest chyba zbyt duży względem 115.2kHz).
    Rozumiem, że częstotliwość musi być dokładna?
  • #6 13413266
    bimbarabam
    Poziom 14  
    Ja zawsze akurat patrzyłem na tabelki z ubrr w tych datasheetach no i przeczytałem, że musi być ubrr rowne 3, zeby bylo te 115.2 co nie. Tylko zauważ że błąd jest 8.5% wówczas co jest nie mało. Protokół ten jest asychnroniczny, więc dobrze, żeby prędkości były w miarę identyczne, bo przekłamie ci jeden bajt i po ptakach nokia nie odczyta żądania poprawnie. Spróbuj ręcznie ustawić to ubrr na 3, a nie przesuwajac bity jak to robisz.
    A z ciekawości tą częstotliwość to fusebitami zmieniales?
    A co do kształtu to nie jest jakieś w.cz. żeby ci sie tam robiły takie zniekształcenia. Jak możesz to pokaż jak to wygląda na oscyloskopie i schemat
  • #7 13413278
    Konto nie istnieje
    Poziom 1  
  • #8 13413279
    BlueDraco
    Specjalista - Mikrokontrolery
    Tak, z odchyłką do 2%. Przy 8 MHz na ATmega można ustawić do 38400 b/s
  • #9 13413297
    bimbarabam
    Poziom 14  
    Z tego co jest napisane w tym linku od kolegi to trzeba ustawic 115.2 wiec nie zostaje nic innego jak podlutować sobie zewnetrzny kwarc najlepiej z jedna z tych "smiesznych" czestotliwosci w stylu 18.432 MHz
  • #10 13413467
    fasset
    Poziom 13  
    bimbarabam napisał:
    Ja zawsze akurat patrzyłem na tabelki z ubrr w tych datasheetach no i przeczytałem, że musi być ubrr rowne 3, zeby bylo te 115.2 co nie.

    Wstawiając "ręcznie":
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Częstotliwość zegara zmieniałem fusebitami - sprawdzałem czy rzeczywiście tyle wynosi (8Mhz) generując sygnał PWM. Co do schematu to narazie badam oscyloskopem sygnał nie podpinając nóżek do Tx, Rx Nokii (z Nokią i tak wygląda tak samo). Przy mniejszych częstotliwościach jest to normalny sygnał prostokątny. Przebieg to sygnał z Tx Atmegi:
    Atmega/Nokia - Atmega88, Nokia, komunikacja szeregowa
    Częstotliwośc to 63 kHz przy wpisaniu 3 do ubbr. Nie rozumiem dlaczego nie zgadza się (powinna być zgodność z tą tabelką, z dokumentacji). Może faktycznie pozostaje kupić kwarc 14,74MHz.
    Sygnał wygląda jakby port był upalony? Wcześniej z ciekawości podłączyłem Tx-Tx, Rx-Rx, ale przez rezystory 10k więc przy 3.3V nie popłynął nawet 1mA więc nie sądze, żeby mogło to zniszczyć port.
  • #11 13413631
    bimbarabam
    Poziom 14  
    Najlepiej zrob sobie test na terminalu na kompie (Putty, minicom, gtkterm etc.) i zobacz przy mniejszych prędkościach (19200, 38400) np. wysylanie literek działa. Jak tak to znaczy, ze twierdzenie o tym ze nie mozna wycisnac 115200 z 8MHz, będzie prawdziwe i dowiedziesz tego swoimi badaniami i bedziesz musial isc kupic kwarc ;D
  • #12 13413702
    Konto nie istnieje
    Poziom 1  
  • #13 13413937
    bimbarabam
    Poziom 14  
    voytaschec napisał:
    Kwarc i tak musisz dołożyć bo na wewnętrznym generatorze (zakładam, że taki właśnie masz) nie uzyskasz nawet 19200 (mimo, że z tabelki wynika, że błąd jest poniżej 2%).


    Mi sie udawało bez zadnych problemow uzyskac 38400..

    Cytat:
    Kształt może wynikać z pojemności w torze pomiarowym. Co to za oscyloskop i sonda?
    To jest 115kB na sekunde, wiec kolega musialby miec oscylsokop i sondy z epoki kamienia lupanego zeby takie rzeczy obserwowac
REKLAMA