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][c] Komunikacja USART, MAX232N nie przetwarza.

lycon5 22 Lis 2011 01:57 6666 11
REKLAMA
  • #1 10167760
    lycon5
    Poziom 11  
    Kończę pewien mały projekcik no i do ukończenia została mi tylko komunikacja z komputerem. Atmega8 przez MAX232 na złącze RS232. No i lipa. Konsola milczy. Próbowałem diagnozować ale nic z tego. W necie znalazłem masę przykładowych projektów z wykorzystaniem MAX232 i podpinam się tak jak trzeba ale układ nie daje oznak życia. Multimetrem zbadałem napięcia i i nóżka mikrokontrolera zmienia swój stan na moment co 5 sekund czyli tak jak zaprogramowałem. Na nóżce MAX232N (mikro->max) też można zaobserwować zmianę ale na nóżce max->PC już nie widać żadnej zmiany.
    Choćby taki przykładzik:
    [Atmega8][c] Komunikacja USART, MAX232N nie przetwarza.


    Jakieś pomysły ? :)
  • REKLAMA
  • #2 10167801
    darek1632
    Poziom 15  
    Witam, a czy masz odpowiednio z konfigurowane parametry transmisji UARTa zarówno na uC jak i PC. Jakim zegarem taktujesz Atmege ? Czy masz poprawnie ustawione Fusebity odnośnie częstotliwości pracy AVRa ? Upewnij się czy w BIOSie masz włączony port szeregowy.
  • #3 10167871
    mgyz
    Poziom 14  
    A czy zauważyłeś, że schemat który przedstawiasz jest dla kabla prostego a nie skrosowanego. Może tu leży problem?
    Odepnij MAX'a od uC i zewrzyj linie T1out z R1in. Ustaw transmisje 8,n,1 i sprawdź jakimkolwiek terminalem czy wraca echo.
  • REKLAMA
  • #4 10168356
    lycon5
    Poziom 11  
    Echo faktycznie odpowiada. W sumie sam się dziwię dlaczego na to wcześniej nie wpadłem :P Spróbuje dobrać odpowiednią prędkość mikrokontrolera i dam znać. :) Zastanawia mnie jeszcze tylko dlaczego w połączeniu max232->PC nóżka nadająca ma aż 8V :|
  • #5 10168914
    darek1632
    Poziom 15  
    Moze miec nawet 15V, czytales na temat RS232 ? Te 8V wydaje mi sie troche niskie
  • #6 10207790
    lycon5
    Poziom 11  
    Odświeżam temat. Zaraz po tym jak napisałem ostatniego posta zacząłem kombinować i padł mi przewód RS232 i dopiero dziś przysłali mi nowy. Pomyślałem, że może wcześniej była to wina przewodu (w jakiś dziwnie urojony sposób) ale dziś podłączyłem przewód i znowu ta sama historia. Sugerowałem się jedną z książek AVR (Mikrokontrolery AVR, język C, Mirosław Kardaś). Napisałem funkcję która na pewno powinna dać jakieś oznaki życia w terminalu. Jeśli nie to trzeba szukać błędu w okablowaniu.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Zaznaczam od razu, że wg. podręcznika sama inicjalizacja jest bodajże nie potrzebna ale i tak spróbowałem i nic z tego nie wyszło :/
  • REKLAMA
  • #7 10207856
    mirekk36
    Poziom 42  
    lycon5 napisał:

    Zaznaczam od razu, że wg. podręcznika sama inicjalizacja jest bodajże nie potrzebna ale i tak spróbowałem i nic z tego nie wyszło :/


    Nie, no nieeee - no takich cudów to niech kolega nie wypisuje, że wg podręcznika inicjalizacja jest bodajże niepotrzebna? To w końcu jak

    a. niepotrzebna?
    b. bodajże niepotrzebna?
    c. potrzebna?

    Jak może nie być potrzebna inicjalizacja skoro jak byk już chociażby ta linia kodu:

    UCSRB = (1<<RXEN)|(1<<TXEN);


    załącza w ogóle piny modułu do pracy, nie wspomnę o innych. Więc proszę o litość w formułowaniu takich zdań o tym co jest w książce a czego nie ma. Tym bardziej, że ta inicjalizacja - jest praktycznie żywcem przeniesiona z noty aplikacyjnej PDF mikrokontrolera. (sorki ale jestem w szoku) .... coś kolega nie tak czyta tę książkę albo książki :(

    --------------------------

    Ponieważ nie podał kolega żadnych więcej informacji to pozwolę sobie tak tylko strzelić i coś zgadnąć (chociaż mogę się mylić)

    1. pisze kolega ten program przypadkiem w AVR Studio 5 ???? zdaje się
    2. nigdy kolega nie użył ECLIPSE
    3. nigdy kolega nie zajrzał na płytę DVD żeby obejrzeć filmy instruktażowe VIDEO tam zawarte
    4. chyba kolega w ogóle nie skorzystał z gotowych kodów na płycie DVD, a są tam WSZYSTKIE LEKCJE omówione w książce w tym ta na temat komunikacji RS232.
    5. chyba kolega tylko przepisuje z książki

    (jeśli się mylę w którymś punkcie to proszę mnie poprawić) .... ale jeśli się nie mylę, to proszę samemu się poprawić i skorzystać z tego o czym mowa w tych punktach - i jeszcze raz dobrze i porządnie z uwagą przeczytać ten rozdział, żeby nie było kolejnego bodajże ok? ;) .....

    a potem proszę zadać jakieś pytanie tutaj - o ile jeszcze będzie potrzebne

    PS .... czuję że (taka mała podpowiedź) masz pan kolosalny problem z F_CPU albo może nawet i ustawieniem odpowiednim Fusebitów. No ale to w książce jest wszystko i to z racji tego tematu tak dokładnie opisane .... że trzeba jednak przeczytać jeszcze raz na spokojnie przynajmniej ten rozdział od początku.

    Dodano po 8 [minuty]:

    Dodam jeszcze, że w książce jest wprawdzie takie zdanie:

    Cytat:
    Celowo pominąłem tutaj zagadnienia związane z inicjalizacją pracy modułu UART tylko po to, aby pokazać jak może wyglądać najprostszy program do przetestowania poprawności działania transmisji RS232 z mikrokontrolera do komputera PC, na którym z kolei uruchomiony jest program terminala.....


    Ale wyciąganie takich wniosków jak z tym "bodajże" to grube zaokrąglenie albo nieporozumienie....

    Tym bardziej, że na kolejnych stronach - jest wszystko po kolei tłumaczone i omawiana jest sama inicjalizacja. Gdzie pokazuję jak wygląda oryginalna inicjalizacja w PDF i czym się różni od tej, którą dalej użyjemy - tzn z 1bitem stopu .... a koledze się już nie chciało kilka akapitów dalej doczytać - no i jest jak jest - jak widać :(

    Dodano po 1 [minuty]:

    Już nie wspomnę, że coś takiego:

    Cytat:
    USART_Init(9600);


    To już czysty wymysł wyobraźni kolegi odnośnie inicjalizacji a nie coś co pochodzi z książki - no ale to też jest w 100% opisane...... Szkoda, że w ogóle nie doczytane :(
  • REKLAMA
  • #8 10207959
    lycon5
    Poziom 11  
    Okej, okej :) Spokojnie. Moje niedoczytanie, godzina późna. W każdym bądź razie siedziałem trochę i w końcu coś tam zaczęło śmigać. Używam AVR Studio ale tylko dlatego, że nie mogę skomunikować Eclipse z moim programatorem. Eclipse używałem gdy jeszcze poprzedni programator był sprawny.
    Zdziwiło mnie oburzenie ze strony kolegi. Każdy się uczy i ma prawo popełniać błędy, także chill out.

    Konsola w końcu zaczęła dawać oznaki życie ale przy bardzo małych prędkościach. Po stronie uC jest to 110 a po stronie komputera 600. Nie wiem do końca dlaczego ale tylko przy takich ustawieniach przesył jest poprawny. Jak temu zaradzić ?
  • #9 10208003
    mirekk36
    Poziom 42  
    Ja nie jestem zdenerwowany ;) tylko zdziwiony, że kolega podaje nieprawdziwe informacje a potem inni będą zarzucać, że coś w książce jest nie tak. Dlatego proszę mnie zrozumieć.

    Więc podpowiadam ci na twoje kolejne pytanie, że twoim głównym problemem jest taktowanie mikrokontrolera i ew fusebity.

    Pytałem jakie avrs tudio używasz tzn czy AVR Studio 5 - a ty odpisujesz że AVR Studio .... oj ciężko ci pomóc bronisz się nogami i rękami ;)

    tak samo z programatorem - ciężko było napisać jaki masz, że takie problemy z Eclipse ?

    Poza tym cóż można ci szczegółowego podpowiedzieć jak nawet nowego kodu programu nie przedstawiasz.....

    Pomyśl sobie - warto umiejętnie zadawać pytanie, jeśli oczekujesz precyzyjnej i porządnej odpowiedzi / pomocy.

    Zatem ta twoja różnica 110 do 600 - właśnie wynika - jeszcze raz powtarzam z taktowania...

    i nawet jak doczytasz/sprawdzisz od czego zależą dostępne prędkości w AVR'ku - a masz to w książce (na temat tabelek z ostatniego rozdziału UART w PDF) - to jeszcze się twoje problemy prawdopodobnie nie skończą jeśli uparcie wolisz używać AVR Studio 5 - zamiast Eclipse.

    Lepszym byłoby dla ciebie rozwiązywanie problemów po kolei, czyli najpierw Eclipse + programator - bo na pewno da radę go uruchomić - no chyba że to jakiś egzotyczny twór z kamami/avt.

    Przeczytaj dokładnie jeszcze raz porady moje w tym poście i pytania w poście wyżej - postaraj się do nich zastosować. Wtedy coś zaradzisz. A ja? - nie ma problemu chętnie pomogę.
  • #10 10237927
    bilo2
    Poziom 2  
    Witam.

    Nie chciałem zakładać kolejnego tematu o USART, więc pytam tutaj. Pytanie jest pewnie banalne, ale proszę mi wybaczyć - w temacie elektroniki i avr jestem bardzo początkującym.

    Chciałem spróbować komunikować się przez USART z robotem minisumo, ale zajrzałem do schematu i zauważyłem, że potrzebne do tego porty, PD0 i PD1 są już do czegoś wykorzystane. Czy dobrze się domyślam, że w takiej sytuacji nie mogę już skorzystać z USART?
  • #11 10239373
    Fredy
    Poziom 27  
    bilo2 napisał:
    Witam.


    Chciałem spróbować komunikować się przez USART z robotem minisumo, ale zajrzałem do schematu i zauważyłem, że potrzebne do tego porty, PD0 i PD1 są już do czegoś wykorzystane. Czy dobrze się domyślam, że w takiej sytuacji nie mogę już skorzystać z USART?


    a skąd mamy wiedzieć jaki procesor używasz? Jeśli na tych pinach jest Rxd I Txd to klapa. Sprzętowy UART jest niemożliwy do użycia. Możesz użyć progamowego.
  • #12 10239562
    bilo2
    Poziom 2  
    Dałem linka do schematu, tam jest wszystko. Ok, dzięki za odpowiedź. Jak będę miał chwilę to poszukam coś o tym programowym USART. Ostatecznie są jeszcze 2 wolne miejsca w porcie C, więc jak co to spróbuję przerobić płytkę tak, żeby przełożyć to z PD0(rdx) i PD1(tdx) na PC1 i PC2.
REKLAMA