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

[C] ATtiny2313 - brak komunikacji USART

bigben93 14 Maj 2011 12:31 2737 10
  • #1 9504122
    bigben93
    Poziom 10  
    Witam

    Tworzę urządzenie które będzie komunikowało się z komputerem poprzez FT232. Problem polega na tym że uC nie komunikuje się z PC. Napisałem na początek taki prosty program żeby sprawdzić czy komunikacja działa:

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


    Wszystko co jest w kodzie pochodzi z not katalogowych więc powinno działać. Program powinien mi wysyłać w kółko literę "A" podczas gdy w terminalu jest pusto.

    FT232 jest raczej OK. Wykonywałem test przejściówki w postaci zwarcia na chwilę linii TXD oraz RXD. Sama przejściówka jest połączona z uC "na krzyż" czyli (TXD do RXD).

    Attiny działa z zewnętrznym kwarcem 10MHz. Obecnie fusebity wyglądają tak:

    [C] ATtiny2313 - brak komunikacji USART

    Od rana tworze różne kombinacje alpejskie żeby ruszyć tą transmisje ale nie udało mi się na razie osiągnąć tego celu więc liczę na waszą pomoc.

    Aha zanim jakiś ambitny moderator wywali wątek do kosza: TAK SPRAWDZAŁEM INNE WĄTKI NA FORUM I GOOGLE ALE NIE ZNALAZŁEM TAM ROZWIĄZANIA.
  • #2 9504263
    Przemo1268
    Poziom 20  
    Dawno nie zajmowałem się AVRami, ale z tego co pamiętam, przed każdą operacją transmisji znaku poprzez USART należy skasować bit TXC z rejestru UCSRA. W przypadku, gdy używasz przerwań bit ten jest kasowany automatycznie w trakcie wywoływania obsługi przerwania od zakończonej transmisji. W Twoim przypadku, aby manualnie wykasować ten bit, należy ustawić go w stan wysoki.
  • #3 9504264
    mirekk36
    Poziom 42  
    A zastanawiałeś się kiedyś jaki wpływ ma częstotliwość taktowania procesora na prędkość baud rate oraz procent błędów ?

    To zajrzyj sobie do dowolnej noty PDF dowolnego procka AVR na ostatnią stronę rozdziału USART

    zobaczysz tam tabele z różnymi częstotl. taktowania oraz możliwymi prędkościami wraz z %błędów. Gdy procent błędów jest w okolicach zera a najlepiej zero to jest OK.

    a ty wziąłeś sobie kwarc 10MHz - ja nie twierdzę, że nie będzie działać - ale ponieważ nie ma go w tych tabelach to nieco powyżej w nocie masz wzór na obliczenie procentu błędów dla wybranej przez ciebie prędkości

    sprawdź więc czy nie jest za duży
    sprawdź czy w terminalu masz takie same parametry transmisji ustawione itd

    Dodano po 1 [minuty]:

    Przemo1268 napisał:
    Dawno nie zajmowałem się AVRami, ale z tego co pamiętam, przed każdą operacją transmisji znaku poprzez USART należy skasować bit TXC z rejestru UCSRA. W przypadku, gdy używasz przerwań bit ten jest kasowany automatycznie w trakcie wywoływania obsługi przerwania od zakończonej transmisji. W Twoim przypadku, aby manualnie wykasować ten bit, należy ustawić go w stan wysoki.


    No to rzeczywiście się kolega dawno nie zajmował AVR'ami ;) .... to co autor przepisał z not PDF musi prawidłowo działać i nie trzeba żdnych takich cudów robić, kasować bitów itp
  • #4 9504379
    Przemo1268
    Poziom 20  
    mirekk36 napisał:
    A zastanawiałeś się kiedyś jaki wpływ ma częstotliwość taktowania procesora na prędkość baud rate oraz procent błędów ?

    To zajrzyj sobie do dowolnej noty PDF dowolnego procka AVR na ostatnią stronę rozdziału USART

    zobaczysz tam tabele z różnymi częstotl. taktowania oraz możliwymi prędkościami wraz z %błędów. Gdy procent błędów jest w okolicach zera a najlepiej zero to jest OK.

    a ty wziąłeś sobie kwarc 10MHz - ja nie twierdzę, że nie będzie działać - ale ponieważ nie ma go w tych tabelach to nieco powyżej w nocie masz wzór na obliczenie procentu błędów dla wybranej przez ciebie prędkości

    sprawdź więc czy nie jest za duży
    sprawdź czy w terminalu masz takie same parametry transmisji ustawione itd

    Dodano po 1 [minuty]:

    Przemo1268 napisał:
    Dawno nie zajmowałem się AVRami, ale z tego co pamiętam, przed każdą operacją transmisji znaku poprzez USART należy skasować bit TXC z rejestru UCSRA. W przypadku, gdy używasz przerwań bit ten jest kasowany automatycznie w trakcie wywoływania obsługi przerwania od zakończonej transmisji. W Twoim przypadku, aby manualnie wykasować ten bit, należy ustawić go w stan wysoki.


    No to rzeczywiście się kolega dawno nie zajmował AVR'ami ;) .... to co autor przepisał z not PDF musi prawidłowo działać i nie trzeba żdnych takich cudów robić, kasować bitów itp


    Mirekk36 masz rację:D. Testowałem ten kod na tiny2313 z wewnętrznym oscylatorem RC 8MHz i program działa prawidłowo. Bigben93 ustaw na próbę go na wewnętrznym RC 8MHz i sprawdź czy pójdzie. Dla małych błędów w komunikacji szeregowej możesz zastosować kwarc 11,059MHz
  • #5 9504460
    bigben93
    Poziom 10  
    No więc przestawiłem fusebity na wewnętrzne 8MHz ale nadal to samo. Zauważyłem za to coś innego; otóż gdy podłączę urządzenie pod USB bez zasilania uC (tylko FT232 wtedy działa) mam jakby echo w układzie (co wyślę to dostaje w odpowiedzi). Pomiędzy ścieżkami nie ma zwarcia a efekt echa znika gdy wyjmę ATtiny z podstawki. Czy to normalne?
  • #6 9505154
    Przemo1268
    Poziom 20  
    Zamieść schemat połączeń bo bez tego ciężko cokolwiek doradzić.
  • #7 9506216
    bigben93
    Poziom 10  
    Oto fragment schematu ideowego i płytki urządzenia:

    [C] ATtiny2313 - brak komunikacji USART [C] ATtiny2313 - brak komunikacji USART

    Na wewnętrznym kwarcu 8MHz napisałem jeszcze na próbę program który zapalał i gasił diodę co 2 sekundy. Program działał zgodnie z ustalonymi czasami więc można uznać że ustawienie oscylatora RC jest OK.

    Poza tym avrdude prawidłowo rozpoznaje sygnaturę uC i go programuje więc AVR nie jest uwalony.
  • Pomocny post
    #8 9506267
    Przemo1268
    Poziom 20  
    Na obwodzie PCB brakuje Koledze połączenia GND pomiędzy FTDI a tiny2313. Z tego powodu to zapętlanie przy zainstalowanym atmelku i brak komunikacji uC<->PC. Wynika to z różnych identyfikatorów linii GND na schemacie (GND1 oraz GND2).
  • #9 9506657
    mirekk36
    Poziom 42  
    Przemo1268 napisał:
    Na obwodzie PCB brakuje Koledze połączenia GND pomiędzy FTDI a tiny2313. Z tego powodu to zapętlanie przy zainstalowanym atmelku i brak komunikacji uC<->PC. Wynika to z różnych identyfikatorów linii GND na schemacie (GND1 oraz GND2).


    A nie wspomnę już o totalnym braku prawidłowej filtracji zasilania. Brak nawet podstawowego kondka 4,7uF przy FT232 .... a jeśli z połączeniem mas jeszcze są problemy (jak pisze kolega wyżej) no to już wszystko robi się jasne.
  • #10 9506967
    dondu
    Moderator na urlopie...
    mirekk36 napisał:
    A nie wspomnę już o totalnym braku prawidłowej filtracji zasilania. Brak nawet podstawowego kondka 4,7uF przy FT232 .... a jeśli z połączeniem mas jeszcze są problemy (jak pisze kolega wyżej) no to już wszystko robi się jasne.

    Skoro o tym mowa:
    http://mikrokontrolery.blogspot.com/2011/04/zasilanie-mikrokontrolera.html
    http://mikrokontrolery.blogspot.com/2011/04/zakocenia-w-pracy-mikrokontrolerow.html
  • #11 9516745
    bigben93
    Poziom 10  
    Przemo1268:
    Wielkie dzięki. Po połączeniu mas wszystko zaczęło chodzić jak powinno. Po przestawieniu fusebitów na zewnętrzny kwarc również nie było najmniejszych problemów zarówno z tym testowym jak i właściwym programem do urządzenia.

    mirekk36:
    Jeśli chodzi o te kondensatory to wcześniej szukałem schematów z FT232 i odniosłem wrażenie że ten kondensator traktuję się jako opcjonalny bo jedni go dodają a inni nie. Faktem jest że moje urządzenie na chwilę obecną działa poprawnie.

    dondu:
    Dzięki za linki. Na pewno się przydadzą na przyszłość.

    Generalnie to urządzenie to mój pierwszy poważny projekt. Praktycznie wszystko tam jest moje (schemat, płytka, program). Jest to po prostu taki sprawdzian moich umiejętności i nie chciałem za bardzo korzystać z gotowców. Za jakiś czas wrzucę może na elektrodę schemat i poprawioną płytką. Obecnie tego nie zrobię bo prawdopodobnie zostanie ono zgłoszone na konkurs (a konkurencja nie śpi i też przegląda elektrodę). Sama konstrukcje nie jest rewolucyjna (były podobne na elektrodzie) ale ta jest po prostu moja ;D
REKLAMA