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

[Atmega 16A] Atmega 16A i Bluetooth HC-06 - konfiguracja USART i problem z diodą LED

MichGX 15 Mar 2014 11:06 3078 5
REKLAMA
  • #1 13405437
    MichGX
    Poziom 11  
    Witam, postanowiłem do Atmega 16A podłączyć po module USART następujący moduł: http://electropark.pl/moduly-komunikacji/2937-modul-bluetooth-hc-06-5901002937002.html . Po podłączeniu VCC do 3,3 V oraz GND do masy zapaliła się migająca czerwona diodka, natomiast po skomunikowaniu ze smartfonem czerwona dioda przestała migać tylko cały czas się palić. Podłączenie kabli do Atmegi to RXD (z HC-06) do TXD oraz TXD (z HC-06) do RXD. Kod jest następujący:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Mam następujący problem, gdy uruchamiam gotową aplikację na bluetootha dostępną na smartfona (Bluetooth RC, Bluetooth SPP) i debuguje układ za pomocą AVR Dragona wstawiając breakpointa w przerwaniu od USARTA to czasem mi po wysłaniu danych tam program wskakuje ale zazwyczaj nie, do tego w rejestrze UDR wartości to tylko 255 nic innego nie ma. Dodam iż aplikacje HC-06 widzą i wyświetlają komunikaty Bluetooth connected. Nie mam pojęcia w czym popełniłem błąd. Za wszelką pomoc z góry dziękuje.
  • REKLAMA
  • #2 13405458
    tadzik85
    Poziom 38  
    Kod: text
    Zaloguj się, aby zobaczyć kod


    F_CPU definiujemy w opcjach projektu.

    Definiujesz BAUD oraz UBRR, wiec nie wiadomo o co chodzi.

    Odczytujesz dane z UDR a potem znów na UDR operujesz, Operuj na zmiennej dane.
  • REKLAMA
  • #3 13405484
    MichGX
    Poziom 11  
    Ok ale tak czy owak w zmiennej dane i tak pojawia się cały czas tylko 255 tak samo jak w UDR. A operuje tylko na UBRR który przekazuje do funkcji jako parametr
  • REKLAMA
  • #4 13412204
    MichGX
    Poziom 11  
    Ok temat można uznać za rozwiązany mój błąd, tak to jest jak sie copy paste robi z kodem a potem dziwi czemu nie działa. Ten parametr UBRR został po prostu źle obliczony powinien dla 1MHz być 5. Dla zainteresowanych polecam: http://www.josephn.net/avr/avr_ubrr_calculator
  • REKLAMA
  • Pomocny post
    #5 13412312
    dondu
    Moderator na urlopie...
    MichGX napisał:
    Ten parametr UBRR został po prostu źle obliczony powinien dla 1MHz być 5. Dla zainteresowanych polecam: http://www.josephn.net/avr/avr_ubrr_calculator

    Nie trzeba korzystać z kalkulatorów wystarczy korzystać z nagłówka setbaud.h
    Przeanalizuj punkt Prędkości transmisji oraz funkcję usart_inicjuj(): http://mikrokontrolery.blogspot.com/2011/03/rs-232-atmega8-komputer-terminal.html
  • #6 13427559
    MichGX
    Poziom 11  
    Dziękuje za pomoc w temacie jak już wcześniej napisałem został on przeze mnie rozwiązany, błąd tkwił w złym policzeniu parametru UBRR, dziękuję również za link z informacjami o makrach:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Problem został rozwiązany i zaraz zostanie zamknięty
REKLAMA