Skocz do zawartości

Atmega32 UART buffor char char* char[]


SzymonT

Pomocna odpowiedź

Witajcie,

 

Mam poprawnie działającą komunikację usart na atmega32L jeśli chodzi o wysyłanie i odbieranie unsigned char.

Proszę was o pomoc w stworzeniu buffora słów dla odbieranych znaków.

Chciałbym żeby słowo zebrało się w przerwaniu do momentu pojawienia się znaku 0x0A - końca linii.

Następnie chcę wykonać kopię.

Dokonywać zmian na kopi w funkcji main.

Code:

#define F_CPU 7372800L
#define USART_BAUDRATE 9600 
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) 
#define x 0x78
#define y 0x79

#include <avr/io.h> 
#include <avr/interrupt.h> 
#include <string.h>
#include <stdlib.h> 
#include <util/delay.h>

volatile char *tabx="x128";
volatile char *taby="y128";
volatile char *tabxx;
volatile char *tabyy;
volatile stan =0,xx=0;


void usart_init(void)        
{ 
    UBRRH = (BAUD_PRESCALE >> 8);        
    UBRRL = BAUD_PRESCALE;            

    //UCSRA bez zmian - 0x00 
    UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);                 
    UCSRC = (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1);     
} 

int main(void) 
{ 
    PORTD = 0x02;        
    usart_init(); 
    sei();               

    for(;;)
	{	
		char tablx[strlen(tabx)+1];
		char tably[strlen(taby)+1];
		strcpy(tablx,tabx+1);
		strcpy(tably,taby+1);
		int lx = atoi (tablx);
		int ly = atoi (tably);
		if(lx>140);
			//Do_this();
		if(ly<120);
			//Don't_do_this();
	} 
} 

ISR(USART_RXC_vect)        //przerwanie od odbioru danej 
{ 
    static char a;        
    a = UDR;             
    //a ^= 0xff;                
    //UDR = a;            
	if(stan==0)
    { 
        switch(a) 
        { 
            case(x):        stan=1;break; //#define x 0x78
            case(y):        stan=2;break; //#define y 0x79
        } 
    }
	if(stan==1)
	{
		if(a!=0x0A)
		{	tabxx[xx]=a; xx++;}
		else
		{stan=0;	xx=0;	strcpy(tabx, tabxx);	}
	}
	if(stan==2)
	{
		if(a!=0x0A)
		{	tabyy[xx]=a; xx++;}
		else
		{stan=0;	xx=0;	strcpy(taby, tabyy);	}
	}
}

 

Edytowano przez Treker
"Słowów" » "słów"
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.