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

Dlaczego zwracane dane nie są poprawne? ATmega16A, Max232 i USART.

reymysterio7 10 Sty 2017 11:21 693 4
REKLAMA
  • #1 16187966
    reymysterio7
    Poziom 10  
    Mam problem z przesyłanymi danymi z PC do atmegi. Nigdzie nie znalazłem podobnego, może ktoś już spotkał się z czymś takim. Do atmegi podłączony jest max232 przez który odbywa się transmisja. USART skonfigurowany na 8 bitów danych, 1 stop bit, bez kontroli, 9600. Wysyłam z PC po jednym bajcie następnie od razu odsyłam je do PC. Z bajtem który otrzymuje w odpowiedzi jest tylko jeden problem, pierwszy bit zawsze ustawiony jest na 1. W programie wszędzie korzystam ze zmiennych unsigned. Jeśli wysyłam znaki o wartosci ASCII powyżej 127 to otrzymuje w odpowiedzi poprawną wartość. W przypadku wartości mniejszej od 128 otrzymuje wartość powiększoną o 127. Niestety nie mam teraz pod ręką kodu. Kiedy łączę T/R bezpośrednio przy maxie to echo jest poprawne, zawsze otrzymuję w odpowiedzi to co wysłałem. Jakieś pomysły ?
  • REKLAMA
  • #2 16187984
    Aroni525
    Poziom 9  
    reymysterio7 napisał:
    Kiedy łączę T/R bezpośrednio przy maxie to echo jest poprawne



    Co to znaczy, że skracasz magistralę czy jak? Ale jeśli to coś działa, to może w tym kierunku szukaj? Nie używałem nigdy max232 więc dokładnie nie wiem jak to wygląda i jakie ma wymagania. Nie zaszkodzi jednak, jeśli najpierw wrzucisz program, albo przede wszystkim schemat.
  • REKLAMA
  • #3 16188221
    BlueDraco
    Specjalista - Mikrokontrolery
    ATmega taktowana z kwarcu, a nie z wewnętrznego RC, mam nadzieję...
  • REKLAMA
  • #4 16189199
    Eagle
    Poziom 24  
    Kup kopię analizatora saleae, jak na możliwość jest stosunkowo niedrogi. Takie problemy jak wyżej, gdzie może być dużo czynników, rozwiążesz sam i od ręki.

    Prawdopodobnie masz źle ustawiony bit rate i zamiast ostatniego bitu czytasz bit stopu.
REKLAMA