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

Jak napisać prosty program do komunikacji RS232 z ATtiny2313?

Rysiek_XL 26 Maj 2007 10:45 3002 10
REKLAMA
  • #1 3922430
    Rysiek_XL
    Poziom 14  
    Posty: 117
    Pomógł: 9
    Ocena: 31
    Witam. Czy ktoś z forumowiczów mógłby mi podesłać pokazać jak napisać najprostszy program na ATtiny2313 aby komunikował sie z PC. Program musi być prosty bo chciałbym sprawdzić czy połączenie z PC mam dobre. Jakie bity i wyjścia i jak trzeba ustawić? Ja na liniach RXD TXD z AVR-a mam 5V i 2.5V.Czy tak ma być?? Jak ustawić HyperTerminal - ja ustawiłem ale po połączeniu żadnej reakcji nie było ze strony AVR-a,nic nie wypisało sie na ekranie.

    Dziękuje i Pozdrawiam
  • REKLAMA
  • #2 3922482
    bartek_zet
    Poziom 17  
    Posty: 311
    Pomógł: 15
    Ocena: 8
    .include "tn2313def.inc"
    
    	ldi r16,Low(RAMEND<<1)		;ustawienie stosu
    	out SPL,r16					; ...
    
    	rcall USART_init
    	
    start:
    	rcall USART_receive
    	rcall USART_transmit		
    	rjmp start
    
    
    
    USART_init:
    	ldi r17,0
    	ldi r16,$47		;UBRR = 71d	transmisja 9600 przy 11,059MHz
    	out UBRRH,r17
    	out UBRRL,r16
    	ldi r16,(1<<RXEN) | (1<<TXEN)	;enable reciever and transmitter
    	out UCSRB,r16
    	ldi r16,(1<<USBS)|(3<<UCSZ0)	;8-bit data, 2-bity stop
    	out UCSRC,r16
    	ret
    
    USART_transmit:		;dane w r16
    	sbis UCSRA,UDRE
    	rjmp USART_transmit
    	out UDR,r16
    	ret
    
    USART_receive:		;dane do r16
    	sbis UCSRA,RXC
    	rjmp USART_receive
    	in r16,UDR
    	ret
    


    Powinno działać ale nie miałem czasu przetestować.
    Jak ustawić terminal dowiesz się z komentarzy.
    Program odbiera bajt z terminala i wysyła go z powrotem.
  • #3 3922512
    Rysiek_XL
    Poziom 14  
    Posty: 117
    Pomógł: 9
    Ocena: 31
    Ok. Dzięki. A jak to będzie w bascomie wyglądać??
  • REKLAMA
  • #4 3922765
    sylwunia35
    Poziom 18  
    Posty: 331
    Pomógł: 16
    Ocena: 146
    WITAM
    Napisz :
    DO
    PRINT "HEJ"
    LOOP
    W HyperTerminal ustaw port COM gdzie masz wtyczkę od RS i masz HEJ na PC.
    Jeszcze bardzo ważna sprawa czy masz kwarc wewnętrzny czy zewnętrzny?
  • REKLAMA
  • #5 3923893
    Rysiek_XL
    Poziom 14  
    Posty: 117
    Pomógł: 9
    Ocena: 31
    Spoko kwarc zewnętrzny 11.00MHz trzeba uC jakoś specjalnie konfigurować żeby w tego kwarcu korzystał a nie z tego w uC?
  • REKLAMA
  • #6 3924110
    sylwunia35
    Poziom 18  
    Posty: 331
    Pomógł: 16
    Ocena: 146
    Tak oczywiście musisz przestawić "fusy" na zewnętrzny kwarc. Jeśli tego nie zrobisz to żadnej transmisji nie będzie tylko śmieci w terminalu.
  • #7 3924353
    Rysiek_XL
    Poziom 14  
    Posty: 117
    Pomógł: 9
    Ocena: 31
    Dobrze a gdzie w Bascomie zmienia sie ustawienia Fuse-bitów i czy przez komendy z Bascoma i jakie, poza tym ja i czy trzeba ustawić w bitach odpowiednią wartość kwarcu np. 11MHz?

    Dodano po 1 [godziny] 14 [minuty]:

    Ok już wiem. Dziękuje za pomoc

    Dodano po 29 [minuty]:

    To znów ja :). Co może być nie tak jeśli napisałem skompilowałem zaprogramowałem układ,dodałem nawet miganie diodki na uC żeby sprawdzić czy program sie dobrze zapisuje we flash-u, ustawiłem poprawnie Fusebity 1111.1111 External itd. Komunikacja nadal nie działa ,albo nie wiem nie potrafię posługiwać sie hyperterminalem. Załączam i Hyper........ milczy.

    Pozdrawiam

    Dodano po 10 [minuty]:

    Dodatkowo na wyjściu z MAX232 mam napięcie na 7-mym wyprowadzeniu mam napięcie 10/8V a na 8-mym 0.5V. Czy jest problem z MAX-em. Jakiś prosty i działający schemacik połączenia tego układu z liniami TDX i RDX prosiłbym. Jest kilka w necie a ja chciałbym sprawdzony i działający.

    Pozdrawiam

    Dodano po 42 [minuty]:

    Takie małe pytanko jeszcze . Jaki kabel ma łączyć mój układ z PC? Ja mam w moim urządzeniu port db9 żeński kabel z trzema żyłami zaczynający sie wtykiem męskim, a kończący sie wtykiem żeńskim do PC. To chyba żaden problem ? W układzie MAX232 działam na wej/wyj R2IN/OUT i T2IN/OUT
  • #8 3924763
    sylwunia35
    Poziom 18  
    Posty: 331
    Pomógł: 16
    Ocena: 146
    Coś tu bardzo mieszasz w procku linia RXD to PD0 i to łączysz z 12 "nogą" MAX232, a TXD to w procku PD1 i to łączysz z "nogą" 11 MAX232. Jeśli choczi o kabel to żaden problem :
    1.Kabel zakończony z obu stron wtykiem: 9 PIN
    Komputer1 - Komputer 2
    2 - 3
    3 - 2
    4 - 6+1
    5 - 5
    6+1 - 4
    7 - 8
    8 - 7

    Dodano po 4 [godziny] 42 [minuty]:

    Do tego kabla to tak połącz nogi 13 i 14 z gniazdem to bardzo ważne.
    Załączniki:
    • rs.doc (27.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #9 3925265
    Rysiek_XL
    Poziom 14  
    Posty: 117
    Pomógł: 9
    Ocena: 31
    Dzięki. Udało sie coś przesłać. Niestety ciężko określić co to jest to coś.Jakieś dziwne szlaczki. Co może być przyczyną tej sieczki?

    Pozdrawiam

    Dodano po 1 [godziny] 56 [minuty]:

    Dodatkowo w programie LookRS232 przy każdej paczce wysyłanej informacji jest komentarz: A line-status error occurred i zawsze wysyła to samo. Zły kabe? za długi ? Ma niecałe 2m. Może to wina kondensatorów przy kwarcu mam kwarc 11MHz i mam kondensatory 27pF. Fusebity ustawiłem ,znaczy tylko ten A987.
  • #10 3930422
    pph
    Poziom 13  
    Posty: 28
    Ocena: 8
    Jeśli wszystko napisałeś OK, skompilowałeś i zaprogramowałeś a diodka testowa miga w rytmie takim jak przewiedziałeś, to pozostaje jeszcze jedna rzecz -sprawdź czy bitrate kompa jest taki sam jak w procku.
  • #11 3930652
    Rysiek_XL
    Poziom 14  
    Posty: 117
    Pomógł: 9
    Ocena: 31
    Słuchaj problem jaki zauważyłem jest jest taki. Wysyłam tekst lub liczby na port PC i to co odczytuje ma sie nie jak do tego co wysłałem liczba znaków sie zgadza ale są poprostu krzakami. Trzeba coś ustawieć kod Ascii?
    Pozdrawiam.

Podsumowanie tematu

✨ Dyskusja dotyczy napisania prostego programu do komunikacji RS232 z mikrokontrolerem ATtiny2313 i PC. Przykładowy kod w asemblerze inicjalizuje USART do transmisji 9600 bps przy kwarcu 11,059 MHz, odbiera i wysyła bajty zwrotnie. Podkreślono konieczność ustawienia fuse-bitów na zewnętrzny kwarc, aby uniknąć błędów transmisji. Wskazano, że linie RXD i TXD mikrokontrolera to odpowiednio PD0 i PD1, które należy poprawnie połączyć z odpowiednimi pinami układu MAX232 (12 i 11). Omówiono konfigurację terminala (np. HyperTerminal) na odpowiedni port COM i prędkość transmisji. Problemy z odbieraniem "krzaków" mogą wynikać z niezgodności prędkości transmisji, złego ustawienia fuse-bitów, niewłaściwego połączenia kabli lub błędów w konfiguracji MAX232. Zwrócono uwagę na poprawne wartości kondensatorów przy kwarcu (np. 27 pF) oraz na konieczność sprawdzenia poprawności kabla RS232. Wskazano, że napięcia na liniach RXD/TXD z mikrokontrolera to 5V i około 2,5V, co jest typowe przed konwersją poziomów przez MAX232. Użytkownik otrzymał także prosty przykład programu w Bascom do wysyłania tekstu "HEJ" w pętli, co pozwala na test połączenia.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA