• Viernes 29 de Marzo de 2024, 06:58

Autor Tema:  comunicacion serie atmega128  (Leído 2018 veces)

Dany503

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
comunicacion serie atmega128
« en: Martes 3 de Febrero de 2009, 12:01 »
0
Hola a todos!, estoy realizando una proyecto con el Microprocesador ATmega128, quiero realizar una comunicación serie entre el micro y mi PC. Tengo la placa desarrollo BIG AVR luego tengo toda la interfaz preparada para la realización de la comunicación. El código que he metido es el siguiente:

#include<avr/io.h>

#include <avr/interrupt.h>

//#include <avr/signal.h>


#define FOSC 8000000// Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1

void USART_Init(unsigned int ubrr);
void USART_Transmit( unsigned char data );
unsigned char USART_Receive( void );

int main( void )
{

unsigned char data= 'a';
unsigned char recibo;

USART_Init ( MYUBRR );


while(1)   //aqui envio siempre el mismo dato
{
USART_Transmit(data);
//recibo=USART_Receive();
//USART_Transmit(recibo);
}


return 0;

}


void USART_Init( unsigned int ubrr )

{

//OSCCAL=0xFF;

/* Set baud rate */
DDRA=0xFF;
DDRE=0b11111110;
UBRR1H = (unsigned char)(ubrr>>8);
UBRR1L = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSR1B = (1<<RXEN1)|(1<<TXEN1);
/* Set frame format: 8data, 1stop bit */
UCSR1C= 0b00000110 ;
}

void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR1A & (1<<UDRE1)) )
;
/* Put data into buffer, sends the data */
UCSR1A= (1<<UDRE1);
PORTA=0xFF;
UDR1 = data;
}


unsigned char USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSR1A & (1<<RXC1)) )
;
/* Get and return received data from buffer */


return UDR1;
}

No consigo realizar la comunicación, me da la impresión de que no consigo escribir sobre el registro UDR1 y por eso no mando nada.
Si alguno me puede ayudar se lo agradeceria muchisimoo!!

gracias a todos!