Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega 644p - Nie działa transmisja UART<=>PuTTy

ka_3 23 Lut 2014 12:41 1650 8
  • #1 23 Lut 2014 12:41
    ka_3
    Poziom 16  

    Witam,
    dziś zacząłem ćwiczyć obsługę interfejsu UART. Mam problem z bardzo prostym programem, który powinien wysyłać co sekundę literkę A.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Używam programu putty. W nim ustawiam 9600, 8, n, 1. Po wciśnięciu klawisz open, windows wydaje jakiś tam swój dźwięk, żadna konsola się nie otwiera.
    Procesor to Atmega 644PA, taktowana zewnętrznym kwarcem 16MHz. Gdzie jest problem?[/code]

    0 8
  • #2 23 Lut 2014 12:46
    McMonster
    Poziom 32  

    Schemat podłączenia, rodzaj przejściówki lub konwertera, jaki port?

    0
  • #3 23 Lut 2014 12:51
    ka_3
    Poziom 16  

    Aj zapomniałem dodać. Używam zestawu EVB v5.1 ma tam wbudowany konwerter FT232RL. Zestaw podpięty pod USB. W kodzie na pierwszy rzut oka wszystko OK?

    0
  • #4 23 Lut 2014 12:54
    BlueDraco
    Specjalista - Mikrokontrolery

    Skąd wy bierzecie takie pomysły na inicjowanie interfejsu:

    Najpierw włączamy UART - już może transmitować:
    UCSR0B = (1<<RXEN0)|(1<<TXEN0);

    A następnie, kiedy już potencjalnie transmituje, ustalamy, jak właściwie ma transmitować:
    // 8 bitów danych
    UCSR0C = (3<<UCSZ00);

    Przecież to się kupy nie trzyma, nawet, jeśli "na ogół działa".

    0
  • #5 23 Lut 2014 12:59
    McMonster
    Poziom 32  

    Ustawiasz USART0, a próbujesz wysyłać przez USART1. W tym fragmencie zgubiłeś średnik po while:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Nie chce mi się weryfikować, czy dobrze ustawiasz baudrate, przelicz sobie, albo wstaw w kodzie wzór wg noty, albo użyj takiej konstrukcji:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    A potem upewnij się, na jakim numerze portu pracuje wbudowana przejściówka i czy zgadza się z tym, co wpisujesz w Putty.

    0
  • #6 23 Lut 2014 14:22
    ka_3
    Poziom 16  

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Dalej nie działa.
    Sprawdzałem w menadżerze urządzeń, wszystko działa na porcie COM3, zresztą na takim porcie wgrywam plik .hex do procesora za pomocą AND-Load. Taki też wpisuję w programie PuTTy. W menadzerze, w kodzie i w Putty mam ustawioną taką transmisję 9600, 8, n, 1. Gdzie może być błąd? Może na płytce zestawu uruchomieniowego powinienem coś podłączyć?

    0
  • Pomocny post
    #7 23 Lut 2014 14:55
    dondu
    Moderator Mikrokontrolery Projektowanie

    Przeglądnij sobie ten przykład i wykorzystanie w nim sposobu ustawiania rejestrów USART (w tym bitu U2X) z wykorzystaniem nagłówka setbaud.h: http://mikrokontrolery.blogspot.com/2011/03/rs-232-atmega8-komputer-terminal.html
    Może w ten sposób szybciej odnajdziesz przyczynę problemów lub zastosujesz zawsze rozwiązanie z artykułu, które działa zawsze poprawnie.

    0
  • #9 23 Lut 2014 15:32
    ka_3
    Poziom 16  

    Na razie się mi udało.
    Zainstalowałem program RealTerm i rzeczywiści pojawia się literka A. Z programem Putty nie mogłem tego osiągnąć.
    Podziękowania dla Pana dondu. Chyba czas zakupić książkę Pana Francuza, bo jak na razie korzystam z konkurencji.

    0