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

[Attiny2313] USART - dane przed rozłączeniem

codeking 27 Maj 2009 16:49 936 5
REKLAMA
  • #1 6581725
    codeking
    Poziom 11  
    Witam

    Mam prosty układzik max232 + attiny2313 i działa ładnie ale jest takie dziwne zachowanie przy rozłączaniu połączenia ze strony PC, otóż uC odbiera wartość 0. Dlaczego ? Nawet wykorzystanie np. bray terminal, klikam Connect i Disconnect. Po kliknięciu Disconnect uC odbiera właśnie 0.

    Ustawienia USART:

    void USART_Init( unsigned int baud )
    {
    	/* Set baud rate */
    	UBRRH = (unsigned char)(baud>>8);
    	UBRRL = (unsigned char)baud;
    	/* Enable receiver  */
    	UCSRB = (1<<RXEN);
    	/* Set frame format: 8data, 2stop bit */
    	UCSRC = (1<<USBS)|(3<<UCSZ0)|(0<<UMSEL);
    
    
    	set_sleep_mode(SLEEP_MODE_IDLE);
    }
    
    unsigned char USART_Receive(void)
    {
    	while ( !(UCSRA & (1 << RXC)) )
    	;
    	return UDR;
    }
    


    W main() jest tylko wywołanie USART_Init(...) i w pętli nieskończonej odebranie danych funkcją USART_Receive() i wypisanie odebranego bajtu na wyświetlaczu podpiętego do uC.

    Całość działa na zewnętrznym kwarcu 11.0592 i baud rate 9600.
  • REKLAMA
  • #2 6582394
    Elektrooonik
    Poziom 29  
    A to 0 w czymś przeszkadza?
    Napisz program tak by był odporny na przypadkowe dane pojawiające się na liniach interfejsu RS232.
  • REKLAMA
  • #3 6584476
    codeking
    Poziom 11  
    Program zmodyfikowałem tak, że to zero jest niegroźne, ale dlaczego to 0 występuje ? Układ z max232 mam najprostszy - max + 4 kondensatory, wtyczka rs232 - 3 przewody (RX, TX i GND).
  • REKLAMA
  • #4 6584521
    Elektrooonik
    Poziom 29  
    Jesli masz jakis oscyloskop/rejestrator podepnij pod pin RXD wzgledem GND i zobacz co tam sie dzieje. Bedziesz miał odpowiedz :)
  • REKLAMA
  • #5 6599735
    codeking
    Poziom 11  
    Niestety nie posiadam oscyloskopa. A czy przy wtyczce RS232 wystarczy, że podepnę przewody TX, RX i GND od MAX232 czy muszę też w samej wtyczce jakieś przewody połączyć dodatkowo ?
  • Pomocny post
    #6 6599759
    Elektrooonik
    Poziom 29  
    Jeśli zwykła transmisja asynchroniczna to wystarczy.
REKLAMA