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

Atmega32[usart] - Dziwne zachowanie mikrokontrolera przy wysyłaniu danych.

tangofox 13 Lip 2015 16:22 780 2
  • #1 14845100
    tangofox
    Poziom 14  
    Witam.
    Na wstępnie kilka informacji:
    -Mikrokontroler atmega32
    -IDE - AVR Studio 4.18 + toolchain z winavr (kompilator avr-gcc).
    -Debugger - JTag ICE
    -Konwerter usb <> rs232 - AVR Prog w konfiguracji konwertera.

    Płytka z procesorem nie zawiera błędów , połączenie mikrokontrolera z konwerterem "zcrossowane" a sam konwerter jest sprawny (testowałem podłączając RX bezpośrednio z TX i dostawałem poprawne echo w terminalu).

    Cały problem polega na tym że przy próbie załadowania danych do wysłania do rejestru UDR program przeskakuje do początku funkcji main();

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


    Dodatkowym problemem jest to że zawartość UDR nie jest wysyłana do konwertera.

    Czy ktoś mógłby podpowiedzieć co robię źle ?
  • #2 14845117
    BlueDraco
    Specjalista - Mikrokontrolery
    W zasadzie wszytsko robisz źle. Porównaj swój kod z dowolnym przykładem z transmisją szeregową na ATmega.

    Np. RXC i UDRE są to stałe,a Ty próbujesz sprawdzać ich awrtości i w zależności od nich coś robić lub nie robić.

    Procesor ugrzęźnie w wiecznie wywoływanej procedurze przerwania nadawania.

    Inicjowanie UART też błędne - najpierw włączasz transmisję, potem programujesz szybkość.
  • #3 14846172
    dondu
    Moderator na urlopie...
    Skąd wziąłeś taki sposób:

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


    skoro:

    Atmega8 datasheet napisał:
    When doing a write access of this I/O location, the high bit of the value written, the USART Register
    Select (URSEL) bit, controls which one of the two registers that will be written. If URSEL is
    zero during a write operation, the UBRRH value will be updated. If URSEL is one, the UCSRC
    setting will be updated.


    Podkreślone słowo jest kluczem problemu.

    Przykład dla ATmega8: http://mikrokontrolery.blogspot.com/2011/03/rs-232-atmega8-komputer-terminal.html
REKLAMA