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

C Atmega Usart problem z wysłaniem tablicy

jo_666 03 Wrz 2010 20:19 1241 2
REKLAMA
  • #1 8472633
    jo_666
    Poziom 10  
    Witam, chciałbym wysłać tablice (nie stringa) przez usart na pc
    	char tab[]={'1','u','z','a','3','2'};
    	int i;	
    
    		for (i=0; i<5; i++)
    		{
    			USART_Transmit(tab[i]);
    		}
    


    na pc otrzymuje: 222222 i układ mi się resetuje

     void USART_Transmit(unsigned char data ) 
    { 
      while ( !( UCSR0A & (1<<UDRE0)) );   
      UDR0= data;                
    } 

    przy wysyłaniu pojedynczych elementów tablicy np
    USART_Transmit(tab[3]);
    dostaje wlasciwy znak

    Przeniesiono z Programowanie Ogólne. - arnoldziq
  • REKLAMA
  • #2 8476617
    Wobes
    Poziom 20  
    Witam.

    Daj "&&" zamiast "&", bo inaczej od razu wyskoczysz z pętli i zaczniesz pisać do UDR0 zanim USART wyśle poprzedni znak.

    Tutaj masz kawałek innego kodu, dla Atmega32

    
    void uart_putchar (char c)
    {
    	UDR = c; //wyslij znak
    	loop_until_bit_is_set(UCSRA, TXC); //czekaj az bit TXC nie przyjmie 1 (czyli "wyslano")
    	UCSRA |= (1<<TXC); //wyzeruj znacznik TXC (trzeba mu przypisac 1, zeby się wyzerowal)
    }
  • #3 9451443
    jo_666
    Poziom 10  
    Pracowałem wówczas na ATmega162. Okazało się, że pewna seria '162 miała ten sam problem. Układ resetował się przy komunikacji UART. Temat zamykam.
REKLAMA