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

[Bluetooth, Atmega328p] Atmega328p - Problem z odbiorem znaków przez Bluetooth, kod testowy

lysy4991 18 Paź 2016 19:01 1278 5
REKLAMA
  • #1 16003503
    lysy4991
    Poziom 8  
    Witam.

    Atmega328p łączy mi się z bluetooth'em wszystko wydaje się ok dopóki nie zacznę obsługiwać znaków odebranych przez BT. Jeżeli ATmega odbierze 1 lub jakąkolwiek cyfrę wszystko działa ładnie ale jak odbierze jakikolwiek inny znak nie chce działać (znaczy jak będę wysyłał dłuższy czas to zadziała ale to nie o to chodzi).

    Poniżej wrzucam mój prosty kod do testowania.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #2 16004242
    nolens_volens
    Poziom 15  
    Na szybko - na pewno "znak" powinien mieć w deklaracji słówko "volatile".
    Ale czy to wszystko? Przetestuj proszę.
    Razi też: #define F_CPU 1000000L
    Definiuje się to w środowisku IDE, którego używasz, a nie w kodzie.

    Dodano po 1 [minuty]:

    A jeszcze #define FOSC 1000000...
    Jedziesz na całego widzę ;)
  • REKLAMA
  • Pomocny post
    #3 16004356
    BlueDraco
    Specjalista - Mikrokontrolery
    Może też mieć na to wpływ błędne obliczenie UBRR dające nieoptymalną wartość dla tych częStotliwości zegara i transmisji. Cyfry mogą wtedy przechodzić poprawnie, a litery już nie.

    Takie użycie przerwania UART jest bezsensowne. Mniej czasu zajmie odczyt UDR w pętli zdarzeń, a jeszcze lepiej zrobić całą reakcję na znak w przerwaniu UART, z uśpieniem procesora w pustej pętli w funkcji main().
  • REKLAMA
  • #4 16004471
    lysy4991
    Poziom 8  
    Poprawiłem wszystko co pisaliście. Ale niestety dalej to samo :cry: . Oto poprawiony kod
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Co do UBRR obliczone jest raczej poprawnie
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    wzór z Datasheet'u

    [Bluetooth, Atmega328p] Atmega328p - Problem z odbiorem znaków przez Bluetooth, kod testowy
  • REKLAMA
  • Pomocny post
    #5 16004799
    dondu
    Moderator na urlopie...
    Wykorzystaj odpowiedni nagłówek - wzoruj się na przykładzie z tego artykułu dokładnie czytając komentarze do kodu:
    http://mikrokontrolery.blogspot.com/2011/03/rs-232-atmega8-komputer-terminal.html


    lysy4991 napisał:
    Poprawiłem wszystko co pisaliście.

    Niestety nie poprawiłeś: http://mikrokontrolery.blogspot.com/2011/03/fcpu-gcc-gdzie-definiowac.html
    choć przez przypadek przy 1MHz nie będzie to miało znaczenia, ale na przyszłość nie definiuj F_CPU w kodzie programu.
  • #6 16004875
    lysy4991
    Poziom 8  
    Dzięki wszystkim zaczęło działać.
REKLAMA