Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

uart, atmega8, nic nie działa

01 Wrz 2006 19:57 2329 6
  • Użytkownik usunął konto  
  • Pomocny post
    Poziom 21  
    Co najmniej 3 błędy popełniłeś. Pierwwszy to włączasz przerwanie Uart Data Register Empty, a nie wstawisz chociaz reti pod wektor obslugi tego przerwania. Tu na pewno program się wykracza i nie wiadomo co procesor zrobi, najprawdopodobniej RESET. Drugi to włączenie sterowania sprzętowego. Co prawda w przypadku odbierania to nie ma znaczenia, ale w przypadku wysyłania owszem, poniewaz jeśli linia CTS znajdzie się w stanie niekatywnym to PC nic nie wyśle.

    3 bład to to, że powinieneś wpisac do UBRRL = 51. Patrz nota AVR'a. Są tam odpowiednie tabelki przy rozdziale USART. Do UBRRH nic nie musisz wpisywać.

    Poza tym ściągnij sobie Realterm. Ma pare upierdliwych bug'ów, ale za to mnóstwo przydatnych funkcji.

    Jeśli uruchamiasz uC na wewnętrznym oscylatorze to może byc problem z dzialaniem uarta, poniewaz wew osc ma tolerancje +-3% a uart dopuszcza 1%. Wtedy moga dochodzić śmieci. Spróbuj w takim wypadku wysyłac bajt 0xC0. Jeśli w takim przypadku przychodzi on dobrze, ale Relaterm zapala kontrolke ERROR, to znaczy, że są problemy z dokłądnościa oscylatora.

    Nie sprawdzałem dokłądnie podłączeń do max'a ale w pdfie któregoś producenta powinieneś znaleźć schemat. Ale przy zasilaniu max'a dawaj raczej 100uF i 100n. On stosunkowo mocno "sieje", szczególnie na wąskich i długich ścieżkach zasilających.


    Pozdrawiam
    Boogie
  • Użytkownik usunął konto  
  • Poziom 21  
    skrzyp_ napisał:
    Dziękuje bardzo - działa. Zastanawia mnie jedno - w swoim programie używam funkcji

    sbis UCSRA, UDRE

    czyli skip if bit in register is set

    w przypadku UDRE przez ustawienie rozumie sie przypisanie 0. Z tego wynika że sbis nie sprawdza czy jest tam jedynka, ale sprawdza czy jest na swój sposób ustawiony (w niektórych rejestrach może to być 0, w niektórych 1). Czy dobrze rozumuje?


    bit UDRE jest równy jeden, jeśli uart moża przyjąć następny bajt do wysłania. Czyli także po resecie jest równy 1. Jak wsadzisz bajt to się zamienia na 0. (dokładniej - to na samym początku dopiero po wlozeniu dwoch bajtow bedzie rowny 0 ze względu na buforowanie)

    Pozdrawiam.
    Boogie
  • Poziom 13  
    Witam mam takie pytanko odnośnie tego tematu. Poziomy napięć na liniach RS232 z tego co wyczytałem powinny mieć -15 ... 15V (najlepiej chyba -12 i 12V) jak to ma być spełnione skoro układ zasilamy ze żródła +5V? Byłbym wdzieczny gdyby mi to ktoś wyjaśnił :).
  • Poziom 21  
    Max232 to jest przetwornica pojemnościowa podnosząca napięcie. Odpowiednio ładując kondensatory można uzyskac wyższe napięcie. Dlatego aż tyle trzeba ich do max'a podłączyć.

    Pozdrawiam
    Boogie
  • Poziom 13  
    Wielkie dzięki za wyjaśnienie :)

    Pozdrawiam