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

Atmega8 - USART - brak odpowiedzi po wysłaniu danych przez programator USB-RS232

Tasmman 07 Sie 2013 10:30 1908 7
REKLAMA
  • #1 12603285
    Tasmman
    Poziom 10  
    Hej. Mam programator, który posiada także opcję przejściówki USB<->RS232 i próbuję za jego pomocą połączyć się z ATmega8 poprzez USART.
    Tutaj jest dokumentacja programatora (na stronie 9 są wyprowadzenia pinów): http://sfar.pl/download/multitool/MultiTool_instrukcja.pdf
    Testuję kod z tej strony: http://mikrokontrolery.blogspot.com/2011/03/rs-232-atmega8-komputer-terminal.html
    Zamieszczony kod na tej stronie działa tak, że pierw wysyła do terminala wyrażenie określające wzór pewnej funkcji, my wysyłamy wartość X, uC następnie wykonuje obliczenia wg tego wzoru i zwraca nam wynik. Problem teraz polega na tym, że otrzymuję początkowe wyrażenie, potem wysyłam jakąś wartość, ale nie otrzymuję już wyniku. Czyli tak jakby problem leżał po stronie wysyłania.
    Dodatkowo te wyrażenie początkowe, które otrzymuje powinno wyglądać tak: y = 0.3187x^2 + 2x - 7, a te co ja otrzymuje jest lekko zniekształcone, co widać na załączonym skrinie. Czy to może być wina przejściówki (którą jest programator)?
    Oczywiście podłączenia mam poprawne: RXD<->TX i TXD<->RX.
    Kod mam identyczny jak z tej podanej stronki powyżej, tylko zmieniłem BAUD na 9600.
    Pozdrawiam
  • REKLAMA
  • #2 12605603
    dondu
    Moderator na urlopie...
    Hej!

    Przełącz wyświetlanie na Hex byśmy zobaczyli jaki kod ascii ma ten znak.

    Jeżeli program masz dokładnie ten co w linkowanym artykule (a piszesz, że tak jest), to sugeruję zadanie pytania producentowi, dlaczego CTS jest sygnalizowane. Przeglądając pobieżnie forum producenta zauważyłem, że są tam tematy dot różnych problemów z tym programatorem. Być może niezbędny jest upgrade oprogramowania ...
  • REKLAMA
  • #3 12606015
    Tasmman
    Poziom 10  
    Dzięki za odpowiedź.
    Upgrade oprogramowania programatora robiłem wczoraj, to soft jest aktualny.
    Zrzut ekranu dla trybu hex jest w załączniku. Jak widać na skrinie tym razem CTS nie jest zapalony. Nie wiem czemu wtedy był zapalony.
    Testowałem taką opcję, że napisałem przerwanie USART_RXC_vect, w którym zmieniam stan diody led podłączonej do jednej nóżki uC, dzięki temu mogłem sprawdzić, czy uC w ogóle coś odbiera. Niestety nie. Dioda nigdy się nie zapaliła.
    Na dziś się poddaje, bo już nie mam na to siły, za późno jest. Jutro wieczorem będę dalej próbował.
    Pozdrawiam.
  • REKLAMA
  • #5 12608891
    Tasmman
    Poziom 10  
    Wrzucam schemat mojego układu. Zdjęcie wrzucę jutro, bo teraz akurat nie mam możliwości zrobienia zdjęcia.
    Wszystko składam tymczasowo na płytce stykowej. Piny uC RXD i TXD mam podłączone odpowiednio z wyprowadzeniami MOSI i MISO programatora (bo na tych pinach programatora są także linie TX oraz RX). Zwrócę uwagę tylko na to, że w danej chwili programator mam podłączony tylko w jednym miejscu, tzn. jeśli programuje to podłączam piny odpowiednio do programowania (MOSI, MISO, RST, SCK, GND), a jak chce używać USART to odpinam wszystkie połączenia, a MOSI i MISO przepinam pod RXD i TXD przy uC.
  • REKLAMA
  • #6 12609971
    dondu
    Moderator na urlopie...
    Schemat jest oczywiście poprawny.

    Masz oscyloskop? Jeżeli tak, to sprawdź sygnał na pinie RxD w momencie nadawania z terminala do mikrokontrolera.
    Jeżeli nie, to wykorzystaj darmowy oscyloskop: http://mikrokontrolery.blogspot.com/2011/04/darmowy-oscyloskop-i-analizator.html:
    W ostateczności podłącz jakiś LED z rezystorem rzędu 1-1,5k (nie wiem jakie ograniczenia prądowe ma ten programator) i spowolnij transmisję do minimum.

    Zdjęcia zrób w stanie połączeń jak przy komunikacji z terminalem.
  • #7 12610179
    Tasmman
    Poziom 10  
    Zlutowałem sobie dziś przejściówkę i połączyłem za pomocą programatora dwa komputery. Jeden to laptop, w którym poprzez USB podłączyłem programator, a drugi to zwykły pc z portem RS232. Działa to tak, że jeśli wysyłam coś z PC z portem RS232 to laptop z USB bez problemu to odbiera. Natomiast komunikacja w drugą stronę nie zachodzi, nie mogę nic wysłać z laptopa. Czyli pewnie coś ta przejściówka nie działa najlepiej. Albo nie potrafię jej skonfigurować. Chyba, że coś trzeba w terminalu jeszcze przestawić.
REKLAMA