Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Kategoria: Akumulatorki / Baterie / Ładowarki

Wysyłanie danych miedzy ATmegą a PC.

filip10 16 Mar 2017 09:53
  • #32 16 Mar 2017 09:58
    filip10
    Poziom 9  

    Tak to wewnętrzny oscylator.
    W książce przeczytałem, że są dwa sposoby na wpisanie wartości do UBBR. Wybrałem wpisanie wartości z tabeli z DS.
    Spróbuję kalibrować oscylator tak jak w książce.

  • #33 16 Mar 2017 10:03
    dondu
    Moderator Mikrokontrolery Projektowanie

    W jakim celu ustawiasz 2 bity stopu w programie, i nie uwzględniasz tego w terminalu?

    Tutaj znajdziesz konkretny przykład:
    http://mikrokontrolery.blogspot.com/2011/03/rs-232-atmega8-komputer-terminal.html

    Ustaw F_CPU w opcjach projektu:
    http://mikrokontrolery.blogspot.com/2011/03/fcpu-gcc-gdzie-definiowac.html

    i będzie śmigać w dodatku dbając, byś nie ustawił złych wartości UBRR.

  • #34 16 Mar 2017 10:16
    filip10
    Poziom 9  

    Na zdjęciu terminala jest 1 bit stopu ale napisałem niżej, że później to zmieniłem.

    Dodano po 9 [minuty]:

    Dodanie definicji F_CPU przed delay.h nie pomogło.
    Zresztą definiowana jest w makefile.

  • #36 16 Mar 2017 11:23
    filip10
    Poziom 9  

    ATmega16. Fusebitów nie dotykałem jeszcze nigdy.
    OK, spróbuję ogarnąć najpierw Twój przykład ale czy w moim jest coś źle w kodzie?

  • #37 17 Mar 2017 12:38
    filip10
    Poziom 9  

    Zgodnie z DS inicjalizacja powinna zawierać ustawienie szybkości (obliczona w makrze), określenie ramki (8 bitów danych i 1 bit stopu) i odblokowanie nadawania.
    W funkcji nadawania sprawdzane jest w pętli czy bufor nadawania jest pusty i wpisywane dane do UDR.
    Wydaje mi się, że wszystko ustawiłem tak jak trzeba!

    Kod: c
    Zaloguj się, aby zobaczyć kod

    W terminalu mam taki wynik:
    Wysyłanie danych miedzy ATmegą a PC.

    PS, Dondu, wolę jednak skupić się na najprostszym przykładzie.

  • #38 17 Mar 2017 12:46
    Piotrus_999
    Poziom 39  

    Jak nie dotykałeś nigdy fusów to znaczy ze masz 1MHz atmegę.

  • #39 17 Mar 2017 13:01
    filip10
    Poziom 9  

    Zmieniłem w makefile F_CPU na 1 MHz. Teraz wyświetla się 'a'...

  • #40 17 Mar 2017 20:39
    sweter_007
    Poziom 13  

    filip10 napisał:
    Zmieniłem w makefile F_CPU na 1 MHz. Teraz wyświetla się 'a'...

    Czyli OK? Ja jak pierwszy raz uruchamiałem uarta też miałem problemy. Zacznij od "loopback", pętli zwrotnej. Rozbij większy problem na mniejsze. Proponuję najpierw sprawdzić samą przejściówkę, zewrzeć RX/TX w przejściówce uart-usb i zobaczyć czy w terminalu na PC dostajesz to co wysyłasz, tzw "echo". Nie idziesz dalej jak nie przejdziesz tego kroku. Jak działa następnie robisz podobną akcję na samym mikrokontrolerze. Jak działa łączysz PC z AVR, crosujesz RXTX i musi działać. A koledzy z forum to wiesz, zirytowani bo milion razy uart był wałkowany a sami też zapomnieli swoje początki bo im latka poleciały.
    Piotrus_999 napisał:
    Nie wiem jakim programem ale ustawiasz te same prędkości po obu stronach i szalejesz :)
    :D