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

atmega8 - UART kod z książki

26 Sty 2014 19:53 873 5
  • Poziom 10  
    witam, próbuje przesłać tym kodem z atmega 8 cyfrę 1

    Kod: c
    Zaloguj się, aby zobaczyć kod


    a odebrać ją w atmega16 tym kodem


    Kod: c
    Zaloguj się, aby zobaczyć kod



    Kod pochodzi z książki "język c dla mikrokontrolerów avr. od podstaw do zaawansowanych aplikacji". Był on oryginalnie na atmega88, za pomocą data sheet pozamieniałem rejestry zgodne z atmega8/16.

    Nie wiem co źle w tym zrobiłem, ale za pomocą tego kodu nie mogę przesłać tej 1 tj jest w kodzie lub innych cyfr. Czym może być to spowodowane?
  • Moderator Mikrokontrolery Projektowanie
    Odpal inicjalizację USART w symulatorze i sprawdź czy jest poprawna. Jeśli tak, to spróbuj najpierw przesłać pojedyncze znaki funkcją sendchar i odebrać je na drugim procku nie w przerwaniu tylko odczytując rejestr odbiornika, lub usuń sprawdzanie CRC. Jeśli odbierzesz znak jaki nadałeś to jest ok i odpal właściwy kod. Problemów może być wiele, ale przede wszystkim taktowanie USART. Jak są taktowane obie ATMegi? Co znaczy, że nie możesz przesłać cyfr? Nic się nie dzieje? To by wskazywało na błędne CRC, czyli najpewniej niezgodność taktowania USART na obu prockach. Czy nie taktujesz ich aby w wewnętrznego generatora RC?
  • Poziom 32  
    DkrukD napisał:
    witam, próbuje przesłać tym kodem z atmega 8 cyfrę 1

    Kod: c
    Zaloguj się, aby zobaczyć kod





    To ile w końcu ma ten BUF_MAX?
  • Poziom 10  
    Z tymi cyframi chodzi o to, ze po prostu nie mogę odebrać tego czego nadałem.

    Taktuje je w wewnętrznym generatorze RC i wynosi ono F_CPU = 8000000
  • Moderator Mikrokontrolery Projektowanie
    Zapewne zauważyłeś w książce zdanie, w którym nie zalecam stosowania asynchronicznej transmisji USART jeśli MCU jest taktowany wewnętrznym generatorem RC? :)
    Dla testów taktuj oba MCU z tego samego źródła zegara, jeśli masz jakiś generator, albo podłącz do nich generatory kwarcowe i problemy zapewne cudownie znikną... Inna możliwość to wykorzystanie synchronicznej transmisji USART - wtedy procki mogą być taktowane z RC, ale dochodzi dodatkowy sygnał taktujący transmisję.
  • Specjalista - Mikrokontrolery
    Ten dziwaczny kod nie przesyła żadnej cyfry - on powinien przesłać 4 bajty o wartościach odpowiadających wartościom czterech cyfr dziesiętnych zmiennej licznik, czyli bajty o wartościach: 0, 0, 0, 1.