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

Połączenie ATmega z PC przez Prolific PC-2303 - brak komunikacji USART 9600 bodów

wojtektorr 13 Lis 2012 19:13 2319 25
  • #1 11525370
    wojtektorr
    Poziom 14  
    Witam serdecznie, mam problem z połączeniem atmegi z pc za pośrednictwem przejściówki Prolific, podobno ma działać a nie działa. Czy może ktoś zweryfikować moją inicjację USART i funkcję ślącą? F_CPU to 8MHz prędkość ustawiona na 9600 bodów. W terminalu żadnego znaku, myślałem że pomyliłem TxD z RxD ale próbowałem zamiany i dalej nic masa wspólna z atmega. Za wszelkie wskazówki dziękuje.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    a takąfunkcją wysyłam:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 11525603
    mickpr
    Poziom 39  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #3 11526300
    Konto nie istnieje
    Konto nie istnieje  
  • #4 11526489
    mickpr
    Poziom 39  
    majeranek53 napisał:
    Atmegę trzeba wyposażyć w konwerter np. MAX232.
    To zadanie spełnia przejściówka, o której wspomniał autor postu.
  • #5 11527528
    mmacura
    Poziom 18  
    Wspominana przejściówka prolific pc-2303 jest konwerterem USB / RS232, więc MAX232 lub coś podobnego jest konieczne, Jeśli go nie ma to napięcia rzędu +-9..12V podane bezpośrednio na ATMega pewnie upaliły już jej porty.

    Marek
  • #6 11528012
    Woycek
    Poziom 13  
    Panowie poczytajcie tutaj.Ja akurat mam taką przejściówkę która na wyjściu "RS" daje poziomy 0-5V
  • #7 11528907
    wojtektorr
    Poziom 14  
    Już połączenie działa, coś ta przejściówka świrowała iczasem nawet blue screena powodowała próba połączenia, zmiania portu usb w komputerze oraz dobranie prędkości 4800 bodów spowodowało że atmega wysyła, jednak jakieś dziwne znaki zamiast liter. Może coś w funkcji wysyłącej jest nie tak, mogę prosić o przykład funkcji wysyłającej np. łańcuch znaków?
  • #8 11530916
    Jacek Rutkowski
    Poziom 28  
    Witam,
    próbowałeś połączyć Tx z Rx i sprawdzić w terminalu czy echo dobrze działa? Możliwe że coś masz źle zainstalowane, u mnie ta przejściówka działa na 115200kbs z ATMega8
  • #9 11531118
    wojtektorr
    Poziom 14  
    Tak echo działa poprawnie ale to co nadaje atmega przez funkcje USART_Transmit to jakieś krzaczki zamiast podanego znaku.
  • #10 11531242
    Walery K
    Poziom 23  
    Jeśli już masz jakieś krzaczki to znaczy, że usart nadaje. Teraz musiałbyś jeszcze podać jaki to mikroprocesor i czy taktowany jest generatorem wewnętrznym, czy kwarcem?
  • #11 11531728
    wojtektorr
    Poziom 14  
    Atmega8 taktowana 8MHz, przy wewnetrznym rezonatorze ale sytuacja identyczna jest na zewnętrznym kwarcu. Zauważyłem jedynie zależność że kiedy zmieniam f taktowania to inne znaki mi śle ale w dalszym ciągu nie poprawne.
  • #12 11531885
    Walery K
    Poziom 23  
    A fusebity prawidłowo ustawione na 8 MHz? Bo wygląda to na nieprawidłowe ustawienie prędkości przesyłania. Sprawdź jeszcze odbiór przy innych prędkościach - mniejszych.
  • #13 11532393
    wojtektorr
    Poziom 14  
    Fuse bity na pewno ok przy innych prędkościach i cżestotliwościach taktowania albo nie wysyła albo wysyła inne krzaczki ale w żadnym przypdku tego co podaje do wysłania. Coś mi się wydaję że ta przejściówka nie do końca dobrze działa. A może coś z Windows 7 nie współpracuje dobrze?
  • #14 11534485
    Dar.El
    Poziom 41  
    Generator wewnętrzny jest tak mało precyzyjny że raczej nie uda się uzyskać prawidłowej transmisji. Musisz zastosować zewnętrzny kwarc, tylko nie zapomnij przestawić bezpieczników na zewnętrzny kwarc.
  • #15 11534539
    excray
    Poziom 41  
    Być może trzeba zanegować tranzystorkiem sygnał Tx z AVRa.
  • #16 11534554
    piotrva
    VIP Zasłużony dla elektroda
    Dar.El napisał:
    Generator wewnętrzny jest tak mało precyzyjny że raczej nie uda się uzyskać prawidłowej transmisji. Musisz zastosować zewnętrzny kwarc, tylko nie zapomnij przestawić bezpieczników na zewnętrzny kwarc.

    Eeeetam, ja mam nie jeden układ na wewnętrznym 8MHz (oczywiście do zastosowań testowych, nie komercyjnych gdzie idzie najczęściej kwarc 11059200 lub 16000000) i w warunkach laboratoryjnych nie miałem przy 9600 jeszcze (via ft232 i max232) żadnych problemów.
    A czy na pewno UBRR ustawione poprawnie?
  • #17 11538936
    wojtektorr
    Poziom 14  
    Próbowałem do UBRR wpisać liczbe odpowiadającą prędkości z tabeli, próbowałem z wyliczenia jak powyżej skutek ten sam (np. dla wysłania literki "A" hiper terminal odbiera znak "_"
  • #18 11539158
    Walery K
    Poziom 23  
    Jedyna rada, to mogę podesłać Ci jakiś z moich skompilowanych programów, które z pewnością w dobry sposób obsługują USART i będziesz miał pewność, że to przejściówka winna a nie Twój program, ba mało prawdopodobne aby to była wina mikroprocesora.
  • #19 11540576
    wojtektorr
    Poziom 14  
    Ok, wykluczymy w ten sposób złą konfiguracje USART chociaż co tu możę być źle.
  • #20 11541133
    excray
    Poziom 41  
    A czy próbowałeś zanegować sygnał? Pisałem o tym kilka postów wyżej.
  • #21 11541369
    wojtektorr
    Poziom 14  
    nie bardzo rozumiem jak negować sygnał trazystorem, możesz napisać jak to zrobić?
  • #23 11542454
    wojtektorr
    Poziom 14  
    A czy moe zastosować tu tranzystor bd286 albo bd285 bo tylko takie mam pod ręką i jak dobrać wartości rezystancji?
  • Pomocny post
    #24 11542640
    excray
    Poziom 41  
    BD285 to tranzystor mocy i średnio się do takich celów nadaje ale jak się uprzesz to możesz do testów zastosować. BC547 są tanie i uniwersalne więc po prostu zakup kilka sztuk. R1 i R2 - dowolne z zakresu 1-10kom.
  • #25 11547478
    Dar.El
    Poziom 41  
    Aby wykorzystać wewnętrzny generator do transmisji RS232, trzeba najpierw zmierzyć jego częstotliwość np. przez wyprowadzenie częstotliwości przez timer na zewnątrz. Potem trzeba skorygować, przez wpisanie odpowiedniej wartości kalibracyjnej, tak aby pasowała do RS232. Potem trzeba zachować dokładnie tą samą temperaturę ATmegi i napięcie zasilania, bo inaczej częstotliwość generatora zmieni się a są to zmiany znaczne.
  • #26 11548578
    wojtektorr
    Poziom 14  
    Faktycznie zanegowanie sygnału przez ten tranzystor pomogło, dzięki. Dlaczego i po co ten tranzystor? Może mi ktoś wytłumaczyć dokładnie i ze szczegółami? Dzieki excray! A i jeszcze jedno, jak ma wyglądać funkcja wysyłająca wartość liczbową? Poniżej funkcja która mi nie działa, nie rozumiem dlaczego?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA